기본적인 자바 문법을 안다는 가정하에, 헷갈리는 부분만 정리했습니다.
1. 증/감 연산자
1) a++ : 일단 그대로 반환 후, 나중에 1 증가.
2) ++a : 먼저 증가시킨 후, 증가한 값을 반환.
3) a-- : 일단 그대로 반환 후, 나중에 1 감소.
4) --a: 먼저 감소시킨 후, 감소한 값을 반환.
int first = 3;
int second = first++;
System.out.println("second : " + second);
System.out.println("first : " + first);
=> second : 3
=> first : 4
2. 비교 연산자
1) 문자열 비교
- str1 == str2 #true
-> str1 과 str2 가 같은 문자일때, 동일한 문자열은 string pool 이 재사용된다.
- str1 == new String("같은문자") #false
- > new 로 생성하면 아예 다른 string 객체가 됨.
- str1.equals(new String("같은문자")) #true
- > equals()는 두 문자열의 "내용"만 비교.
2) 배열 비교
- int[] arr1 = {1,2,3} / int[] arr2 = {1,2,3}
-> arr1 == arr2 #false -- 주소값 비교.
-> arr1.equals(arr2) #false --Object의 기본 equals는 주소 비교.
-> Arrays.equals(arr1,arr2) #true. --"내용"비교
3) 리스트 비교
- list1 == list2 #false --주소값 비교.
- list1.equals(list2) #true -- "내용"비교.
3. trim() -- 중간공백 제거 X, 앞 뒤 공백만 제거.
4. 업캐스팅(UPCASTING)
부모형태 변수 = new 자식생성자();
1) 변수.메서드호출();
- 자식에 이름이 같은 메서드가 있으면 우선작동.
- 자식에 super() 가 있으면 부모의 것을 호출.
- 부모에서 자식과 같은 메서드가 있으면, 자식을 호출. - 없으면 부모의 것을 호출.
-> super로 작동한 부모메소드 속에서 호출한 거여도, 자식으로 이동(오버라이딩)
2) 생성자가 있다면?
- 자식이 태어날 때는 부모를 먼저 태어나고 태어난다.
3) 자식생성자에서 부모의 메서드를 호출.
- 자식이 태어날때, 부모의 생성자를 먼저 호출.
- 부모가 태어나고 보니, 자식의 생성자에서 부모의 메소드 A()를 호출.
- 부모의 메소드 A()를 호출하니, 그 안에 B() 메소드를 호출한다면.
- B()가 부모, 자식 모두에게 있다면 , 다시 자식의 B()를 호출한다.
4) 자식 생성자에 오버라이딩 x , 오버로딩 한다면,
- 자식이 태어날 때, 변수를 받음 -> 오버로딩 상태.
- 자식 생성자에서 파라미터가 있는 자식(int i) 호출.
- 자식은 태어나기 전에 부모의 기본생성자(매개변수 없는) 호출.
- 자식에게 파라미터가 있었음에도 부모는 기본생성자만 호출.(명시적으로 호출하지 않았을 때)
** 변수.x 로 필드값 접근시는 부모것에 접근
* 오류 나는 경우
- 자식 생성자에서 부모생성자 호출이 최상위줄에 있지 않으면, 오류가 남.
class B extends A {
public B(int i){
System.out.println("B호출");
super(10);
}
5. 접근제어자
- private : 같은 클래스 내부에서만
- protected : 같은 패키지 + 상속받은 클래스
- default : 같은 패키지
- publid : 어디서나 접근 가능.
6. static 변수/메서드
- 변수 : 클래스가 로딩될 때 딱 한번 메모리에 올라가며, 모든 인스턴스가 공유.
- 메서드 : 객체 없이 클래스명으로 접근이 가능. this 를 쓸 수 없음.
- 인스턴스 변수/메서드 : this 사용가능.
public class Counter {
static int count = 0; // 모든 객체가 공유하는 변수
public Counter() {
count++;
System.out.println("현재 생성된 객체 수: " + count);
}
public static void printTotal() {
System.out.println("총 객체 수: " + count);
}
}
public class Main {
public static void main(String[] args) {
Counter c1 = new Counter(); // 출력: 현재 생성된 객체 수: 1
Counter c2 = new Counter(); // 출력: 현재 생성된 객체 수: 2
Counter c3 = new Counter(); // 출력: 현재 생성된 객체 수: 3
Counter.printTotal(); // 클래스 이름으로 static 메서드 호출
}
}
'강의 정리' 카테고리의 다른 글
| [정보처리기사] 실기 프로그래밍 정리 - C언어 (0) | 2025.07.05 |
|---|---|
| [정보처기기사] 실기 프로그래밍 정리 - 파이썬 (0) | 2025.06.29 |