1. String 클래스
지금까지 문자열 자료형의 변수를 다룰 때 String을 사용했는데, 자세히 보면 String은 대문자로 시작하는 것을 알 수 있다. String은 참조형의 데이터 타입이며 Class이다.
String str1 = "hello java";
String str2 = "hello java";
String str3 = new String("hello java"); // 객체 생성 문법으로 객체를 생성할 수 있다.
String str4 = new String("hello java");
String 클래스의 객체 생성 방법
1. 문자열이 동일하면 새로운 객체를 만들지 않고 메모리 공간을 낭비하지 않도록 같은 데이터를 참조한다.
2. new 키워드가 새로운 객체를 생성한다는 명령어이기 때문에 문자열이 같더라도 객체를 새로 생성해준다.
if (str1 == str2) {
System.out.println(1);
}
if (str3 == str4) {
System.out.println(2);
}
실행 결과 : 1 만 출력된다.
str1과 str2처럼 문자열 리터럴을 지정하여 문자열을 생성한 경우, 동일한 문자열은 같은 데이터를 참조한다.
str3과 str4는 문자열이 같더라도 new연산자를 통해 새로운 객체가 만들어지기 때문에 각각 다른 데이터를 갖게 된다.
+) '=='의 의미
숫자 비교에서는 두 수가 같은 수인지 판별
객체 비교에서는 두 객체가 동일한 참조값을 가지는지 판별
String은 다른 참조변수와 다르게 변경 불가능한(immutable) 변수이다.
String str1 = "java";
str1 = "c++";
System.out.println(str1); // 실행 결과 : c++
한 번 값이 저장되면 변경할 수 없기 때문에 2번째 줄의 경우, 값이 변경되는 것이 아니라 새로운 문자열이 담긴 데이터를 참조하는 것이다.
String 클래스에서 선언된 유용한 메서드
length() -> 문자열의 길이를 리턴
concat() -> 두 문자열을 연결하여 리턴
substring() -> 일부 문자열 추출하여 리턴
valueOf() -> 숫자를 문자열로 변환
split() -> 문자열을 슬라이스하여 문자열 배열로 리턴
2. 인터페이스
인터페이스는 메소드를 명시하지만 메소드의 내용은 없다.
인터페이스의 구성요소 : 메소드의 선언 (내용은 없음) -> 객체, 생성자, 변수 없음
클래스를 만들기 위한 설계도
인터페이스 내부의 메소드는 반드시 접근제한자를 public으로 사용해야 한다. 그래서 public을 생략하더라도 알아서 public으로 해석한다.
public interface Interface01 {
public void printName();
}
public class Inter01 implements Interface01 {
@Override
public void printName() {
}
}
** 새롭게 알게 된 것
자바가 제공하는 Math 클래스에는 pi값이 저장된 상수가 있다. 상수는 변수와 다르게 변하지 않는 수이며, 대문자로 표기한다.
public static void main(String[] args) {
System.out.println(Math.PI);
} //3.141592653589793
'TIL' 카테고리의 다른 글
| 230206 [Java] (List / ArrayList) (0) | 2023.02.06 |
|---|---|
| 230203 [Java] (예외처리 / 래퍼 클래스 / 컬렉션 프레임워크) (0) | 2023.02.03 |
| 230201 [Java] (다형성 / 형 변환 / 메소드 오버라이딩 / Object 클래스) (0) | 2023.02.01 |
| 230131 [Java] (static / 오버로딩 / 상속) (0) | 2023.01.31 |
| 230130 [Java] (접근 제한자 / 객체 배열) (0) | 2023.01.30 |