13. Java Reference Types, 내장 String 클래스
메모리에 저장
Reference Types
- 생성되는 모든 클래스가 Reference Type이다
// planet은 reference type
class Planet {
}
- 그 외에 이미 자바에 만들어진 reference types는
- String, BigDecimal 등이 있다
Reference Variable
- 클래스를 토대로 만든 변수를 reference variable이라고 한다
class Planet {
}
Planet jupiter = new Planet();
// 여기서 jupiter는 reference Variable이다
- reference variable은 힙에 저장이 된다
- 더 나아가, 스택에는 value에는 메모리 공간이 저장이 되고, 변수 이름이 저장 된다
- 즉, stack에는 reference variable이 힙의 메모리 공간의 경로를 표시한다
- 반대로 primitive variable, 즉 기본 변수는, 스택에 저장된다
String Class (String으로 저장된 변수 확인하기)
String은 클래스이고, 생성자가 필요가 없다
BigDecimal bd = new BigDecimal("1.0");
String str = "Test";
- BigDecimal 같이 new BigDecimal("1.0"), 생성자가 필요 없이 바로 변수를 만들 수 있다
String은 인덱스가 0부터 시작한다
String str = "Test";
str.charAt(0);
//output : 'T'
str.charAt(2);
//output : 's'
String biggerString = "This is a lot of text";
biggerString.substring(5);
//output : "is a lot of text"
biggerString.substring(5, 13);
//output : "is a lot"
biggerString.indexOf("lot");
//output : 10
- A.charAt(인덱스)
- 해당 인덱스에 있는 단어, 또는 값을 반환해준다
- A.substring(시작 인덱스, 미만 인덱스)
- 슬라이싱이 가능하다
- 즉 특정 인덱스부터 반환해주거나, 반환하고 싶은 값의 인덱스의 범위를 지정해 줄 수 있다
- A.length()
- 문자열의 길이를 반환해준다
- A.indexOf("문자열")
- 입력한 문자열의 시작점의 인덱스를 반환해준다
- 같은 문자가 있다면, 제일 처음에 등장하는 문자열의 인덱스를 반환해준다
- A.lastIndexOf("문자열")
- 문자열을 넣었을 때, 중복되는 문자가 있을 수 있다
- 그 중복되는 문자 중, 제일 마지막에 있는 문자의 인덱스를 반환해 준다
- A.contains("문자열")
- A 안에, 해당 문자열이 있는지 확인해준다
- true or false로 반환
- A.startsWith("문자열")
- A 가 해당 문자열로 시작하는지 확인해준다
- true or false로 반환
- A.endsWith("문자열")
- A 가 해당 문자열로 끝나는지 확인해준다
- A.isEmpty()
- A 가 비어 있는지 없는지 확인해준다
- A.equals("문자열")
- A 가 해당 문자열과 같은지 확인해준다
- A.equalsIgnoreCase("문자열")
- 대소문자를 무시한채로, A 와 문자열이 같은지 확인해준다
String의 불변객체
문자열의 값은 바뀔 수 없다
- .concat("문자열")
- 문자열을 추가해서 출력만 해주는 것이다
- 즉 기존 문자열의 값을 바꾸는 것이 아니다
- 해당 값을 사용하려면, 새로운 변수에, 해당 값을 저장해야 한다
- .toUpperCase()
- 모든 알파벳을 대문자로 만들어 준다
- .toLowerCase()
- 모든 알파벳을 소문자로 만들어 준다
- .trim()
- 문자열 양 옆에, 빈 공간이 있으면, 그 빈 공간을 없애준다
String Concatenation
결합 하는 것
jshell> 1 + 2
$12 ==> 3
jshell> "1" + 2
$13 ==> "12"
jshell> 1 + 2 + "3"
$14 ==> "33"
jshell> "3" + "7"
$15 ==> "37"
jshell> System.out.println("The Value is " + 20 + 20)
The Value is 2020
jshell> System.out.println("The Value is " + (20 + 20))
The Value is 40
- 숫자끼리는 그냥 더해진다
- 숫자와 문자열이 있으면, 문자열로 바뀐다
jshell> String.join(",", "2", "3", "A");
$18 ==> "2,3,A"
jshell> String.join(",", "A", "B", "C");
$19 ==> "A,B,C"
jshell> String.join(",", "A");
$20 ==> "A"
- 어떻한 문자, 또는 부호로, 값들을 나누고 싶으면 String.join 을 사용한다
- 제일 첫 argument를 통해, 값들을 나눠준다
jshell> "abcd".replace("a", "z");
$23 ==> "zbcd"
jshell> "aaabbcd".replace("a", "z");
$24 ==> "zzzbbcd"
jshell> "aaabbcd".replaceFirst("a", "z");
$25 ==> "zaabbcd"
- 특정 알파벳을 바꿔주는 것이다
- 그냥 .replace() 만 사용하면, 모든 알파벳을 바꿔준다
- .replaceFirst() : 제일 먼저 나오는 알파벳을 바꿔준다
'Skill Stacks > Java' 카테고리의 다른 글
15. Java Wrapper 클래스, Dates (0) | 2023.05.28 |
---|---|
14. Java String 대체 클래스 (0) | 2023.05.27 |
12. Java 반복문 (0) | 2023.05.19 |
11. Java 조건문 (0) | 2023.05.19 |
10. Java 기본 데이터 타입 (Boolean, char) (0) | 2023.05.17 |