JAVA

21. 01. 27. 03장- 연산자

Levinni 2021. 1. 27. 23:25
  • y = x + 3;

각 부분 해석

y: 변수, =: 대입연산자, +: 산술연산자, 3: 리터럴** ;: 문장의 끝

 

  • x > 3 && x < 5

→밑줄 boolean 타입

 

  • 산술 > 비교 > 논리 > 대입연산자. 대입은 제일 마지막에 수행됨.
  • 단항 > 이항 > 삼항. 단항 연산자의 우선순위가 이항 연산자보다 높다.

 

  • 비트 연산자 쫄지 말기.

10<<3

10의 2진수를 왼쪽으로 3칸 옮긴 것.

쉬운 계산 방법은 10 x 2^3 = 80

 

  • 단항 연산자 종류: ++ -- + = ~ ! (type)

(type): 괄호 캐스팅연산자 뜻 하는 것. 예를 들어서, Math.random() 이용할 때 (int)(Math.random()*6+1)

int만 ()로 캐스팅하면 math.random()만 형변환되므로 결과가 0*6만 나온다.

 

  • char a = 'a'; 일 때, a를 숫자로 간단하게 출력하는 법?

(int)a보다 더 간단하게.

System.out.println('a' + 0);

 

  • 문) 시리얼 넘버 제작하기. 영대문자 + 숫자의 조합. 예- 12345-67890-ABCDE-FGHIJ // Math.random()이용
package ex;

public class Serial {
	public static void main(String[] args) {
		
		String str = "";
		
		for(int i = 0 ; i < 20 ; i ++) { // 시리얼넘버 총 문자 개수
			int num = (int)(Math.random() * 36);// 알파벳 26개 숫자 10개, 0~35 생김
			
			if(num <= 9 ) {
				str += num;
			}
			else { // 10이 A부터 시작. 10 + 55 = 65(아스키A)
				str += (char)(num + 55);
			}
			
			if(i % 5 == 4 && i !=19) {
				str += "-";
			}
		}
		System.out.println(str);
	}
}

시리얼넘버 제작 출력 결과

 

  • 대문자와 소문자 간의 코드값 차이는 32. 입력값으로 대소문자 변환시킬 수 있음.
public class Review {
	public static void main(String[] args) {
		char lowerCase = 'a';
		char upperCase = (char)(lowerCase - 32);
		System.out.println(upperCase);
	}
}

→ char와 int의 뺄셈연산 결과는 int형이므로, 연산 후 char형으로 다시 변환해야 함. ★

 

  • 소수점 버림, 반올림, 올림
package ex;

public class OpEx07 {
	public static void main(String[] args) {
		double d = Math.PI;
		System.out.println(d);

		double d1 = (int) (d * 1000) / 1000.0;		// 소수점 넷째자리에서 버림
		System.out.println(d1);

		double d2 = (int) (d * 1000 + 0.5) / 1000.0;// 소수점 넷째자리에서 반올림
		System.out.println(d2);

		double d3 = (int) (d * 1000 + 0.9) / 1000.0;// 소수점 넷째자리에서 올림
		System.out.println(d3);
	}
}

 

나타낼 소수점 자리만큼 10^n을 곱한 후에, 반올림은 0.5, 올림은 0.9 를 더해준 뒤 int로 형변환을 하여 정수로 만듦 ->  double 타입의 10^n 제수로 다시 나누기. (double 외에 float여도 됨)

실수가 아니라 정수일 때도 반올림은 5, 올림은 9만 기억하면 됨!

 

  • 나머지 연산자 %

~할 때마다 -> 나머지연산 많이 씀.

 

1~31까지의 숫자를 출력하고 7번째 숫자마다 줄 바꾸기.

	for(int i = 1 ; i <= 31 ; i++) {
//			System.out.printf("%2d ", i); 칸 예쁘게 맞추려고
			System.out.print(i < 10 ? " " + i: i);
			System.out.print(" ");
			if(i % 7 == 0) {
				System.out.println();
			}
		}

7번째 숫자마다 줄 바꾸기 출력 결과