int a = 6, b = 4;
double c = 4.0;
System.out.println(a + " + " + b + " = " + (a + b) );
System.out.println(a + " - " + b + " = " + (a - b) );
System.out.println(a + " * " + b + " = " + a * b );
System.out.println(a + " / " + b + " = " + a / b ); // 동일 타입끼리의 연산 결과는 타입 유지.
System.out.println(a + " / " + c + " = " + a / c ); // 상대적으로 작은 데이터 타입과 큰 데이터 타입끼리의
// 연산은 호환이 되는 경우 큰 데이터 타입으로 확장.
// - 연산은 호환이 되는 경우 큰 데이터 타입으로 확장.
public class Main {
public static void main(String[] args) {
System.out.println("6 % 4 = "+ 6 % 4);
System.out.println("7 % 3 = "+ 7 % 3);
System.out.println("10.0 % 4.2 = "+ 10.0 % 4.2); //실수인 경우 실수로 결과값 산출
System.out.println("14 % 2 = "+ 14 % 2);
System.out.println("15 % 2 = "+ 15 % 2);
// 짝수 홀수 구하는 공식으로 사용 가능
System.out.println(18 % 2 == 0); => 짝수 // x는 2의 배수, 2는 x의 약수
System.out.println(17 % 2 == 1); => 홀수
// 나머지 = x % 제수 => 0 ~ 제수 -1
// ex ) x % 3 => 0~2
}
}
int value = 2;
value += 3; // value = value + 3 (원식값) > value += 3 으로 적은것
System.out.println("value = " + value); // 개별 연산값이 아니라 행을 내려가면서 계속 변수값이 달라지는 것
value -= 2;
System.out.println("value = " + value);
value = 3;
System.out.println("value = " + value);
value /= 2;
System.out.println("value = " + value);
value %= 2;
System.out.println("value = " + value);
// value = value - 2 + 3
value -= 2 + 3; //복합대입 연산의 경우 우변의 중복되는 변수를 없애고 연산자를 대입 연산자 앞에
//-표기함으로써 부호와 구분하기 위한 축약된 문법, 문법상 우변에 실제 변수가
//존재하는 것이 아니므로 우변의 연산(2 + 3)이 선 처리되고 좌변과 연산하여
//다시 좌변에 대입하는 형태, 결과적으로 "value = value -(2 + 3)"의
//형태로 처리, 이를 잘못 이해하여 단순한 변환을 적용
//-"value = value - 2 + 3"의 형태로 이해하는 오류에 주의.
System.out.println("value = " + value);
int value = 2;
int a = ++value;
System.out.println("value = " + value + ", a = " + a); // 전위 : 선 증가 후 리턴.
// value = 3, a = 3
a = value++;
System.out.println("value = " + value + ", a = " + a); // 후위 : 리턴 후 증가.
// a = 3, value = 4
a = --value;
System.out.println("value = " + value + ", a = " + a); // 전위 : 선 감소 후 리턴.
// value = 3, a =3
a = value--;
System.out.println("value = " + value + ", a = " + a); // 후위 : 리턴 후 감소.
// a = 3, value = 2
public class Main {
public static void main(String[] args) {
int value = 3;
int a = ++value; // value = value + 1, 후 a값 산출
System.out.println("value = "+ value + ",a = "+ a ); // value = 4, a = 4
a = value++; // a값이 나오고 value = value + 1
System.out.println("value = "+ value + ",a = "+ a ); // a = 4, value = 5
a = ++value; // value = value + 1, 후 a값 산출
System.out.println("value = "+ value + ",a = "+ a ); // value = 6, a = 6
a = value--; // a값 나오고 value = value - 1
System.out.println("value = "+ value + ",a = "+ a ); // a = 6, value = 5
a = --value; // value = value - 1, 후 a값 산출
System.out.println("value = "+ value + ",a = "+ a ); // value = 4, a = 4
}
}
단독으로 쓰일 경우 ++value(전위형), value++(후위형) 결과는 같다.
변수와 같이 쓰일 경우(순서 차이) => 증감 후 a값 저장할 것인지, 저장 후 증감할 것인지의 차이.
1) a = ++value(전위형)은 value 값을 계산 후 산출 후에, a값 산출 => value값과 a값이 동일하게 출력
2) a = value--(후위형)은 a값을 먼저 산출하고, 마지막에 value - 1을 계산 후 산출
⇒ 결과 값이 true 또는 false로 출력이 되야함.
System.out.println(false && false);
System.out.println(true && false);
System.out.println(false && true);
System.out.println(true && true);
System.out.println();
System.out.println(false || false);
System.out.println(true || false);
System.out.println(false || true);
System.out.println(true || true);
System.out.println();
System.out.println(!true);
System.out.println(!false);
단순한 식과 복잡한 식을 입력할때 뭘 먼저 넣을까 생각해보면 간단한 식을 먼저 넣는게 수월함
조건식 ? 참일때 값 또는 식 : 거짓일때 값 또는 식
int value = 8;
System.out.println(value > 5 && value < 10); // &&(AND) : 둘 다 참이면 참.
System.out.println(value > 5 || value < 10); // ||(OR) : 둘 중 하나만 참이면 참.
System.out.println( !(value > 5 && value < 10) ); // !(NOT) : 부정.
System.out.println("value " + ( value % 2 == 0 ? "짝" : "홀 " ) + "수입니다.");
=> 삼항 조건식에 ()가 없을 경우 연산 결과인 boolean값이 문자열로 확장이 되어서
참 혹은 거짓 일때의 값 또는 식 출력에 에러가 난다.
조건식1 ? 실행1 : 조건식2 ? 실행2 : 실행3
이 경우 조건문(if문)을 쓰는 것이 바람직함.
int n;
int n1;
Scanner sc = new Scanner(System.in);
System.out.println("첫번째 정수 입력" + " : ");
n = sc.nextInt();
System.out.println("두번째 정수 입력" + " : ");
n1 = sc.nextInt();
System.out.printf("\n%s" + n > n1 : n1 > n );
System.out.printf();
sc.close();
//좀 더 정리된 코드
Scanner sc = new Scanner(System.in);
int n1, n2;
System.out.print("정수1 : ");
n1 = sc.nextInt();
System.out.print("정수2 : ");
n2 = sc.nextInt();
//1)System.out.printIn( n1 > n2 ? "큰 수는 " + n1 : n1 == n2 ? "같음" : " 큰 수는 " + n2);
// " 큰 수는 " < 이 중복되므로 아래 코드처럼 좀 더 간결하게 작성 가능
//2)System.out.printIn( n1 == n2 ? "같음" : "큰 수는 " + (n1 > n2 ? n1 : n2) );
// 예외적인 경우를 먼저 작성
//sc.close();
class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n1, n2;
int result;
System.out.print("정수1 : ");
n1 = sc.nextInt();
System.out.print("정수2 : ");
n2 = sc.nextInt();
if ( n1 == n2 ) {
System.out.println("같음");
} else {
System.out.printf("큰 수는 %d", n1 > n2 ? n1 : n2);
}
```
int n1 = 3, n2 = 5, n3;
n1 += (++n2); // n2 = 6, n1 = 9
n2 -= (n1--); // n2 = -3, n1 = 8
n3 = (++n1) - (n2++); // n1 = 9, n3 = 12, n2 = -2
System.out.printf("n1=%d, n2=%d, n3=%d\n", n1, n2, n3);
//팀원들과 직접 풀이한 식
// n1 += (++n2);
// n1 + (n2+1)
// n1=9, n2 =6
// n1=3 n2=6
// n2 -= (n1--);
// n2 - n1 = -3
// n1 = 8 n2 = -3
// n1-1 //n3= 9 - (-3) =12 (++n1) - (n2++) //식을 풀때 괄호가 쳐져있어도 순서 상관 없음
//n2 = -2
//n1 = 9
틀린 이유 : 식을 계산하는 순서에 주의할 것 + 값은 내려오면서 계속 바뀜
int n;
System.out.print("1 ~ 100 사이의 자연수를 입력" + " : " );
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
System.out.println("\n" + (n >= 2 && n <= 99 ? "정확히 입력!!" : "입력 오류") );
sc.close();
//선생님이 만든 코드
//Scanner sc = new Scanner(System.in);
//int = n;
//System.out.print("1 ~ 100 사이의 자연수를 입력" + " : " );
//n = sc.nextInt();
1)//System.out.printf("\n%s", n > 1 && n < 100 ? "정확히 입력!!" : "입력 오류" );
2)//System.out.printf("\n%s", n >= 2 && n <= 99 ? "정확히 입력!!" : "입력 오류" );
//sc.close();