JAVA - 자바의 정석

‍bng4535·2023년 2월 26일

잘 몰랐던 부분이나 새로 알게 된 내용 추가

리터럴과 상수의 차이

  • 리터럴 : 값 자체 (일반적으로 알고 있는 상수)
  • 상수 : 값을 한 번만 저장하고 변경할 수 없는 저장공간

this

  • 객체 자신을 가리키는 참조 변수
  • 인스턴스 자신의 주소를 저장, 모든 인스턴스 메서드에 숨겨진 채로 존재하므로 인스턴스 메서드 내에서만 사용 가능

변수의 초기화

  • 클래스 변수의 초기화 순서 : 기본값-> 명시적초기화 -> 클래스 초기화 블럭
  • 인스턴스 변수의 초기화 순서 : 기본값 -> 명시적 초기화 -> 인스턴스 초기화 블럭 -> 생성자

문자열 덧셈 과정

  • 문자열은 기본적으로 내용을 변경할 수 없으므로, 덧셈 연산을 할 때 새로운 문자열이 생성되고 주소를 반환하게 됨

오버라이딩

  • 오버라이딩 시, 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.

instance of

  • 어떤 타입에 대한 instanceof연산의결과가 true라면 검사한 타입으로 형변환이 가능

hashCode

  • 찾고자 하는 값을 입력하면 그 값이 저장된 위치를 알려주는 해시코드 반환
  • 해시 코드가 같은 객체가 존재할 수 있으나 주소값을 이용하여 해시코드를 만들기 때문에 서로 다른 두 객체는 결코 같은 해시코드를 가질 수 없다.
    같은 객체라면 같은 해시코드를 가져야 함

문자열의 비교

문자열을 만들 때는 리터럴을 지정하거나 String 클래스의 생성자를 사용

	String str1="abc";
    String str2="abc";
	String str3=new String("abc");
	String str4=new String("abc");

문자열 리터럴은 클래스가 메모리에 로드될 때 자동적으로 미리 생성되므로 str1과 str2는 같은 인스턴스를 가리킨다.

profile
공부 기록

0개의 댓글