2023년부터 Java를 배우고 있었지만, 제대로 된 커리큘럼 없이 혼자서 진행하다 보니 학습 방향을 잡기 어려웠다
또한 정보처리기사 자격증을 취득하는 과정에서 Java 부분이 약하다는 것을 알고 극복해내기 위해 혼자 공부하는 자바(혼공자) 스터디를 알게 되어 체계적으로 학습하며 기록으로 남기기 위해 신청!
IDE는 Intellij IDEA를 사용할 것이다
앞으로 6주 동안 꼼꼼히 학습하고 꾸준히 정리하여 성장해 나가는 사람으로 발전해보자!
예시1)
package chap02;
public class check_09 {
public static void main(String[] args) {
long var1 = 2L;
float var2 = 1.8f;
double var3 = 2.5;
String var4 = "3.9";
int result = (int) ((int) (var1 + var2 + var3) + Double.parseDouble(var4));
System.out.println(result);
}
}
→ (var1 + var2 + var3) 으로 자동 형변환 발생(작은 타입 -> 큰 타입)으로 변환 해서 2 + 1.8 + 2.5 = 6.3(double) 그 후 (int)(6.3) 강제 형변환 진행해서 6이 나오게 되고
Double.parseDouble(var4)를 사용해서 String -> double 로 강제 형변환 해주고 6 + 3.9 = 9.9(double)의 결과가 나오게 되고 마지막으로 (int)(9.9) 로 결과값이 9가 나온다
예시2)
package chap02;
public class check_09 {
public static void main(String[] args) {
long var1 = 2L;
float var2 = 1.8f;
double var3 = 2.5;
String var4 = "3.9";
int result = (int) ((var1 + var2) + (int) var3 + Double.parseDouble(var4));
System.out.println(result);
}
}
플랫폼 독립성
→ 바이트코드(.class)를 JVM이 해석하기 때문에 운영체제에 상관없이 실행 가능
객체 지향 언어
→ 클래스와 객체를 중심으로 코드를 구성한다
자동 메모리 관리
→ JVM이 메모리를 자동으로 관리해줘서 개발자가 직접 메모리 해제를 안해도 된다
동적 로딩
→ 필요한 클래스만 로드하기 떄문에 프로그램 시작 속도가 빠르다
규칙 | 설명 |
---|---|
영문자, 숫자, 언더바 사용 가능 (단, 숫자로 시작 불가) | 'ruddns', 'ruddns_2025' |
대소문자 구분 필요 | 'ruddns' ≠ 'Ruddns' ≠ 'RUDDNS' |
자바의 예약어 사용 불가 | ❌ 'int', 'private', 'true' |
의미 있는 이름 사용 추천 | 이름을 나타날 때 'userName' |
지역변수
→ 메소드 블록 내부에서만 사용되고 메소드 실행이 끝나면 자동으로 사라짐
전역변수
→ 클래스 전체에서 사용 가능
저장되는 값에 따른 분류 | 타입의 종류 |
---|---|
정수 타입 | byte, char, short, int, long |
실수 타입 | float, double |
논리 타입 | true, false |
허용범위 크기 순으로 나타내면
→ byte < short < int < long < float < double
예시)
byte byteValue = 10;
int intValue = byteValue;
→ int 타입이 byte 타입 보다 허용 범위가 크기 때문에 자동 타입 변환
int intValue = 10;
byte byteValue = (byte) intValue;
→ int 타입은 byte 타입보다 허용 범위가 크기 때문에 자동 변환이 불가
연산자
→ 연산의 종류를 결정하는 기호
피연산자
→ 연산식에서 연산되는 데이터(값)
증감 연산자 | 설명 |
---|---|
++@, --@ | 다른 연산 수행 전에 증감 연산자 수행 |
@++, @-- | 다른 연산 수행 후에 증감 연산자 수행 |
예시)
package chap03;
public class check_02 {
public static void main(String[] args) {
int x = 10;
int y = 20;
int z = (++x) + (y--);
System.out.println(z);
}
}
→ x가 10으로 초기화 되어 있고 (++x) 전위 증감 연산자 이기 때문에 x + 1을 한 값 11
y가 20으로 초기화 되어 있고 (y--) 후위 감소 연산자 이기 때문에 y값 20 그대로 출력
따라서 11 + 20 = 31 나오게 된다
💡다음에 x, y를 사용할 때는 x = 11, y = 19로 사용하게 된다