1강.

  1. 리터럴(literal)
    : 선언을 하면서 값을 바로 넣는 것.
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);

이렇게 쓰면 됨.


  1. 상수
    :맨처음에 값을 넣었다면 변경할 수 없는 값.
    상수의 변수명은 보통 대문자로 씀.
final int MAX = 30; 
final double PI = 3.141519;

max나 PI를 소문자로 써도 되긴하는데 대문자로 써야 프로그래머들이 보기에 좋음.
*final: 상수 앞에 붙여주는 예약어.



  1. 형변환(타입변환)
    : 값의 타입을 다른 타입으로 변환하는 것.
  • 종류:
  1. 묵시적(자동) 변환(Promotion):작은 타입을 큰 타입으로 자동 변환.
float num3 = num2; 
//num2는 int인데 float가 있기 때문에 float형으로 변환되어 num3로 들어감.

*클래스 이름 바꿀 때: F2보다 클래스명 우클릭 - Refactor - Rename 하고 바꾸는 것이 좋음


  1. 명시적(강제) 변환(Casting): 큰 타입을 작은 타입으로 강제 변환.
    자료값이 짤려도 좋으니 강제 변환 하시오.
    바꿀 타입명을 괄호치고 써줘야함
double d1 = 13627.28943827338;
float f1 = (float)d1;
System.out.println(f1); 
=> 13627.289 
//결과값이 짤려서 나옴.

  • 연산식에서의 자동타입변환
    int보다 작은 자료형의 연산을 하면 무조건 int로 형 변환이 이루어짐.
int = byte * byte
int = char + char
int보다 큰 자료형은 무조건 큰 자료형으로 자동 형변환됨.

long long1 = 12341235673246L; 
//int안에 저 값이 다 들어가지 못해서 식별자 써서 자동형변환 시켜줌
long c4 = long1*c3;


  1. 연산자
    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이 대입하게 됨.

*변수명을 잘 짓는 프로그래머가 좋은 프로그래머, 같은 결과가 나오는데 식이 짧을 수록 좋은 프로그래머

profile
내 인생을 망치러 온 나의 구원, 개발

0개의 댓글