0622 java operator

onnbi·2022년 7월 26일
0

java-tutorial

목록 보기
2/13
post-thumbnail

operator

연산 우선순위

1. 산술연산자

자바는 연산 시 같은 형끼리만 연산이 가능하다
다른 자료형과 연산하면, 범위가 큰 자료형으로 자동변환하여 연산한다
+ - * / %

public void print() {
		System.out.println(1+1); //2
		System.out.println(1.0+1.0); //2.0
		System.out.println('1'+'1'); //11(x)
		// '1'에 해당하는 숫자인 49+49로 연산되어 결과는 98
		System.out.println("1"+"1"); //11(11이 아닌 1과 1이 붙은 문자열)
		
		System.out.println(1-1); //0
		System.out.println(1.0-1.0); //0.0
		System.out.println('1'-'1'); // 0
		//System.out.println("1"-"1");
		// 문자열은 숫자 연산이 아니므로 +이외의 연산은 불가능	
	}

문자열은 우선순위가 높아 연산 시 모두 문자열로 변경된다

public void printstr() {
		System.out.println(1+1.1); //2.1
		// => 1.0+1.1=2.1 넓은범위로
		System.out.println(1+'1'); //50
		// => 1+ 49 = 50 문자를 정수로
		System.out.println(1.1+'1'); //50.1
		// => 1.1+ 49 => 1.1+ 49.0 = 50.1 문자를 정수로, 정수를 실수로

 		//문자열은 우선순위가 높아 다른 자료형이 모두 문자열로 변경 
		System.out.println(1+"1"); //"1"+"1" = "11"
		System.out.println(1.0+"1"); //"1.0"+"1" = "1.01"
		System.out.println('1'+"1"); //"1"+"1" = "11"
		System.out.println(10+20+"Hello"); //30+"hello 출력
		System.out.println(10+(20+"Hello")); //10+"20Hello" > 1020Hello 출력
	}

2. 복합대입연산자

+= -= *= /= %=
오른쪽 연산 후 왼쪽 변수에 대입

3. 증감연산자

연산순서

후위연산 (변수++) : 인접연산을 먼저 수행한 후 자기 자신을 증/감
전위연산 (++변수) : 자기자신을 증/감한 후 인접연산
++ --

 int a = 10;
 int b = 10;
 int c;

 c = (a++) + (++b) + a;
 
 System.out.println(c);
// (10) +  (11)  + 10? 11? < 인접연산이 끝났기 때문에 11
// c = 32 출력

4. 관계연산자

두 개의 관계를 따지는 연산자 = 비교연산자
조건을 만족하면 true, 만족하지 못하면 false를 반환 > boolean형 결과값
< > == != <= >=

5. 논리연산자

  • && : a와 b가 둘다 true일 때, true
  • || : a나 b 둘중 하나가 true일 때, true
  • ! : a가 true면 false, a가 false면 true

6. 비트연산자

  • & and: 둘다 1일 때 1
  • | or : 둘 중 하나가 1이면 1
  • ^ XOR : 둘이 다르면 1 같으면 0

XOR

  • << 왼쪽 쉬프트 연산 : 전체적으로 한칸씩 왼쪽으로 옮겨짐 (2배 커짐)
  • >> 오른쪽 쉬프트 연산 : 오른쪽으로 옮겨짐 (반감)

7. 삼항연산자

  • 조건식 true/flase ? true일 때 실행 : false일 때 실행;*
public void test() {
	Scanner sc = new Scanner(System.in);
	System.out.print("나이를 입력하세요. : ");
	
  	int age = sc.nextInt();
	String msg = age>19? "성인입니다.": "미성년자입니다";
  	System.out.println(msg);
}
profile
aelatte coding journal

0개의 댓글