💡 정적타입 언어(Statically typed language)
: 컴파일 시 변수이 타입이 결정되는 언어, 프로그래머가 변수의 자료형은 명시하고, 그에 맞는 값을 대입해야 함.
💡 동적타입 언어(Dynamically typed language)
: 컴파일 시 자료형을 정하는 것이 아니라 런타임 시 자료형이 결정되는 언어, 프로그래머가 따로 변수의 자료형을 명시하지 않아도, 변수만 선언하여 값을 지정할 수 있음
자바는 변수를 사용하기 앞서,
아래와 같이 자료형을 명시해주어야하는 정적타입 언어
int num = 1;
▶ 변수에 대입할 값의 특성에 맞추어 적절한 자료형을 선언하고,
▶ 값 대입 이전에 변수 선언만 해두었다면, 자료형에 맞는 값을 대입해야 한다.
💡 자바에서 제공하는 기본 자료형
long num1 = 12345678900L;
int형
L
이나 l
을 필수적으로 사용해야 함float num2 = 12.2F;
double형
F
나 f
을 필수적으로 사용해야 함💡 묵시적 형 변환(=업 캐스팅=자동 형 변환)
1) 바이트 크기가 작은 자료형 ➡ 큰 자료형
2) 덜 정밀한 자료형 ➡ 더 정밀한 자료형
byte >> short, char >> int >> long >> float >> double
위의 순서대로 묵시적 형 변환이 가능함
(명시적 형 변환과 달리) 괄호 안 자료형 명시 없이, 연산 시 자동적으로 일어남
위의 원칙에 따라 형 변환이 이루어진 경우, 자료 손실 없음
💡 명시적 형 변환(=다운 캐스팅=강제 형 변환)
: 묵시적 형 변환에 반하여 거꾸로 형 변환이 이루어지는 경우
1) 바이트 크기가 큰 자료형 ➡ 작은 자료형
2) 더 절밀한 자료형 ➡ 덜 정밀한 자료형
int inum = 10;
byte bnum = (byte)iNum; // 강제로 형 변환 시 바꿀 형을 괄호 명시
float temp = 36.5F;
int temp2 = (int)temp; // 형 변환되면서 소수점 이하 부분 생략
자료 값이 변환된 자료형이 표현할 수 있는 범위를 넘는 경우, 자료 손실 있음
💡 상수(constant)
: 값이 변하는 '변수(variable)'와 달리, 항상 변하지 않는 값
final int MAX_SCORE = 100;
_
사용 (camel X)💡 항과 연산자
: 연산에 사용하는 값을 항(operand), 연산에 사용하는 기호를 연산자(operator)라고 함
💡 기본 연산자 종류
💡 증가/감소 연산자
: 증가/감소 연산자는 단항 연산자로, 항의 앞이나 뒤에 붙어 값을 1만큼 늘리거나 1만큼 줄임
++
: 항의 값에 1을 더함--
: 항의 값에 1을 뺌🧨 증가/감소 연산자의 위치에 따라 결과 값이 달라질 수 있음
1) 증가/감소 연산자가 피연산자 앞에 있을 때
: 문장이 끝나기 전에(; 전에) 피연산자 값이 증가하거나 감소
int value = 10;
int num = ++value; // value 값에 1을 더한 후 num에 대입
// num에 11이 대입됨
2) 증가/감소 연산자가 피연산자 뒤에 있을 때
: 문장이 끝난 후에(다음 문장부터) 피연산자 값이 증가하거나 감소
int value = 10;
int num = value++; // 초기 value 값을 num에 대입
// 이후에 value 값이 1을 더함
// num에 10이 대입됨
💡 논리 연산자
: 명제 기반 참, 거짓 판단 연산
&&(논리 곱)
: 두 항이 모두 참인 경우에만 참||(논리 합)
: 두 항 중 하나만 참이면 참!(부정)
: 참은 거짓으로, 거짓은 참으로 바꿈💡 비트 논리 연산자
: 비트 단위로 이루어지는 논리 연산
&
: 두 비트 값이 모두 1인 경우에만 1|
: 두 비트 값 중 하나라도 1인 경우 1^
: 두 비트 값이 같은 값이면 0, 다른 값이면 1~
: 0은 1로, 1은 0으로 비트 값을 바꿈🧨 논리 연산자의 단락 회로 평가
논리 연산자(&&, ||)는 앞 조건의 결과로 최종 결과가 나와버리면
뒷 조건은 연산하지 않음(=짧은 단위의 논리 연산)
반면, 비트 논리 연산자(&,|)는 앞 조건 결과와 상관 없이 끝까지 연산함
int num1 = 5;
int num2 = 100;
boolean flag = (num1 > 10) && (++num2 > 20);
// (num1 > 10)이라는 앞 조건이 false라서 flag는 false
// 때문에 (++num2 > 20)은 연산되지 않음
// ++num2가 실행되지 않아, num2 값은 그대로 100
💡 if문, if-else문
: '만약 ~이라면', '만약 ~이라면, 그렇지 않다면'의 구조로 이루어진 조건문
🔽 나이 값에 따라 학교를 다니는지/다니지 않는지 출력하는 예제
int age = 10;
if (age >= 8) {
System.out.println("학교에 다닙니다.");
}
else {
System.out.println("아직 학교에 다니지 않습니다.");
}
=> 나이 값에 대해 조건이 (age >= 8) 하나 뿐
💡 else-if 문
: 하나의 상황에 조건이 여러 개 인 경우 사용하는 조건문
🔽 나이 값에 따라 미취학아동/초등학생/중,고등학생/성인을 출력하는 예제
int age = 10;
String status;
if (age < 8) {
status = "미취학아동";
}
else if (age < 14) {
status = "초등학생";
}
else if (age < 20) {
status = "중고등학생";
}
else {
status = "성인";
}
System.out.println("귀하는 "+status+"입니다.");
=> 나이 값에 대해 조건이 여러가지
💡 switch-case문
: 조건식의 결과가 정수 또는 문자열 값이고(대상을 하나의 값으로 비교할 수 있는 경우), 그 값에 따라 수행되는 경우가 각각 다른 경우 사용하는 조건문
🔽 시험 점수에 따라 성적(A/B/C/F)를 출력하는 예제
int score = 95;
char grade;
switch(score/10) { // 산술연산을 통해 10의 자리 수만 추출
case 10 : grade = 'A';
break;
case 9 : grade = 'B';
break;
case 8 : grade = 'C';
break;
default : grade = 'F';
}
각 case가 끝날 때마다 잊지 말고 break;
해주어야 함
break를 해주지 않으면 해당 케이스 이외에 default 코드도 진행
sysout
+ Ctrl
+ space
: System.out.println();
Ctrl
+ F11
: 최근 클래스 Run
Ctrl
+ d
: 해당 코드 한 줄 지우기
Ctrl
+ Alt
+ 아래 방향키
: 해당 코드 아래에 한 줄 복사
Ctrl
+ i
: 인덴트 맞추기
Ctrl
+ /
: 라인 주석 처리/해제
Ctrl
+ Shift
+ /
: 블럭 주석 설정
Ctrl
+ Shift
+ \
: 블럭 주석 해제
Shift
+ Alt
+ R
: 변수 이름 한번에 바꾸기
Ctrl
+ Shift
+ O
: 필요한 패키지 자동 import
대문자
로 ex) JavaBasic: 각 단어의 첫 문자를 대문자로 표기하고 붙여쓰되,
맨 처음 문자는 소문자로 표기함
ex) studentNumber, backgroudColor
// 이것이 라인 주석입니다.
/*
* 이것이 블럭 주석입니다.
*/
/**
* 이것은 문서화 주석입니다.
*/