Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- javascript
- mco
- FCF
- 객체지향
- 미국주식
- 오버라이딩
- 프로그래머스
- 자바
- 백준
- Java
- StringBuffer
- 배당성장
- 알고리즘
- 무디스
- 인플레이션
- 현금흐름표
- XLF
- 금리인상
- 그리디 알고리즘
- 접근제어자
- S&P500
- 금리인하
- 잉여현금흐름
- etf
- 주식
- 기업분석
- 제태크
- 주린이
- 다형성
- object
Archives
- Today
- Total
오늘의하루
[JAVA] String클래스 본문
1. String 클래스 정보
- 문자열을 다루기 위한 클래스
- 데이터(char []) + 메서드(문자열 관련)
- 내용을 변경할 수 없는 불변(immutable) 클래스이다.
class StringTest1{
String a = "a";
String b = "b";
void StringSum(){
a = a + b; // "ab"
}
}
어떻게 내용을 변경할 수 없는 불변의 String클래스가 변경이 되는지에 대해 알아보겠습니다.
- 참조 변수 a에는 문자열 리터널 "a"의 주소가 담깁니다. (예: 주소 : 0X100)
- 참조 변수 b에는 문자열 리터널 "b"의 주소가 담깁니다. (예: 주소 : 0X200)
- 문자열 리터널 "a"와 "b"를 합친 결과는 새로운 문자열 리터널 "ab"가 됩니다. (예: 주소 : 0X300)
- 참조 변수 a에 문자열 리터럴 "ab"의 주소(0X300)를 대입합니다.
내용이 변경되는 게 아니라 새로운 값을 받는 개념이며 이러한 문자열의 덧셈 연산은 성능이 떨어지는 편입니다.
이러한 문제를 해결하기 위해 StringBuffer클래스를 사용하는 것이 좋습니다.
- 문자열의 결합이나 변경이 잦을때 StringBuffer클래스 사용
2. 리터럴과 생성의 차이
class StringTest2{
// str1과 str2의 주소값은 같다.
String str1 = "abc";
String str2 = "abc";
// str3와 str4의 주소값은 다르다.
String str3 = new String("abc");
String str4 = new String("abc");
}
- 문자열 리터널 값이 같다면 참조 변수에 대입되는 주소 값은 모두 같습니다.
- 새로운 String인스턴스를 생성하는 경우는 각자 다른 인스턴스이기 때문에 주소 값이 다릅니다.
3. 초기화
class StringTest3{
String str1 = ""; // 빈문자열로 초기화
String str2 = new String(""); // 빈문자열로 초기화
char c = ' '; // 공백으로 초기화 (최소 공백 1개)
// Java에서는 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능합니다.
int[] iArr = {};
char[] chArr = new char[0];
}
'JAVA' 카테고리의 다른 글
[JAVA] StringBuffer클래스의 메서드 (0) | 2022.08.08 |
---|---|
[JAVA] String클래스의 생성자와 메서드 (0) | 2022.08.05 |
[JAVA] Object Class 1편 equals hashCode toString clone 메서드 (0) | 2022.08.04 |
[JAVA] 예외처리 (0) | 2022.08.03 |
[JAVA] 객체지향 추상클래스 인터페이스 내부클래스 (0) | 2022.08.03 |
Comments