Java 기본 문법 중 삼항연산, 배열에 대해 알아보자.
Q. 삼항 연산이란?
A. 3개의 피연산자를 필요로 하는 연산자
길어지는 코드를 아주 간결하게 표현하는 것이므로, Syntatic Sugar Code라고도 불린다.
예시를 통해 확인해보자 !
public class hello {
public static void main(String[] args) {
int n ;
if(3>2) {
n = 10;
} else {
n = 20;
}
// sugar code로 바꾸면 ?
n = (3 > 2) ? 10 : 20;
n = 3 > 2 ? 10 : 20;
if-else문으로 길게 이어졌던 코드가 단 1줄로 변신 !
if(n%2 == 0 ) {
n = n/2;
} else {
n = n*3+1;
}
//삼항 연산으로 바꿔보면 ?
n = n % 2 == 0 ? n / 2 : n * 3 + 1;
🍯 꿀팁 🍯 삼항 연산은 print할 때와, 함수의 return 값에도 적용할 수 있다.
//print할 때
if(3>2) {
System.out.println("호랑이");
} else {
System.out.println("사자");
}
//삼항 연산으로 바꿔보면 ?
System.out.println(3 > 2 ? "호랑이" : "독수리");
//함수의 return 값에
return 3 > 2 ? 10:20
}
}
public class hello {
public static void main(String[] args) {
// 1
int[] ar = new int[10];
// 2: test 용도
int[] br = new int[] {1, 2, 3};
// 3: test 용도
int[] cr = {1, 2, 3};
// 4
int num = 10;
int[] dr = new int[num];
// 5: 문자열 관련
String[] er = new String[3];
er[0] = "test1";
er[1] = "test2";
er[2] = "test3";
// 6: 실제 사용
String[] fr = new String[] {"","",""};
// 7: 실제 사용
String[] gr = {"","",""};
// 8: 문제 있는 코드
String str1 = "호랑이";
// 8: 정석 코드, String은 class이고 class 에는 항상 new가 붙는다.
String str2 = new String("호랑이");
// 8: 정석 코드
String[] hr = {
new String("소1"),
new String("소2"),
new String("소3")
};
// 9: 정석 코드
Tiger[] ir = new Tiger[]{
new Tiger(),
new Tiger(),
new Tiger()
};
// 9에서 new Tiger[] 생략 가능
Tiger[] jr = {
new Tiger(),
new Tiger(),
new Tiger()
};
// 10: 정석 코드
String[] kr = new String[3];
kr[0] = "호랑이1;";
kr[1] = "호랑이2;";
요약하자면,
1) 객체 배열 앞에는 "new 객체"가 생략되어 있다.
Tiger[] ir = new Tiger[]{
new Tiger(),
new Tiger(),
new Tiger()
};
Tiger[] lr = new Tiger[3];
lr[0].f1(); // 잘못됨
lr[0] = new Tiger(); //new 사용
lr[0].f1(); // 성립
2) 배열 안 각 객체 마다 new 활용해야 그 안의 메소드를 사용할 수 있다.
// 11
// 부모클래스 객체 = new 자식클래스(); >> 업캐스팅
// 성립하는 코드
A a1 = new B();
A a2 = new C();
A a3 = new D();
// 배열로 만들기
A[] a4 = new A[] {new B(), new C(), new D()};
A[] a5 = new A[3];
a5[0] = new B();
a5[1] = new C();
a5[2] = new D();
// 12: 길이
int[] ar = new int[2];
System.out.println(ar.length);
}
}
class Tiger {
void f1() {}
}
class A {}
class B extends A{}
class C extends A{}
class D extends A{}