Monday
3. Java 참조 타입(스트링, 배열, enum) 본문
기본 타입 vs 참조 타입
기본 타입은 실제 데이터 값을 저장하지만, 참조 타입은 메모리 주소를 저장합니다.
// 기본 타입 예시
int number = 100; // 실제 값 저장
// 참조 타입 예시
String name = "홍길동"; // 메모리 주소 참조
참조 변수 연산
참조 변수 비교 예제:
public class ReferenceCompareExample {
public static void main(String[] args) {
String str1 = new String("Hello");
String str2 = new String("Hello");
String str3 = str1;
// 객체 주소 비교
System.out.println(str1 == str2); // false
System.out.println(str1 == str3); // true
// 내용 비교 (권장)
System.out.println(str1.equals(str2)); // true
}
}
Null과 NullPointerException
안전한 null 처리 방법:
public class NullSafetyExample {
public static void printLength(String str) {
// null 체크 후 안전하게 처리
if (str != null) {
System.out.println("문자열 길이: " + str.length());
} else {
System.out.println("문자열이 null입니다.");
}
}
public static void main(String[] args) {
String validString = "Hello";
String nullString = null;
printLength(validString); // 정상 처리
printLength(nullString); // null 안전하게 처리
}
}
String 타입 심화
public class StringExample {
public static void main(String[] args) {
// 문자열 리터럴은 동일 객체 참조
String s1 = "Java";
String s2 = "Java";
String s3 = new String("Java");
System.out.println(s1 == s2); // true
System.out.println(s1 == s3); // false
System.out.println(s1.equals(s3)); // true
}
}
05-2 배열 마스터하기
배열 생성과 초기화의 베스트 프랙티스
public class ArrayMasterExample {
public static void main(String[] args) {
// 다양한 배열 초기화 방법
int[] scores = {90, 85, 95}; // 직접 초기화
// 동적 배열 생성
int[] dynamicScores = new int[5];
Arrays.fill(dynamicScores, 100); // 모든 요소를 100으로 초기화
// 객체 배열
Person[] people = new Person[3];
people[0] = new Person("홍길동");
people[1] = new Person("김철수");
// 향상된 for문
for (Person person : people) {
System.out.println(person.getName());
}
// 배열 복사
int[] originalArray = {1, 2, 3, 4, 5};
int[] copiedArray = Arrays.copyOf(originalArray, 10);
}
}
class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
05-3 열거 타입: 의미 있는 상수 그룹
public enum DayOfWeek {
MONDAY("월요일"),
TUESDAY("화요일"),
WEDNESDAY("수요일"),
THURSDAY("목요일"),
FRIDAY("금요일"),
SATURDAY("토요일"),
SUNDAY("일요일");
private final String korean;
DayOfWeek(String korean) {
this.korean = korean;
}
public String getKorean() {
return korean;
}
}
public class EnumExample {
public static void main(String[] args) {
DayOfWeek today = DayOfWeek.WEDNESDAY;
switch (today) {
case SATURDAY:
case SUNDAY:
System.out.println("주말입니다.");
break;
default:
System.out.println("평일입니다.");
}
// 열거 타입의 메서드
System.out.println(today.name()); // WEDNESDAY
System.out.println(today.ordinal()); // 인덱스 (2)
System.out.println(today.getKorean()); // 수요일
}
}
'언어 > Java' 카테고리의 다른 글
5. Java 고급 문법 (1) Generics (0) | 2024.11.10 |
---|---|
4. Java 객체지향 프로그래밍 (클래스, 상속, 다형성, 인터페이스) (1) | 2024.11.10 |
2. Java 기본 문법(데이터 타입, 변수, 제어문) (0) | 2024.11.10 |
1. 실무에서 자주 사용하는 Java 코딩 컨벤션 (0) | 2024.11.10 |
[Java8] Optional 이란? (0) | 2022.04.15 |
Comments