[JAVA 공부]

이도훈·2021년 11월 5일
0

length, length(), size()

  1. length는 배열(array)의 길이를 알고자 할 때 사용된다.
    ex)int[], double[], String[] ...

  2. length()는 문자열(String)의 길이를 알고자 할 때 사용된다.
    ex) String, StringBuilder ...

  3. size()는 컬랙션프레임워크 type의 길이를 알고자 할 때 사용된다.
    ex) Object(ArrayList, Set ...)


Primitive Type(기본형) vs Reference Type(참조형)

  • 자바의 자료형은 Primitive Type과 Reference Type 으로 나뉜다.

  • Primitive Type(기본형) : 비객체 타입으로, Null을 가질 수 없는 형태이다.
    Reference Type(참조형): 참조형은 java.lang.Object를 상속받습니다. 기본형이 아닌 자료형은 모두 참조형이며, Class, Interface 등이 있습니다.

    • Class Type
      : 클래스 타입은 기본형과 다르게 객체를 참조하는 형태입니다. a, b 두 객체를 동일한 객체로 선언했다면, 같은 객체를 참조하기 때문에 (= 주소값이 동일하다.) 동일한 값을 출력하는 것을 알 수 있습니다.

  1. String Class
    : 참조형에 속하지만 기본적인 사용은 기본형처럼 사용합니다.
  2. Wrapper Class
    : 기본형은 비객체이므로 null을 넣을 수 없습니다. 하지만 기본형에 null을 넣고 싶다면 Wrapper Class를 활용하면 됩니다. 래퍼 클래스는 기본형은 클래스로 감싼 형태이며 다음과 같은 클래스들이 있습니다.
기본형 / 래퍼 클래스
byte    Byte
short   Short
int     Integer
long    Long
float   Float
double  Double
char    Char
boolean Boolean

String 자료형 특징

  • String immnutable(불변형)입니다.

ex)

String a = "abc";
String a = "ab"; 
=> immutable하다는 것은 final 변수마냥 값이 변할 수 없는 것 아닌가? 이건 값이 변한 것 같은데?
=> 이런 생각이 든다면 자료형 공부를 다시 해야할 필요가 있다.

String a = "ab"; 은 다음과 같다.
String a = new String("ab"); 
=> 이는 동일한 주소값을 가지는 a 라는 변수의 값이 바뀐게 아니라,
a가 생성자를 통해 새롭게 주소값을 가지게 되며 그 새로운 주소값에 ab라는 String 값을
부여 받은 것이다.
  • String 객체 간 비교하는 방법
    : 일반적으로 기본형 비교는 == 연산자를 사용하지만 String 객체간 비교는 .equals() 메서드를 사용합니다.

ex)

String s1 = "123";
String s2 = "123";
String s3 = new String("123");

* String의 리터럴이 동일한 경우, jvm이 같은 값을 가지는 주소를 찾는다. 그리고 같은 값을 가진 경우, 동일한 주소값을 부여한다.


== 연산자 : 주소값 비교
s1 == s2 => true;
s1 == s3 => false;
: s1, s2 는 같은 주소값을 가지므로 true, s3는 생성자선언을 통해 새로운 주소가 만들어진 것이므로 s1 == s3는 false이다.

equals() : 값 비교
s1.equals(s2) => true
s1.equals(s3) => true
: 세 변수 모두 변수값이 동일하다.

  • Throwable
    : Obejct 클래스 / Throwable 클래스 / Exception 클래스
    상위 -> ... -> 하위

  • 변수의 종류
  1. 지역변수 (local variables) : 메서드 내(중괄호 내)에 선언한 변수
  2. 매개변수 (parameters) : 다른 메서드에 전달하는 변수
  3. 인스턴스변수 (instance variables)
    : 클래스 내, 중괄호 밖에 선언한 변수, non-static 변수
  4. 클래스변수 (class variables)
    : 처음 JVM이 실행되어 클래스가 메모리에 올라갈 때, 딱 한 번 생성됨(static 변수)
profile
back-end developer

0개의 댓글