| 기준 | Java |
|---|---|
| 기본 개념 | 컴파일 언어, 주로 서버 및 엔터프라이즈 애플리케이션에 사용 |
| 실행 환경 | JVM (Java Virtual Machine) |
| 언어 유형 | 정적 타이핑(static typing) |
| 사용 사례 | 웹 백엔드, 안드로이드 앱 개발, 엔터프라이즈 애플리케이션, 데스크톱 애플리케이션 |
| 구문 및 문법 | 엄격한 문법, 객체지향 프로그래밍 지원 |
| 변수 선언 | int, double, boolean, String, class 타입 객체 |
| 객체 지향 | 클래스 기반 |
| 멀티스레딩 | 멀티스레딩 지원 (다중 스레드) |
| 패키지 관리 | Maven Central, Gradle Repository |
| 빌드 도구 | Maven, Gradle, Ant |
Hello.java 안에는 public class Hello); 마지막에 꼭 붙이기! 


- variable
- 정적 타입핑 : 선언된 타입과 일치하는 값만 저장 가능
변수 선언
타입 변수명 = 변수값;- 모든 변수는 클래스 안에만 존재할 수 있음 (전역 변수 없음)
- 변수를 선언할 때는 반드시 초기값을 넣기 아니면 쓰레기값이 들어있다고 표현함
변수 초기화
- 변수에 최초로 값이 대입될때, 메모리에 할당하고 값 저장
- 초기화 되지 않은 변수를 사용하면 컴파일 에러
네이밍 규칙
- 카멜 표기법:
userName,totalScore- 상수는 스네이크 표기법:
MAX_VALUE
정수
| 타입 | 크기 | 설명 |
|---|---|---|
| byte | 1 byte | 작은 범위의 정수(-128 ~ 127) |
| short | 2 byte | 정수 |
| int (기본 타입) | 4 byte | 정수 |
| long | 8 byte | 정수 |
0x0b0error: incompatible types: possible lossy conversion from int to byte byte i=129;)L 붙여주기long var = 1000000000000L문자 리터럴과 char 타입
| 타입 | 크기 | 설명 |
|---|---|---|
| char | 2 byte | 문자 하나 ('A', '1') |
char one = 'A';
실수 타입
| 타입 | 크기 | 설명 |
|---|---|---|
| float | 4 byte | 실수 (7자리까지 정확도 1.4 × 10-45 ~ 3.4 × 1038) |
| double (기본 타입) | 8 byte | 실수 (더 높은 정확도) |
f,F 붙여줘야함float var = 3.14논리 타입
| 타입 | 크기 | 설명 |
|---|---|---|
| boolean | 1 bit | true / false |
String, 배열, 사용자 정의 클래스 등
실제 데이터는 heap 영역에 저장되고, 변수는 그 주소를 참조함
String name = "Java";
자동 형 변환: 작은 타입 → 큰 타입
강제 형 변환 (casting): 큰 타입 → 작은 타입 (데이터 손실 가능)
() 사용int num = 256;
byte small = (byte) num; // 강제 형 변환
연산식 자동 형변환
int 타입으로 자동 변환String 타입으로 변환하기
| 변환 타입 | 사용 예 |
|---|---|
| String → byte | String str = "10"; byte value = Byte.parseByte(str); |
| String → short | String str = "200"; short value = Short.parseShort(str); |
| String → int | String str = "300000"; int value = Integer.parseInt(str); |
| String → long | String str = "4000000000"; long value = Long.parseLong(str); |
| String → float | String str = "12.345"; float value = Float.parseFloat(str); |
| String → double | String str = "12.345"; double value = Double.parseDouble(str); |
| String → boolean | String str = "true"; boolean value = Boolean.parseBoolean(str); |
{} 내에서 선언된 변수는 해당 블록에서만 사용 가능
System.out.println() 이용

println : 줄봐꿈
print : 줄봐꿈 X
printf("형식문자열",값1,..) : 형식 문자열에 맞추어 출력

int i= 5;
String S = "hello";
char c = 'A';
System.out.printf("i=%d, S=%s, c=%c\n", i, S, c);
Scanner sc = new Scanner(System.in);
String inputData = sc.nextLine();


+, -, *, /, %
byte, short끼리 연산해도 결과는 intdouble or float이어야 함)Double.isInfinite(), Double.isNaN() 사용해 연산시 에러 방지int a = 5, b = 2;
System.out.println(a / b); // 2
System.out.println(5 / 2.0); // 2.5
&&, ||, !
int age = 20;
boolean isAdult = (age > 18) && (age < 65);
++, --
int x = 1;
System.out.println("x++ 결과: " + x++); // 출력: 1, x는 2가 됨
System.out.println(x); // 2
+와 문자열)System.out.println("나이: " + 20); // "나이: 20"

String a = "hello";
String b = a;
a = "hi";
System.out.println(b); // hello (a가 바뀌어도 b는 그대로)
if(조건식1){
//실행식1
} else if(조건식2){
//실행식2
} else{
//실행식3
}
switch(변수명){
case 1:
//실행식1
break;
case 'A':
//실행식2
break;
default:
//실행식3
}
// switch expression문
타입 변수 = switch(변수명){
case "값1" -> 변수값;
case "값2" -> {
yield 변수값;
}
defalt -> 변수값;
}
{} 사용하는 경우 yield로 변수값 지정defalt 반드시 존재해야함!// fori
for(초기화식; 조건식; 증감식){
}
// new for
for(타입 변수명 : 참조형_변수명){
//변수명사용하면 참조형 변수를 하나씩 꺼내줌
}
while(조건식){
//실행문
}
do{
//실행문
}while(조건식)
Outter: for(;;) {
for(;;) {
//실행문
if(조건식) {
break Outter;
}
}
}///* */