JRE

JDK

정리, JRE는 자바 실행 환경이고, JDK는 자바 개발 도구이다. 자바 프로그램을 개발하려면 JDK를 다운받으면 된다.
==
equals()
정리
정리, 해시 테이블에서 같은 해시 버킷에 저장되어 동일한 해시 코드 값을 가지고 있더라도 실제 두 객체의 내용이 다르다면 ‘equals()’ 메서드는 ‘false’를 반환하게 된다.
→ ‘equals()’ 메서드의 결과에 따라 반환 값이 결정된다.
| String | StringBuilder | StringBuffer |
|---|---|---|
| 불변 | 가변 | 가변 |
| 스레드 안전 | 스레드 불안전 | 스레드 안전 → 멀티스레드 환경에 적합 |
정리, 각 클래스의 주요 차이점은 불변성 여부와 스레드 안전성이다.
String 클래스
StringBuilder 클래스
StringBuffer 클래스
다르다.
저장된 공간이 다르다. → 저장된 공간의 메모리 주소도 다름.

String str = ”i”;
String str = new String(”i”);
정리, ‘”i”’와 ‘new String(”i”)’는 두 개의 다른 문자열 객체를 생성하며, 메모리 상에서 다른 위치에 저장된다.
String str = "abcde";
StringBuilder reversed = new StringBuilder(str);
reversed.reverse();
String result = reversed.toString();
System.out.println(result); //출력: edcba
String str = "abcde";
char[] charArray = str.toCharArray();
char[] reversed = new char[charArray.length];
for (int i = charArray.length-1; i >= 0; i--) {
reversed[charArray.length-1-i] = charArray[i];
}
String result = new String(reversed);
System.out.println(result); //출력: edcba
| 메소드 | 설명 |
|---|---|
| char charAt(int index) | 해당 문자열의 특정 인덱스에 해당하는 문자를 반환함. |
| int compareTo(String str) | 해당 문자열을 인수로 전달된 문자열과 사전 편찬 순으로 비교함. |
| int compareToIgnoreCase(String str) | 해당 문자열을 인수로 전달된 문자열과 대소문자를 구분하지 않고 사전 편찬 순으로 비교함. |
| String concat(String str) | 해당 문자열의 뒤에 인수로 전달된 문자열을 추가한 새로운 문자열을 반환함. |
| int indexOf(int ch) int indexOf(String str) | 해당 문자열에서 특정 문자나 문자열이 처음으로 등장하는 위치의 인덱스를 반환함. |
| int indexOf(int ch, int fromIndex) int indexOf(String str, int fromIndex) | 해당 문자열에서 특정 문자나 문자열이 전달된 인덱스 이후에 처음으로 등장하는 위치의 인덱스를 반환함. |
| int lastIndexOf(int ch) | 해당 문자열에서 특정 문자가 마지막으로 등장하는 위치의 인덱스를 반환함. |
| int lastIndexOf(int ch, int fromIndex) | 해당 문자열에서 특정 문자가 전달된 인덱스 이후에 마지막으로 등장하는 위치의 인덱스를 반환함. |
| String[] split(String regex) | 해당 문자열을 전달된 정규 표현식(regular expression)에 따라 나눠서 반환함. |
| String substring(int beginIndex) | 해당 문자열의 전달된 인덱스부터 끝까지를 새로운 문자열로 반환함. |
| String substring(int begin, int end) | 해당 문자열의 전달된 시작 인덱스부터 마지막 인덱스까지를 새로운 문자열로 반환함. |
| String toLowerCase() | 해당 문자열의 모든 문자를 소문자로 변환함. |
| String toUpperCase() | 해당 문자열의 모든 문자를 대문자로 변환함. |
| String trim() | 해당 문자열의 맨 앞과 맨 뒤에 포함된 모든 공백 문자를 제거함. |
| length() | 해당 문자열의 길이를 반환함. |
| isEmpty() | 해당 문자열의 길이가 0이면 true를 반환하고, 아니면 false를 반환함. |
final 키워드는 클래스, 메서드 및 변수에 사용할 수 있으며, 해당 요소를 수정할 수 없도록 만듭니다.final을 사용한 클래스나 메서드는 상속되지 않고, 재정의되거나 수정되지 않습니다.final 키워드를 클래스에 적용하면 해당 클래스는 상속될 수 없으므로 추상 클래스와 함께 사용하는 것은 일반적으로 모순됩니다. 추상 클래스는 하위 클래스에서 구현이 제공되어야 하므로, 상속을 허용하지 않는 final 클래스와는 목적과 설계가 다릅니다.final 키워드를 동시에 사용하는 것은 일반적으로 의미가 없습니다. 추상 클래스는 상속을 통해 확장하고 서브클래스에서 구체적인 동작을 제공하기 위해 사용됩니다.final 키워드를 사용하되, 추상 클래스로 만들지 않는 것이 일반적인 접근 방법입니다.