nme.kr

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);
		
	}

}