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