모든 클래스의 최상위 클래스, 클래스를 생성하면 자동으로 Object 클래스를 상속받는다.
extends Object
를 추가함Object 클래스에 정의된 메서드
String str = "test"
기본형이 아닌 String을 print했을 떄, 객체의 주소값이 아니라, 우리가 저장한 값(”test”)이 나오는 이유는 String 클래스에 이미 toString()이 오버라이딩되어 있기 때문이다.스트링 선언하는 두 가지 방법
String str1 = new String("abc");
String str2 = "abc";
str1
은 인스턴스를 새로 생성하여 힙 메모리를 할당하고 있고,
str2
는 상수 풀에 있는 주소를 가리키기만 하고 있는 것이다.
String은 final로 선언되어 있어 한 번 생성되면 변하지 않는다.
String java = new String{"java");
String android = new String("android");
java = java.concat(android);
위 코드와 같이 “java”와 “android”가 생성되어 있을 때, 이를 합치면 “java”가 “javaandroid”로 변하는 것이 아니라 “java”는 그대로 있고, “javaandroid”가 새로 생성되어 java 변수가 이를 가리키게 되는 것이다.
즉, String을 계속해서 위와 같이 사용하면 메모리 낭비가 발생하게 된다.
String과 다르게 StringBuilder와 StringBuffer는 final로 선언되어 있지 않기 때문에 변할 수 있다.
즉, 문자열을 변경하거나 연결하는 데에 있어서 String과 비교했을 때, 메모리 측면에서 자유롭다.
성능비교 : StringBuilder > StringBuffer > String
: StringBuffer는 동기화가 지원되기 때문에 속도 측면에서는 StringBuilder의 성능이 더 좋다.
문자열을 “”” “”” 사이에 이어서 만들 수 있다.
String textBlock = """
hi
how are you
i'm fine""";
위와 같이 작성하면 개행이 포함된 문자열을 사용할 수 있다.
자바의 모든 클래스와 인터페이스는 컴파일 후에 .class 파일이 생성된다.
Class 클래스는 컴파일 된 .class 파일을 로드하여 객체를 동적 로드하고, 정보를 가져오는 메서드를 제공한다.
Class 클래스의 메서드
forName(String className)
: 클래스 이름을 통해 클래스를 동적으로 로드한다.newInstance()
: new 키워드를 사용하지 않고 객체 생성한다.언제 new를 사용하지 않고 Class 클래스를 사용해서 객체를 생성하면 될까? → 생성하려는 객체 클래스가 로컬에 없을 때
동적 로딩
자바 프로그램은 OS에서 바로 실행되지 않고, JVM위에서 실행되는데 System 클래스를 통해 OS에 접근할 수 있다.
❗ System.gc()
는 시스템 성능에 매우 큰 영향을 미칠 수 있다.
Byte / Short / Integer / Long / Character
등의 기초 자료형을 감싸고 있는 클래스
Integer integer1 = 10;
Wrapper 클래스 객체에 기본 자료형을 바로 넣는 것을 ‘Boxing 한다’고 한다.
integer1
변수를 위한 새로운 주소를 할당하지 않고 원래 있던 10
의 주소를 가리킨다.BigInteger : 매우 큰 숫자를 표현하기 위함
BigDecimal : 매우 큰 실수를 정수로 표현하며 오차를 없앤다.
문자열을 우리가 지정한 구분자로 쪼개주는 클래스
vs String.split()
Math.random과 다르게 seed 설정이 가능하다.
현재 날짜와 시간 설정하거나 날짜 산술 수행해야하는 경우 사용한다.
Calendar.getInstance()
를 통해 인스턴스 생성
특징
지역의 [언어][나라] 등의 정보를 담고 있는 클래스
정규표현식 만들 떄 사용한다.
온라인 컴파일러 통해서 편리하게 테스트할 수 있다.
날짜와 시간을 표현한다.
Instant
: TimeStamp를 찍기 위해 사용한다.
OffsetDateTime, ZonedDateTime
사용LocalDate / LocalTime / LocalDateTime
: 컴퓨터가 현재 저장하고 있는 날짜를 토대로 정보 알 수 있다.