======Ch.04 연산====== ===== 대입연산 ===== **대입연산자** package chapter04; public class OpEx1 { public static void main(String[] args) { /* int a = 10; 10 = a; // 에러 1 a + 1 = 10; // 에러 2 10 = 1; // 에러 3 a = a + 10; // 정상 */ int number1 = 10; System.out.println("number1 = 10 -> "+number1); // 10출력 number1 += 10; // 더하고 대입 System.out.println("number1 += 10 -> "+number1); // 20 출력 number1 -= 10; // 빼고 대입 System.out.println("number1 -= 10 -> "+number1); // 10 출력 number1 *= 2; // 곱하고 대입 System.out.println("number1 *= 2 -> "+number1); // 20 출력 number1 /= 2; // 나누고 대입 System.out.println("number1 /= 2 -> "+number1); // 10 출력 number1 %= 3 ; // 나머지 대입 System.out.println("number1 %= 3 -> "+number1); // 1 출력 } } ===== 산술연산 ===== package chapter04; public class OpEx2 { public static void main(String[] args) { // int a = 5 + 5; // System.out.println("5 + 5 = "+a); // 10출력 // int b = a - 5; // System.out.println("10 - 5 = "+b); // 5출력 // int c = b * 2; // System.out.println("5 * 2 = "+c); // 10출력 // int d = c / 5; // System.out.println("10 / 5 = "+d); // 2출력 // // // 나머지 연산 // int e = 10 % 3; // 10 나누기 3의 결과값은 몫이 3, 나머지 1 // System.out.println("10 % 3 = "+e); // // int a = 10; // int b = 4; // // System.out.println("10 / 4 = "+a / b); // 결과값 2 // double a = 10; // int b = 4; // // System.out.println("10 / 4 = "+a / b); // 결과값 2 // 결과값이 실수로 연산되게하는 방법 int a = 10; int b = 4; System.out.println("10 / 4 = "+(double)a / b); } } package chapter04; public class OpEx2_1 { public static void main(String[] args) { int a = 5; System.out.println("+a = " + +a); System.out.println("-a = " + -a); a = -5; System.out.println("+a = " + +a); System.out.println("-a = " + -a); } } ===== 증감연산===== package chapter04; public class OpEx3 { public static void main(String[] args) { // int a = 10; // int b = 10; // // ++a; // 전위연산 // b++; // 후위연산 // // System.out.println(a); // System.out.println(b); // int a = 10; // int b = ++a; // // System.out.println("전위연산 결과 : "+b); // // int x = 10; // int y = x++; // System.out.println("후위연산 결과 : "+y); // System.out.println("x : "+x); int a = 10; a++; System.out.println("a++ : " + a); int b = 10; b += 1; System.out.println("b += 1 : " + b); int c = 10; c = c + 1; System.out.println("c = c + 1 : " + c); } } ===== 비교연산 ===== package chapter04; public class OpEx4 { public static void main(String[] args) { int a = 10; int b = 5; System.out.println(a > b); // true System.out.println(a >= b); // true System.out.println(a < b); // false System.out.println(a <= b); // false System.out.println(a == b); // false System.out.println(a != b); // true boolean c = a == b; // c 변수에 결과값 대입 System.out.println("c = "+c); boolean d = c == false; // d 변수에 결과값 대입 System.out.println("d = "+d); } } ===== 논리연산===== package chapter04; public class OpEx5 { public static void main(String[] args) { int a = 10; int b = 5; // AND 연산 System.out.println(a > b && a == 10); // true System.out.println(a > b && a == b); // false // OR 연산 System.out.println(a > b || a == b); // true System.out.println(a < b || a == b); // false // XOR 연산 System.out.println(a > b ^ a == 10); // false System.out.println(a > b ^ a == b); // true // NOT 연산 System.out.println(!(a > b)); // false System.out.println(!(a < b)); // true } } package chapter04; public class OpEx5_1 { public static void main(String[] args) { int a = 10; int b = 5; // 모두 false System.out.println(a == b && a > b); System.out.println(a == b & a > b); } } package chapter04; public class OpEx5_2 { public static void main(String[] args) { int a = 10; int b = 5; // & 연산 System.out.println(a == b & test()); // && 연산 System.out.println(a == b && test()); } public static boolean test() { System.out.println("test()메서드 실행됨"); return true; } } package chapter04; public class OpEx5_3 { public static void main(String[] args) { int a = 10; int b = 0; // & 연산 System.out.println(b > 0 && (a / b > 0)); } } ===== 비트연산===== package chapter04; public class OpEx6 { public static void main(String[] args) { System.out.println("2:"+Integer.toBinaryString(2)); // 10진수 2를 2진수로 변환 System.out.println("3:"+Integer.toBinaryString(3)); // 10진수 3을 2진수로 변환 // 비트 논리연산 System.out.println("2&3 : "+(2&3)); System.out.println("2|3 : "+(2|3)); System.out.println("2^3 : "+(2^3)); System.out.println("~3 : "+~3); // 첫자리는 부호를 나타내는 비트를 포함하여 모든 비트를 반대로 변환 System.out.println("~3을 이진수로 :"+Integer.toBinaryString(~3)); // ~3의 2진수값의 길이 // 첫자리는 부호를 나타내는 비트 나머지 31자리로 정수자료형을 메모리에 저장 System.out.println(Integer.toBinaryString(~3).length()); System.out.println(Integer.MAX_VALUE); // 정수자료형의 최대값 (2의 31승 -1) System.out.println(Integer.parseInt("1111111111111111111111111111100",2) -Integer.MAX_VALUE-1); } } **비트 쉬프트 연산** package chapter04; public class OpEx6_1 { public static void main(String[] args) { // << 연산 System.out.println(3 << 2); System.out.println("3의 이진수 : "+Integer.toBinaryString(3)); System.out.println("12의 이진수 : "+Integer.toBinaryString(12)); // >> 연산 System.out.println(8 >> 2); System.out.println("8의 이진수 : "+Integer.toBinaryString(8)); System.out.println("2의 이진수 : "+Integer.toBinaryString(2)); // >>> 연산 System.out.println(-8 >>> 3); System.out.println("-8의 이진수 : "+Integer.toBinaryString(-8)); System.out.println("-8 >>> 3 : "+Integer.toBinaryString(-8 >>> 3)); } } ===== 삼항연산 ===== package chapter04; public class OpEx7 { public static void main(String[] args) { int score = 80; String pass = score >= 60 ? "합격 " : "불합격"; System.out.println(pass); } } ===== 문자열 연산 ===== package chapter04; public class OpEx8 { public static void main(String[] args) { String name = "홍길동"; System.out.println("안녕하세요 " + name + " 입니다."); int height = 180; System.out.println("저의 키는 " + height + "cm입니다."); // String weight = 75.5; // 에러발생 (문자자료형 변수에는 숫자 대입 못함) String weight = 75.5 + ""; System.out.println("제 몸무게는 " + weight + "kg입니다."); int ageInt = 30; // 정수 String ageStr = "30"; // 문자열 } } ===== 연산자 우선순위 ===== package chapter04; public class OpEx9 { public static void main(String[] args) { int a = 5; int b = 4; int c = 3; // * 연산이 먼저 실행됨 System.out.println(a + b * c); // 괄호로 묶어 우선순위를 높여줌 System.out.println((a + b) * c); } }