独身者-03.演算子


独身者-03.演算子
演算子と演算子
演算子
  • 算術:+、-、*、/、%
  • コード:=,-
  • 文字列:+
  • 代入:=、+=、-=、*=、/=、%=
  • 増減:++.--
  • 比較:=、!=、>、<、>=、<=、instanceof
  • ロジック:!、&、|、&、
  • 条件:(条件式)?A : B
  • 方向と優先度の計算
  • 方向:ほとんどの演算子は左から右に実行されます.ただし、一方向演算子の場合は右から左になります.
  • 優先度:増減、記号、論理>算術>比較>論理>条件>代入
  • 演算子のタイプ
    単項演算子-シンボル演算子
    +、-およびcharタイプに加えて、シンボル演算子は他の基本タイプに使用できます.
    シンボル演算子の結果はintタイプです.
    package sec02.exam01;
    
    public class SignOperatorExample {
    
    	public static void main(String[] args) {
    		int x = -100;
    		int result1 = +x;
    		int result2 = -x;
    		System.out.println("result1=" + result1); //result1=-100 출력
    		System.out.println("result2=" + result2); //result2=100 출력
    		
    		byte b = 100;
    		// byte result3 = -b; byte타입 값을 부호 연산하면 int 타입 값으로 바뀌므로 컴파일 에러 발생
    		int result3 = -b;
    		System.out.println("result3=" + result3); //result=-100 출력
    	}
    
    }
    増減演算子
    増減演算子とは、booleanタイプ以外のすべての基本タイプの被演算子で使用できる変数値を1(+)または1(-)減少させる演算子です.
  • i++:他の演算を実行すると被演算子の値が増加(-の値が減少)
  • +i:他の操作を実行する前に被演算子の値(-の値減少)
  • を増加する
    package sec02.exam02;
    
    public class IncreaseDecreaseOperatorExample {
    
    	public static void main(String[] args) {
    		int x = 10;
    		int y = 10;
    		int z;
    		
    		System.out.println("------------------------------");
    		x++;
    		++x;
    		System.out.println("x=" + x); // x=12 출력
    		
    		System.out.println("------------------------------");
    		y--;
    		--y;
    		System.out.println("y=" + y); // y=8 출력
    		
    		System.out.println("------------------------------");
    		z = x++; //z에 x의 12값을 먼저 저장하고 x에 1을 더함
    		System.out.println("z=" + z); // z=12 출력
    		System.out.println("x=" + x); // x=13 출력
    		
    		System.out.println("------------------------------");
    		z = ++x; //x인 13에 1을 먼저 더하고 z에 14를 저장
    		System.out.println("z=" + z); // z=14 출력
    		System.out.println("x=" + x); // x=14 출력
    		
    		System.out.println("------------------------------");
    		z = ++x + y++; //x에 1을 더한 15와 y인 8를 더한 값인 23을 z에 저장하고, y에 1을 더하여 9로 저장
    		System.out.println("z=" + z); // z=23 출력
    		System.out.println("x=" + x); // x=15 출력
    		System.out.println("y=" + y); // y=9 출력
    	}
    
    }
    論理否定演算子(!)
    論理否定演算子は、trueをfalseに変更し、falseをtrueに変更するため、ブールタイプでのみ使用できます.
    package sec02.exam03;
    
    public class DenylogicOperatorExample {
    
    	public static void main(String[] args) {
    		boolean play = true;
    		System.out.println(play); //true
    		
    		play = !play;
    		System.out.println(play); //false
    		
    		play = !play;
    		System.out.println(play); //true
    	}
    
    }
    二項演算子-演算子
    算術演算子には、加算、減算、乗算、除算、および余剰数の4つの演算子が含まれます.booleanタイプを除いて、算術演算子はすべての基本タイプで使用できます.
  • 被演算子がbyte、char、shortタイプの場合、これらはintタイプに変換され、演算が実行されます.
  • すべての演算子が整数タイプでlongタイプが含まれている場合は、longタイプに変換して演算を実行します.
  • 被演算子に実数タイプ(float,double)がある場合、許容範囲の大きい実数タイプに変換して演算を実行
  • package sec02.exam04;
    
    public class ArithmeticOperatorExample {
    
    	public static void main(String[] args) {
    		int v1 = 5;
    		int v2 = 2;
    		
    		int result1 = v1 + v2;
    		System.out.println("result1=" + result1); // result1 = 7 출력
    		
    		int result2 = v1 - v2;
    		System.out.println("result2=" + result2); // result2 = 3 출력
    		
    		int result3 = v1 * v2;
    		System.out.println("result3=" + result3); // result3 = 10 출력
    		
    		int result4 = v1 / v2;
    		System.out.println("result4=" + result4); // result4 = 2 출력
    		
    		int result5 = v1 % v2;
    		System.out.println("result5=" + result5); // result5 = 1 출력
    		
    		double result6 = v1 / v2;
    		System.out.println("result6=" + result6); // result6 = 2.0 출력
    	}
    
    }
    charタイプも整数タイプなので算術演算は可能ですが、結果はintタイプです.
    package sec02.exam05;
    
    public class CharOperationExample {
    
    	public static void main(String[] args) {
    		char c1 = 'A' + 1; //A가 정수로 변환되어 c1이 66이 된다.
    		char c2 = 'A';
    		// char c3 = c2 + 1; //자동으로 c2가 연산을 위해 int로 바뀌는데 결과가 char이라서 오류발생
    		System.out.println("c1: " + c1); // c1: 66 출력
    		System.out.println("c2: " + c2); // c2: A 출력
    		//System.out.println("c3: " + c3);
    	}
    
    }
    文字列連結演算子
    文字列と数値が混在する演算子+演算子は、左から右へ演算されます.
    package sec02.exam06;
    
    public class StringConcatExample {
    
    	public static void main(String[] args) {
    		String str1 = "JDK" + 6.0; // str1 = JDK6.0
    		String str2 = str1 + "특징"; // str2 = JDK6.0특징
    		System.out.println(str2);
    		
    		String str3 = "JDK" + 3 + 3.0; //str3 = JDK33.0
    		String str4 = 3 + 3.0 + "JDK"; // str4 = 6.0JDK
    		System.out.println(str3);
    		System.out.println(str4);
    	}
    
    }
    比較演算子
    boolean以外のサイズ演算子はデフォルトタイプで使用でき、同等演算子はすべてのタイプで使用できます.
    package sec02.exam07;
    
    public class CompareoperatorExample {
    
    	public static void main(String[] args) {
    		int num1 = 10;
    		int num2 = 10;
    		boolean result1 = (num1 == num2); // true
    		boolean result2 = (num1 != num2); // false
    		boolean result3 = (num1 <= num2); // true
    		System.out.println("result1=" + result1);
    		System.out.println("result2=" + result2);
    		System.out.println("result3=" + result3);
    		
    		char char1 = 'A';
    		char char2 = 'B';
    		boolean result4 = (char1 < char2); //true
    		System.out.println("result4=" + result4);
    	}
    
    }
    package sec02.exam08;
    
    public class CompareOperatorExample2 {
    
    	public static void main(String[] args) {
    		int v2 = 1;
    		double v3 = 1.0;
    		System.out.println(v2 == v3); //true
    		
    		double v4 = 0.1;
    		float v5 = 0.1f; //0.1f가 0.1의 근사값으로 표현되기 때문
    		System.out.println(v4 == v5); //false
    		System.out.println((float)v4 == v5); //true
    	}
    
    }
    論理演算子
    論理演算子の被演算子はbooleanタイプのみ使用できます.
  • &:すべての被演算子がtrueである場合にのみ、演算子結果はtrue
  • :1つの被演算子のみがtrueの場合、演算結果はtrue
  • ^:1つの被演算子がtrueであり、もう1つがfalseである場合にのみ、計算結果はtrue
  • ! : 被演算子の論理値の変更
  • との区別
    前の被演算子がfalseの場合、後の被演算子は計算されず、falseという計算結果が直接生成され、&は2つの被演算子が計算されます.
    package sec02.exam09;
    
    public class LogicalOperatorExample {
    
    	public static void main(String[] args) {
    		int charCode = 'A'; //A의 뉴니코드 숫자인 65로 저장
    		
    		if( (charCode>=65) & (charCode<=90)) {
    			System.out.println("대문자군요");
    		}
    		
    		if( (charCode>=97) && (charCode<=122)) {
    			System.out.println("소문자군요");
    		}
    		
    		if( (charCode>=48) && (charCode<=57)) {
    			System.out.println("0~9 숫자군요");
    		}
    		
    		int value = 6;
    		
    		if( (value%2==0) | (value%3==0)) {
    			System.out.println("2 또는 3의 배수군요");
    		}
    
    		if( (value%2==0) || (value%3==0)) {
    			System.out.println("2또는 3의 배수군요");
    		}
    	}
    
    }
    
    代入演算子
    代入演算子は最小の演算順序を持ち、進行方向は右から左です.
    package sec02.exam10;
    
    public class AssignmentOperatorExample {
    
    	public static void main(String[] args) {
    		int result = 0;
    		result += 10; // result = result + 10 -> 10
    		System.out.println("result=" + result); // 10
    		result -= 5; // result = 10 - 5 -> 5
    		System.out.println("result=" + result); // 5
    		result *= 3; // result = 5 * 3 -> 15
    		System.out.println("result=" + result); // 15
    		result /= 5; // result = 15 / 5 -> 3
    		System.out.println("result=" + result); // 3
    		result %= 3; // result = 3 % 3 -> 0
    		System.out.println("result=" + result); //0
    		
    	}
    
    }
    さんこうえんざんし
    3つの演算子(?)は、3つの被演算子が必要な演算子です.
    package sec02.exam11;
    
    public class ConditionalOperationExample {
    
    	public static void main(String[] args) {
    		int score = 85;
    		char grade = (score>90) ? 'A' : ((score > 80) ? 'B' : 'C');
    		System.out.println(score + "점은" + grade + "등급입니다."); //85점은 B 등급입니다. 출력
    	}
    
    }