일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- LG
- 지도학습
- 티스토리챌린지
- Machine Learning
- LLM
- 회귀
- Classification
- 머신러닝
- gpt
- LG Aimers
- ChatGPT
- LG Aimers 4th
- 해커톤
- regression
- PCA
- 분류
- 딥러닝
- AI
- OpenAI
- GPT-4
- supervised learning
- deep learning
- 오블완
Archives
- Today
- Total
SYDev
[혼자 공부하는 자바] Chapter 5. 참조 타입 본문
데이터 타입 분류
- 자바의 데이터 타입은 primitive type(기본 타입)과 reference type(참조 타입)으로 분류된다.
- String type은 참조 타입 변수 -> heap 영역에 저장
메모리 사용 영역
- method area
- 바이트코드 파일을 읽은 내용이 저장되는 영역
- 클래스별로 상수, 정적 필드, 메소드 코드, 생성자 코드 등 저장
- heap area
- 객체가 생성되는 영역
- 객체의 주소는 method area&stack area의 상수와 변수에서 참조 가능
- stack area
- method를 호출할 때마다 생성되는 frame이 저장되는 영역
- method 호출이 끝나면 frame은 자동 제거
- frame 내부에는 local variable stack 존재 -> 기본 타입 변수와 참조 타입 변수 생성&제거
Garbage Collector
- java에서는 객체를 직접 제거하는 방법을 제공 X
- 객체의 참조를 없애서, 객체 제거 가능
String hobby = "여행";
hobby = "영화";
-> 기존 "여행"을 저장하던 객체는 garbage object가 된다.
-> java에서는 해당 객체를 garbage collector를 실행시켜 자동으로 제거
문자열 타입
- java는 문자열 리터럴이 동일하다면 String 객체를 공유하도록 설계되어 있다.
- 내부 문자열만 비교하는 경우에는 equals() method 사용
String name1 = "홍길동";
String name2 = "홍길동";
String name3 = new String("홍길동");
name1 == name2 // true
name1 == name3 // false
- charAt(): 특정 위치의 문자 return
- length(): 문자의 개수 return
- replace(): 기존의 문자열의 특정 부분을 대체한 새로운 문자열 return
- substring(): 문자열의 특정 위치에서 문자열을 잘라낸 새로운 문자열 return
- indexOf()
- split(): 구분자를 기준으로 분리된 배열 return
배열 타입
- 동종의 값만 보관
- 정적인 크기를 가짐
String[] array1 = { "Spring", "Summer", "Fall", "Winter" };
String[] array2;
array2 = { value1, value2, .. }; //컴파일 에러
array2 = new String[] { value1, value2, value3, ... };
-> 메소드 호출 시에도 마찬가지
- new 연산자는 해당 길이의 배열을 생성하고, 배열의 번지를 return
type[] variable = null;
variable = new type[length];
- array.length; -> read만 가능한 필드
- System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length): 배열 복사 method
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
- 배열 항목 반복을 위한 향상된 for문
package ch5;
public class AdvancedForExample {
public static void main(String[] args) {
int[] scores = { 95, 71, 84, 93, 87 };
int sum = 0;
for (int score: scores) {
sum += score;
}
System.out.println("점수 총합 = " + sum);
}
}
- main() method의 String[] 매개변수 용도
- terminal에서 프로그램을 실행할 때, 다음과 같이 매개변수가 필요할 수 있음
java Sum 10 20
- 해당 변수들은 다음과 같은 형태로 접근 가능
String x = args[0];
String y = args[1];
package ch5;
public class MainStringArrayArgument {
public static void main(String[] args) {
if(args.length != 2) {
System.out.println("프로그램 입력값 부족");
System.exit(0);
}
String strNum1 = args[0];
String strNum2 = args[1];
int num1 = Integer.parseInt(strNum1);
int num2 = Integer.parseInt(strNum2);
int result = num1 + num2;
System.out.println(num1 + " + " + num2 + " = " + result);
}
}
열거(Enum) 타입
- 열거 타입을 사용하기 위해서는, 열거 타입 이름으로 .java 소스 파일을 생성하고 한정된 값을 코드로 정의해야 함
package ch5;
public enum Week {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
Week today = Week.SUNDAY;
참고자료
'Programming Lang > Java' 카테고리의 다른 글
[혼자 공부하는 자바] Chapter 4. 조건문과 반복문 (0) | 2025.01.18 |
---|---|
[혼자 공부하는 자바] Chapter 3. 연산자 (0) | 2025.01.18 |
[혼자 공부하는 자바] Chapter 2. 변수와 타입 (0) | 2025.01.18 |
[혼자 공부하는 자바] Chapter 1. 자바 시작하기 (5) | 2025.01.17 |