Java

Java 정리 - 1

와이제인 2018. 12. 22. 19:58


Java 정리 - 1




생성자 추가 시 주의점



1. 클래스에 명시적으로 생성자를 만들지 않으면, 컴파일러가 기본 생성자를 추가한다.


2. 파라미터가 있는 생성자가 하나라도 있다면, 자동으로 기본 생성자를 만들지 않는다.


ex) Book 클래스에 파라미터가 있는 생성자가 있다면, BookTest에서 객체 생성 시

      Book book1 = new Book(); 은 에러가 난다. 이 경우 해당 코드에 파라미터를 설정하거나,

      Book() 생성자를 만들어준다. 또는 원래 있던 생성자의 파라미터를 지워준다.



생성자가 여러 개 선언되어 있을 때, this 키워드를 이용하여 자기 클래스 내의 다른 생성자를 호출할 수 있다.



Public Book(String author){

this.author = author;

}


public Book(String title, String author){

this(author);

this.title = title;

}





package


public


default - 필드나 멤버 메소드 작성 시, 접근제한자를 쓰지 않는 경우에 해당한다. 같은 package 내의 클래스에서는

       접근이 가능하다.


private


protected - default(또는 package)와 같이 같은 패키지 내에 있는 클래스에서 접근할 수 있다. 상속 관계의 자식 클래스에서도

    접근할 수 있다. public 보다는 범위가 작고, default 보다는 범위가 넓은 접근제한자이다.






기본 데이터형 변수와 참조 데이터형 변수의 특징



기본 데이터형 변수는 변수가 만들어지는 공간에 바로 값이 저장


참조 데이터형 변수는 변수가 만들어지는 공간과 객체가 만들어지는 공간이 다름


변수는 stack에, 객체는 heap에서 만들어진다. 객체는 참조 주소값을 가지고 있고, 변수는 참조 주소값을 이용하여 객체를 찾아간다.






static


객체를 생성하지 않고 클래스의 필드와 멤버 메소드를 호출하는 방법


static 변수는 객체마다 데이터를 갖는 것이 아니라, 모든 객체가 공유하는 데이터


static 키워드가 붙은 필드나 메소드는 클래스 이름을 구분자로 사용

- 프로그램내에서 사용하는 상수는 final static으로 선언하여 사용


클래스명.static_필드명;


클래스명.static_메소드명();                        Math.PI;               Integer.parseInt("100");


stack 영역 - 메소드 호출과 로컬 변수가 저장되는 영역


heap 영역 - 객체가 저장되는 영역, New 영역, Old 영역, Parmanet 영역으로 나뉜다.






Garbage Collection



JVM이 Heap Memory를 관리하기 위해 제공하는 매커니즘


더 이상 참조하지 않는 객체는 GC의 대상이 된다.



Minor GC


- New 영역에서 발생하는 GC


- Eden 영역이 꽉 차면 Minor GC가 수행되고 살아남은 객체를 Survivor 영역으로 옮김



Major GC


- Old 영역이 꽉 차면 Major GC가 수행됨


- Full GC 라고도 하며 시간이 비교적 오래 걸림


- Memory Leak을 발생시키는 코드가 존재하면 점차적으로 Heap 메모리가 증가하여 OutOfMemory를 발생시킬 수 있으므로

  주의해야 함