int number;
number = 25; //이건 리터럴 아님. 선언하고 또 값을 넣어줬으니까
int number2 = 30; //이건 리터럴. 선언과 동시에 값을 넣어줬으니까.
char를 선언할 때 주의해야 함!
char ch8 = ch7 + 1; 이렇게 캐릭터 다음 연산이 나오면
연산값(1)이 int로 인식되기 때문에 저렇게만 쓰면 오류남.
char ch7 = 'a' + 1; 이렇게 쓰면 가능.
a=97이고 + 1 하면 98인데 98=b라서 b라는 결과값 도출.
리터럴에서는 연산식 사용가능
* \u0041 : 0041이 유니코드라는 것을 알려주는 것.
유니코드 알고 싶다면
int unicode = '정';
System.out.println(unicode);
이렇게 쓰면 됨.
final int MAX = 30;
final double PI = 3.141519;
max나 PI를 소문자로 써도 되긴하는데 대문자로 써야 프로그래머들이 보기에 좋음.
*final: 상수 앞에 붙여주는 예약어.
float num3 = num2;
//num2는 int인데 float가 있기 때문에 float형으로 변환되어 num3로 들어감.
*클래스 이름 바꿀 때: F2보다 클래스명 우클릭 - Refactor - Rename 하고 바꾸는 것이 좋음
double d1 = 13627.28943827338;
float f1 = (float)d1;
System.out.println(f1);
=> 13627.289
//결과값이 짤려서 나옴.
int = byte * byte
int = char + char
int보다 큰 자료형은 무조건 큰 자료형으로 자동 형변환됨.
long long1 = 12341235673246L;
//int안에 저 값이 다 들어가지 못해서 식별자 써서 자동형변환 시켜줌
long c4 = long1*c3;
연산자
1) 단항 연산자: 항이 하나인 것.
85, 98, -76 등... ++ , --
int num1 = 10;
num1++; 또는 ++num1;
//하나를 증가시키라는 뜻.
++num1: ++이 앞에 오면 변수값을 먼저 증가시키고 연산을 함.
int num2= 10;
int result = ++num1 + ++num2;
System.out.println(result);
=> 22가 됨.
그런데 만약
num1 = num2 = 10;
result = num1++ + num2++;
이렇게 되면 num1++이 가장 마지막이어서 num2++ -> 연산 + ->num1++이 됨.
System.out.println(result);
=> 20
그럼 혼합된 식은?
num1 = num2 = 10;
result = num1++ + ++num2;
System.out.println(result);
=> 21
연산 결과가 먼저 나오고 num1++이 되기 때문에 결과값 21
마이너스 값은?
int n1 = -20;
n1 = +n1; //대입 연산자는 사칙연산의 '*' 용법과 같기 때문에 -20이 됨.
System.out.println(n1); =-20
n1 = -n1;
System.out.println(n1); =20
int/int = int, 결과적으로 몫(정수)만 나옴.
만약 소수점 자리 수까지 다 나오게 하려면?
두 수 중에 하나를 double형으로 만들고 자동 형변환 시킴.
int x = 10;
int y = 7;
result2 = x/(double)y;
System.out.println(result2);
2) 이항 연산자: 항이 두 개인 것.
2+3 등
3) 삼항 연산자((조건 연산자)): 항이 세 개인 것.
10 == 5 ? 1 : 0 // 10이 5인가? 참이면 1 거짓이면 0
int a = 10;
int b = 5;
int result = a > b ? a : b; // 두 수 중에 큰 수를 반환해줌
System.out.println(result); = 10
*연습문제*
//사용자로부터 두 수를 입력받아 더 큰 숫자를 출력하시오.
//사용자로부터 숫자 하나를 입력받아 짝수인지 홀수인지 출력하시오.
// 양수일 땐 + 기호를, 음수일 땐 - 기호를, 0은 0으로 출력하시오.
*스캐너 식은 무조건 외워야됨!!
Scanner 변수명 = new Scanner (System.in);
4) 대입 연산자: 대입 시켜주는 것.
int a = 10
num1 = 10;
num2 = 10;
=> num1 = num2 = 10;
둘 다 똑같은 말. 뒤에서부터 앞으로 대입시키키 때문에.
*연습문제*
//사용자로부터 숫자 2개를 입력받아!!! 사칙연산과 몫, 나머지를 출력하시오.
5) 비교 연산자
>, <, >=, <=, ==(=이거는 대입연산자), !=(같지 않다는 뜻)
6)논리 연산자:
논리 값 두 개를 비교하는 연산자
if와 for문에서 많이 쓰임.
&&((논리합)): 두 피연산자가 모두 true일 때만 true 반환(AND)
||((논리곱)): 두 피연산자가 하나만 true여도 true 반환(OR)
7) 복합 대입 연산자
int num1 = 10;
num1 = num1 + 10;
num1 += 10;
둘은 같은 표현. num1에 30이 대입하게 됨.
*변수명을 잘 짓는 프로그래머가 좋은 프로그래머, 같은 결과가 나오는데 식이 짧을 수록 좋은 프로그래머