형변환(Casting) : 자료형을 다른 자료형으로 타입변환
자동형변환, 묵시적형변환, 업캐스팅(Promotion)_데이터 크기가 작은 자료형 -> 큰 자료형
double d = 100.5; //8byte
int n = 200; //4byte
d=n; //**d와 n이 같다는 것이 아닌 n을 d로 대입한다는 의미
System.out.println("d의 값: "+d); //200.0
char c = 'A'; //2byte
int i = 100; //4byte
i=c;
System.out.println("i의 값: "+i); //65 **아스키코드
강제형변환, 명시적형변환, 다운캐스팅(Demotion)_데이터 크기가 큰 자료형 -> 작은 자료형
char c= 'B'; //2byte
int n = c+1; //여기까지는 자동형변환
c=(char)n; //c는 2byte, n은 4byte이므로 오류발생. (char)n으로 명시해야함!
System.out.println("c의 값: "+c); //C
float f =5.5f; //실수
int n1 =0; //정수
n1=(int)f; //같은 4byte라도 자료형이 다르면 캐스팅(형변환)하는 것이 원칙
System.out.println("n1= "+n1); //5 **실수에서 정수로 형변활 할 때는 소수점 이하가 유실되므로 주의
연산자(Operator) : 연산기능이 있는 기호
산술연산자 : 사칙연산과 나머지 값을 구하는 %로 나뉜다.
int n1, n2, n3; //3개를 동시에 선언
n1=20;
n2=7;
n3= n1+n2;
System.out.println("n3의 값: "+n3); //27
n3 = n1-n2;
System.out.println("n3의 값: "+n3); //13
n3 = n1/n2;
System.out.println("n3의 값: "+n3); //2
n3 = n1%n2;
System.out.println("n3의 값: "+n3); //6
복합대입연산자 : 산술연산자+대입연산자 (=, +=, -=, *=, /=, %=), 역방향 연산
int n1=10;
int n2=7;
//n1+=n2 => n1=n1+n2
System.out.println("+=연산자 : n1+=n2="+(n1+=n2));
System.out.println("n1 : "+n1); //17
//n1-=n2 => n1=n1-n2
System.out.println("-=연산자 : n1-=n2="+(n1-=n2));
System.out.println("n1 : "+n1); //10
//n1*=n2 => n1=n1*n2
System.out.println("*=연산자 : n1*=n2="+(n1*=n2));
System.out.println("n1 : "+n1); //70
비교연산자 : 변수나 상수의 값을 비교하여 참, 거짓을 판단 (>, <, >=, <=, ==, !=)
int n1=10;
int n2=20;
boolean result;
result = n1 < n2;
System.out.println("n1 < n2 : "+result); //T
result = n1==n2; // 같으면 T, 다르면 F
System.out.println("n1 == n2 : "+result); //F
result = n1!=n2; // 같으면 F, 다르면 T
System.out.println("n1 != n2 : "+result); //T
논리연산자 : 논리형 데이터 연산 (&&, ||, !)
&& : AND의 의미. 앞뒤 연산이 모두 true여야 true반환
int a = 30;
int b = 36;
result = (a-b)<=5 && (a+=1)>30;
System.out.println("&&연산결과 : "+result); //T
|| : OR의 의미. 앞뒤 연산 중 하나만 true라도 true반환
int i1 = 10;
int i2 = 20;
result = (i1+=10) > 20 || i2 -10 == 11;
System.out.println("||연산결과 : "+result); //F
not 연산 (!) : true를 false로, false를 true로 만드는 기능
System.out.println("||연산결과 : "+!result); //T
증감연산자 : 값을 1씩 증가 또는 감소시키는 연산 (++, --)
선행증감 : ++변수, --변수
int a = 10;
System.out.println("a : "+ ++a); //11
System.out.println("a : "+ --a); //10
후행증감 : 변수++, 변수--
int b = 10;
System.out.println("b : "+ b++); //10
System.out.println("b : "+ b); //11
System.out.println("b : "+ b--); //11
System.out.println("b : "+ b); //10
비트연산자 : 비트(2진수)단위로 계산 (&, |, ^, ~)
int a = 10; //1010
int b = 7; //0111
& : 논리곱(AND) - 두 값이 모두 1일때 1, 나머지는 0 (같은 자리 2진수끼리 비교)
int c = a & b; //0010
System.out.println("논리곱: "+ c); //2 **출력할땐 다시 10진수로 돌려줌
|| : 논리합(OR) - 둘 중 하나만 1이어도 1, 나머지는 0 (같은 자리 2진수끼리 비교)
int c = a | b; //1111
System.out.println("논리합: "+ c); //15 **출력할땐 다시 10진수로 돌려줌
^ : 배타적논리합(XOR) - 서로 다르면 1, 같으면 0 (같은 자리 2진수끼리 비교)
int c = a ^ b; //1101
System.out.println("배타적논리합: "+ c); //13 **출력할땐 다시 10진수로 돌려줌
~ : not연산자
int c = ~ a;
System.out.println("not a : "+ c); //-11 **-(숫자+1)
시프트연산자 : 왼쪽이나 오른쪽으로 비트를 옮기는 연산자(>>, <<)
int a = 10; //1010
int b = 7; //0111
System.out.println("a<<1 : "+(a<<1)); //20
//왼쪽으로 비트한칸 옮기겠다 : 기존 00001010 => 이동 00010100
System.out.println("a>>1 : "+(a>>1)); //5
//오른쪽으로 비트한칸 옮기겠다 : 기존 00001010 => 이동 00000101
**2진수를 10진수로 변경하는 방법

삼항연산자(조건연산자) : 조건을 정의하여 그 조건이 참일 때 반환할 값과 거짓일 때 반환할 값을 반환
조건식 ? 참일때반환값 : 거짓일때반환값;
조건식은 결과를 참,거짓으로 반환하는 식으로 주로 비교연산자, 논리연산자가 온다.
반환값에 따라 자료형이 다르니 주의
int a =10;
int b =15;
boolean result1 = ++a>=b ? true : false;
System.out.println("result1 : "+result1); //false
int n1 = 10;
int n2 = 20;
char result2 = (n1+=n1)==n2 ? 'O' : 'X';
System.out.println("result2 : "+result2); //O
//Q.상자 하나에 공이 5개 들어갈 수 있다. 만약 공 23개를 담아야 한다면 필요한 상자의 개수는? (삼항연산자 이용)
int box;
int ball = 23;
box = ball % 5 == 0 ? ball/5 : (ball/5)+1; //ball이 5의 배수라면(5로 나눈 나머지가 0이라면) 몫을, 5의배수가 아니라면 몫+1을 반환하자.
System.out.println("필요한 상자 개수 : "+box); //5
**배수 구하기
n % 3 ==0 => n은 3의 배수
n % 5==0 => n은 5의 배수 ...
참조
'JAVA' 카테고리의 다른 글
[JAVA] 제어문 - 조건문 if (0) | 2023.08.12 |
---|---|
[JAVA] Scanner (0) | 2023.08.12 |
[JAVA] printf와 이스케이프 문자 (0) | 2023.08.12 |
[JAVA] 자료형과 변수 (0) | 2023.08.10 |
[JAVA] 유용한 사이트 모음 (영타, 코테 등) (0) | 2023.08.09 |