스터디 공부하면서 정리한 내용 옮겨 적기 : )
사실 공부하면서 정리하기 전 까지 스트링도 기본 타입인 줄 알았다.. 이전에 참조 타입과 기본 타입에 대해 정리를 한 적이 있는데 그 때 뭘 공부했는지 잘 모르겠을 정도로 다시 보며 오..이런 내용도 있었구나 하는 것이 많았다. 그래서 다시 정리를 하는 게 맞다고 생각했고 한 번 더 적는다.
하핫... 😅 나를 위해서다...
내가 선택한 질문은 "String은 기본 데이터 타입입니까?, String 클래스의 일반적인 메서드는 무엇이 있나요?" 두 가지 였다.
🔴String 이란?
String은 기본 데이터 타입인가?
💬 아닙니다. String 데이터는 문자열을 표현하고 다루기 위한 “참조 데이터 타입”입니다. String은 클래스로 기본형 데이터가 아닌 "객체"라고 할 수 있습니다.
따라서, 값 저장 시에도 stack 영역에 저장되지 않고 heap 메모리 영역에 저장되게 되며 그 주소값을 참조하는 변수가 stack 메모리에 쌓이게 됩니다.
📖 추가 공부 자료 📖
자바에서 데이터 타입이란 변수의 메모리 저장 방식과 데이터 처리 방법을 명시적으로 알려주는 역할을 한다. 데이터 타입은 크게 기본형과 참조형으로 나눌 수 있다.
1. 기본 데이터 타입(Primarity Data Type)
변수에 실제 값을 저장한다.
예를 들어, 물건이 있을 때 물건을 바로 가리키는 것을 의미할 수 있다.
- 논리형(boolean)
- 문자형(char)
- 정수형(byte, short, int, long)
- 실수형(float, double)
✅ 기본값(default) 값이 정해져 있다.
- 기본값으로 null 값을 가질 수 없다.
✅ 변수의 선언과 동시에 메모리를 생성한다.
✅ 모든 값의 타입은 메모리의 스택(stack)에 저장된다.
✅ 변수에 실제 값을 저장한다.
2. 참조형 데이터 타입(Reference Data Type)
참조형 데이터는 값을 "참조"하는 데이터 형식으로 위의 8가지를 제외한 모든 자료형을 말한다.
실제 값이 아닌 자료가 저장된 공간의 주소를 저장한다.
예를 들어, 물건이 있는 위치를 알려준다.
- 클래스(class)
- 배열(Array)
- 인터페이스(Interface)
- 열거형(Enum)
- List, Map, Set …
✅ 참조형 데이터는 개발자에 의해 생성되며 java를 통해 생성되지 않는다. (String 제외)
✅ 메서드를 호출해서 사용이 가능하다.
✅ 참조형의 기본 값은 null 이다.
✅ 메모리의 힙(heap)에 값을 저장하고, 주소값을 참조하는 변수가 stack 메모리에 쌓이게 된다.
타입 | 기본값 | 할당되는 메모리 크기 |
배열(Array) | Null | 4 byte (객체의 주소값) |
열거(Enumeration) | Null | 4 byte (객체의 주소값) |
클래스(Class) | Null | 4 byte (객체의 주소값) |
인터페이스(Interface) | Null | 4 byte (객체의 주소값) |
⭐ 기본형을 참조형으로 변환하는 것을 오토박싱 이라고 하고 참조형을 기본형으로 변환하는 것을 언 박싱 이라고 한다.
🔻 참고 자료
🔗 Oracle Primitive Data Types 공식문서
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
🔗 w3c schools Java Non-Primitive Data Types
https://www.w3schools.com/java/java_data_types_non-prim.asp
🔗 java JAVA 데이터 타입 종류 총정리
https://inpa.tistory.com/entry/JAVA-☕-기본-자료형-종류-총정리-int-double-char-String
🔗 Oracle String 공식 문서서
https://docs.oracle.com/javase/8/docs/api/java/lang/String.html
String 클래스의 일반적인 메서드는 무엇이 있나요?
💬
String 클래스에는 정말 많은 메서드가 있습니다.
charAt(int index), concat(String str), contains(CharSequence s), equals(Object anObject), indexOf(int ch), length(String str), isEmpty(), replace(char oldChar, char newChar), split(String regex), toLowerCase(), toUpperCase(), trim(), substring(int beginIndex, int endIndex) 등
🗒️ 각 메서드에 대한 사용 예
package string;
import java.util.Arrays;
public class StringExample {
public static void main(String[] args) {
String str = "Let's cheer up this week!";
char character = str.charAt(6);
System.out.println("Character at index 6: " + "" + character);
// index 6번째 char 출력
// 출력: Character at index 6: c
String concatenated = str.concat(" We can do it!");
System.out.println("Concatenated string: " + concatenated);
//내용 추가(덧붙이기)
// 출력: Concatenated string: Let's cheer up this week! We can do it!
boolean contains = str.contains("cheer");
System.out.println("Contains 'cheer'? " + contains);
// "cheer"라는 글자를 포함하고 있는지? true or false
// 출력: Contains 'cheer'? true
boolean equals = str.equals("Let's cheer up this week!");
System.out.println("Equals to 'Let's cheer up this week!'? " + equals);
// Let's cheer up this week! 라는 문장인지? true or fasle
// 출력: Equals to 'Let's cheer up this week!'? true
int indexOf = str.indexOf('u');
System.out.println("Index of 'u': " + indexOf);
// 'u' 라는 문자의 인덱스 위치
// 출력: Index of 'u': 12
int length = str.length();
System.out.println("Length: " + length);
// string의 길이
// 출력: Length: 25
boolean isEmpty = str.isEmpty();
System.out.println("Is empty? " + isEmpty);
// str 이 빈 문자열인지?
// 출력: Is empty? false
String replaced = str.replace('e', 'o');
System.out.println("Replaced string: " + replaced);
// e를 모두 o로 바꿔라
// 출력: Replaced string: Lot's choor up this wook!
String[] splitArray = str.split(" ");
System.out.println("Split array: " + Arrays.toString(splitArray));
// " "(공백)으로 나누기 -> 배열에 넣기
// 출력: Split array: [Let's, cheer, up, this, week!]
String lowercase = str.toLowerCase();
System.out.println("Lowercase: " + lowercase);
// 소문자 변경
// 출력: Lowercase: let's cheer up this week!
String uppercase = str.toUpperCase();
System.out.println("Uppercase: " + uppercase);
// 대문자 변경
// 출력: Uppercase: LET'S CHEER UP THIS WEEK!
String trimmed = " " + str.trim() + " ";
System.out.println("Trimmed: " + trimmed);
// String 앞 뒤 공백 제거
// 출력: Trimmed: Let's cheer up this week!
String substring = str.substring(6, 15);
System.out.println("Substring from index 6 to 15: " + substring);
// 7부터 15자리 문자까지 출력
// 출력: Substring from index 6 to 15: cheer up(공백)
}
}
🔗코드 실행 가능 사이트
https://replit.com/@luminousolding/StringExample#Main.java
🔻 참고 자료
🔗 https://docs.oracle.com/javase/8/docs/api/java/lang/String.html
이렇게 오늘의 정리를 끝 마쳤다 : )
할까 말까 하다가 스터디 노션 페이지를 만들었다!
일 할 때 항상 기록이 중요하다, 증거가 중요하다, 무엇이든 기록하는 습관을 가져라 하셨던 것이 계속 생각이 났고 너무 너무 너무 찝찝했다. 이전에 SQL 공부하면서 봤던 자료들, 그리고 공유했던 과제들도 조금씩 정리해볼까 한다.
스터리를 꾸준히 했다면 꾸준히 했다는 증거를 보여줄 수 있는 것이 있어야지!
하암... 이제 조금은 마음이 편하지만 아직도 완벽하게 마음이 편하지는 않다ㅎㅎ
그래도 주말동안해야지! 했던 것들을 못 할 줄 알았는데 다 해서 너무 다행이고 뿌듯하다.
다음주... 잘 할 수 있겠지..? 화이팅이다!
'LANGUAGE > JAVA' 카테고리의 다른 글
[JAVA] Array, ArrayList, LinkedList 비교하기 / 차이점 (2) | 2023.06.26 |
---|---|
[JAVA] 자바 컨테이너(컬렉션 프레임워크 / Collection Framework)란? (0) | 2023.06.25 |
[JAVA] 제네릭(Generic)이란? / 컬렉션과 데이터 구조 이해하기 (0) | 2023.05.19 |
[자료구조] 그래프(Graph)란? / 인접 행렬(Adjacency Matrix)과 인접 리스트(Adjacency List) (1) | 2023.05.17 |
[자료구조] 트리 구조 (Tree) / 이진 트리 (Binary Tree) (0) | 2023.05.16 |