본 Java Programming 글은 이것이 자바다를 기반으로 작성하였음을 명시합니다.
객체를 참조하는 배열
public void Array1() {
String[] strArray = new String[3];
strArray[0] = "Java";
strArray[1] = "Java";
strArray[2] = new String("Java");
System.out.println(strArray[0] == strArray[1]); // true ( 같은 객체를 참조 )
System.out.println(strArray[0] == strArray[2]); // false ( 다른 객체를 참조 )
System.out.println(strArray[0].equals(strArray[2])); // true ( 문자열이 동일 )
}
이처럼 객체를 참조하는 배열을 만들 수 있다.
객체 복사하기
public void Array2() {
String[] oldStrArray = {"java", "array", "copy"};
String[] newStrArray = new String[5];
System.arraycopy(oldStrArray, 0, newStrArray, 0, oldStrArray.length);
for(int i = 0; i < newStrArray.length; i++) {
System.out.print(newStrArray[i] + ", ");
}
}
System.arraycopy( 원본 배열, 원본 배열에서 복사할 항목의 시작 인덱스, 새 배열, 새 배열에서 붙여넣을 시작 인덱스, 복사할 개수 )
향상된 for문
public void Array3() {
Integer[] scores = new Integer[]{95, 71, 84, 93, 87};
int sum = 0;
for(int score : scores) {
sum += score;
}
System.out.println("점수 총합 = " + sum);
double avg = (double) sum / scores.length;
System.out.println("점수 평균 = " + avg);
}
열거 타입
public enum 열거타입이름 {} 으로 열거타입을 선언했다면 이제 열거 상수를 선언해야 한다. 열거 상수는 열거 타입의 값으로 사용되는데 관례적으로 열거 상수는 모두 대문자로 작성한다.
열거 타입도 하나의 데이터 타입이므로 변수를 선언하고 사용해야 한다. ( 열거타입 변수; )
또한 ( 열거타입 변수 = 열거타입.열거상수 )로 사용할 수 있는데, 열거 상수는 단독으로 사용할 수는 없고 반드시 열거타입.열거상수로 사용된다.
또한 열거 상수도 객체이다. 열거 타입 Week의 경우 MONDAY ~ SUNDAY까지의 열거 상수는 총 7개의 Week 객체로 생성된다. 그리고 메소드 영역에 생성된 열거 상수가 해당 Week객체를 각각 참조하게 된다
Week today = Week.SUNDAY;
와 같이 선언하게 된다면 열거 타입 변수 today는 스택 영역에 생성된다. today에 저장되는 값은 Week.SUNDAY열거 상수가 참조하는 객체의 번지이다. 따라서 열거 상수 Week.SUNDAY와 today 변수는 서로 같은 Week 객체를 참조하게 된다.
today == Week.SUNDAY
열거 객체의 메소드
열거 객체는 열거 상수의 문자열을 문자열을 내부 데이터로 가지고 있다. 메소드는 java.lang.Enum 클래스에 선언된 메소드인데, 열거 객체에서 사용할 수 있는 이유는 모든 열거 타입은 컴파일 시에 Enum 클래스를 상속하게 되어있기 때문이다
public void Array4(String args) {
Week today = Week.TUESDAY;
String name = today.name();
int ordinal = today.ordinal();
int result1 = today.compareTo(Week.SUNDAY);
System.out.println("today name >> " + name);
System.out.println("today ordinal >> " + ordinal);
System.out.println("today compare to SUNDAY >> " + result1);
String strDay = args;
Week weekDay = Week.valueOf(strDay);
if(weekDay == Week.SATURDAY || weekDay == Week.SUNDAY) {
System.out.println("주말 이군요!");
} else {
System.out.println("평일 이군요!");
}
Week[] days = Week.values();
for(Week day : days) {
System.out.println(day);
}
}
public class Main {
public static void main(String[] args) {
Array array = new Array();
if(args.length == 1) {
array.Array4(args[0]);
}
}
}
'School > Java Programming' 카테고리의 다른 글
Java Programming - 중첩 클래스 & 중첩 인터페이스 (0) | 2022.03.17 |
---|---|
Java Programming - Interface (0) | 2022.03.10 |
Java Programming - Inheritance (0) | 2022.03.09 |
Java Programming - Class (0) | 2022.03.09 |
Java Programming - java의 동작 방식 (0) | 2022.03.03 |