플랫폼에 영향을 받지 않으므로 다양한 환경에서 사용할 수 있다
객체 지향 언어이기 때문에 유지보수가 쉽고 확장성이 좋다
프로그램의 구현을 시간의 흐름순이 아닌 객체간의 관계와 협력을 기반으로 프로그램 하는 것
package ch01;
public class HelloJava {
public static void main(String[] args) {
System.out.println("Hello, Java");
}
}
main 함수는 구동을 위해 사용, 웹 서버에 처리 할 경우엔 사용 안할 수도!
컴파일된 클래스 파일은 bin 폴더에 있다!
package ch04;
public class BinaryTest {
public static void main(String[] args) {
int num = 10;
int bNum = 0B1010;
int oNum = 012;
int xNum = 0xA;
System.out.println(num);
System.out.println(bNum);
System.out.println(oNum);
System.out.println(xNum);
}
}
변수 명은 카멜 표기법 자주 사용
패키지명은 소문자 사용
java에서 정수는 기본적으로 integer(4byte)로 잡히고 실수는 double(8byte)로 잡힌다!
큰 수 일 경우 long, float -> 값 뒤에 L, f 붙이기
부동 소수점은 지수부와 가수부로 표현
정규화로 인해 보통 1.m * 2 ^-n 으로 표현
지수부는 0을 표현할 수 없기에 약간에 오차 발생할 수 있다
변하지 않는 수(보통 대문자로 표현)
final 예약어 사용하여 선언
프로그램에서 사용하는 숫자, 문자, 논리값을 뜻함
리터럴은 상수 풀(constant pool)에 있음
static 변수와 마찬가지로 프로그램 로드와 동시에 메모리에 할당
byte bNum = 10;
int iNum = bNum;
int iNum1 = 20;
float fNum = iNum2;
int iNum = 10;
byte bNum = (byte)iNum;
double dNum = 3.14;
int iNum2 = (int)dNum;
밑의 두 case의 경우는 프로그래머가 강제로 형변환한 경우
논리 곱(&&)은 두 항의 결과가 모두 true일 때만 결과가 true
-> 앞의 항의 결과가 false이면 뒤 항의 결과를 평가하지 않음
논리 합(||)은 두 항의 결과가 모두 false일 때만 결과가 false
-> 앞의 항의 결과가 true이면 뒤 항의 결과를 평가하지 않음
if(조건식) {
수행문1; // 조건식이 '참'인 경우에 수행됨
}
else if(조건식){
수행문;
}
else{
수행문2; // 조건식이 '참'이 아닌 경우에 수행됨
}
public class SwitchCaseTest {
public static void main(String[] args) {
int month = 10;
int day;
switch(month){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
day = 31;
break;
case 4: case 6: case 9: case 11:
day = 30;
break;
case 2:
day = 28;
break;
default:
day = 0;
System.out.println("존재하지 않는 달 입니다.");
}
System.out.println(month + "월은 " + day + "일입니다.");
}
}
if - else if - else 문을 사용할 때 복잡하고 번거로운 부분을 가독성 좋게 구현
문자열도 구현 가능!
public class SwitchCaseUpTest {
public static void main(String[] args) {
int month = 3;
int day = switch (month) {
case 1, 3, 5, 7, 8, 10,12 -> {
System.out.println("한 달은 31일입니다.");
yield 31;
}
case 4,6,9,11 -> {
System.out.println("한 달은 30일입니다.");
yield 30;
}
case 2 ->{
System.out.println("한 달은 28일입니다.");
yield 28;
}
default->{
System.out.println("존재하지 않는 달 입니다.");
yield 0;
}
};
System.out.println(month + "월은 " + day + "일입니다.");
}
}
yield 키워드 사용
마지막 괄호에 세미콜론 사용하는 것 유의!
주어진 조건에 맞는 동안(true) 지정된 수행문을 반복적으로 수행하는 제어문
조건이 맞지 않으면 반복하던 수행을 멈추게 됨
while(조건식){
수행문1;
...
}
수행문2;
...
do{
수행문1;
...
} while(조건식):
수행문2;
...
for (초기화식; 조건식; 증감식)
{
}