국비교육 6일차 JAVA
기본자료형은 데이터 저장 및 4칙연산에서만 사용하는 것이고, wrapper 클래스는 데이터 저장 및 4칙연산 뿐만아니라 아주 다양한 기능의 메소드가 제공되므로 다방면으로 사용되어진다.
기본자료형 : boolean, byte, shore, int, long, char, float, double
Wrapper 클래스 : Boolean, Byte, Shore, Integer, Long, Character, Float, Double
char ch = 'a';
System.out.println("ch => " + ch); // ch => a
Character chr = 'a';
System.out.println("chr => " + chr); // chr => a
Character ch1 = 'c';
if(Character.isUpperCase(ch1)) { // 대문자인지 알아본다.
System.out.println(ch1 + "는 대문자 입니다.");
}
else if(Character.isLowerCase(ch1)) { // 소문자인지 알아본다.
System.out.println(ch1 + "는 소문자 입니다.");
}
else if(Character.isDigit(ch1)) { // 숫자인지 알아본다.
System.out.println(ch1 + "는 숫자 입니다.");
}
else {
System.out.println(ch1 + "는 특수문자 입니다.");
}
// c는 소문자 입니다.
int a1 = 10;
Integer a2 = new Integer(a1); // Boxing(박싱)
System.out.println("a2 => " + a2); // a2 => 10
int b1 = 10;
Integer b2 = b1; // Auto Boxing(박싱)
System.out.println("b2 => " + b2); // b2 => 10
Integer a3 = new Integer(20);
int a4 = a3.intValue(); // Unboxing(언박싱)
System.out.println("a4 => " + a4); // a4 => 20
int a5 = new Integer(20); // Auto Unboxing(오토언박싱)
System.out.println("a5 => " + a5); // a5 => 20
double db1 = 10.123, db2 = 20.567;
System.out.println("db1 =>" + Math.round(db1) + ", db2 => " + Math.round(db2));
// db1 =>10, db2 => 21
// 소숫점 첫째자리까지 나타내며 반올림하기
System.out.println("db1 => " + Math.round(db1*10)/10.0 + ", db2 => " + Math.round(db2*10)/10.0);
// db1 => 10.1, db2 => 20.6
double db3 = 10.0, db4 = 10.3, db5 = 10.9;
System.out.println("db3 => " + Math.ceil(db3) + ", db4 => " + Math.ceil(db4) + ", db5 => " + Math.ceil(db5));
// db3 => 10.0, db4 => 11.0, db5 => 11.0
double db3 = 10.0, db4 = 10.3, db5 = 10.9;
System.out.println("db3 => " + Math.floor(db3) + ", db4 => " + Math.floor(db4) + ", db5 => " + Math.floor(db5));
// db3 => 10.0, db4 => 10.0, db5 => 10.0
int a = 20, b = -30;
System.out.println("a => " + Math.abs(a) + ", b => " + Math.abs(b));
// a => 20, b => 30
String name1 = new String("홍길동");
String name2 = new String("홍길동");
if (name1 == name2) {
// 객체 사이에서 == 는 메모리 상에 올라가있는 주소를 비교하는 것이다.
System.out.println(name1 + "는(은) " + name2 + "과(와) 메모리 상의 주소가 같습니다.");
}
else {
System.out.println(name1 + "는(은) " + name2 + "과(와) 메모리 상의 주소가 같지 않습니다.");
}
// 홍길동는(은) 홍길동과(와) 메모리 상의 주소가 같지 않습니다.
if (name1.equals(name2)) { // name1과 name2의 값이 같습니까?
// String name1 객체의 값("홍길동")과 String name2 객체의 값("홍길동")이 같으면 true
// String name1 객체의 값("홍길동")과 String name2 객체의 값("홍길동")이 다르면 false
System.out.println(name1 + "의 값과 " + name2 + "의 값은 같습니다.");
}
else {
System.out.println(name1 + "의 값과 " + name2 + "의 값은 같지 않습니다.");
}
// 홍길동의 값과 홍길동의 값은 같습니다.
객체 사이에서의 == 는 메모리 상에 올라가 있는 주소를 비교하는 것이다.
String name1 = new String("홍길동");
과 같이 new String 에 값을 넣었을 때에는 객체의 주소를 비교하는 것이고, String name3 = "이순신";
과 같이 new String을 사용하지 않고 바로 값을 넣었을 경우에는 각각의 값을 비교하는 것이다.
하지만, 이를 매번 구분하기는 어려우니 equals를 사용하는 것이 더 낫다.
String name7 = "홍길동";
String name8 = null;
if (name8.equals(name7)) { //name8이 null이므로 java.lang.NullPointerException 오류가 발생함.
System.out.println(name8 + "의 값과 " + name7 + "의 값은 같습니다.");
}
else {
System.out.println(name8 + "의 값과 " + name7 + "의 값은 같지 않습니다.");
}
String name7 = null;
String name8 = "홍길동";
if( (name7 == null && name8 == null) || (name7 != null && name7.equals(name8)) ){
System.out.println(name7 + "의 값과 " + name8 + "의 값은 같습니다.");
}
else {
System.out.println(name7 + "의 값과 " + name8 + "의 값은 같지 않습니다.");
}
// null의 값과 홍길동의 값은 같지 않습니다.
int in = 2;
switch (in) { // switch() 괄호 속에는 byte, int, short, char, String 타입은 가능함.
// switch() 괄호 속에는 long, float, double, 일반적인 String을 제외한 객체 타입은 불가함.
case 1: // in에 입력한 값이 1과 같다면?
System.out.println("숫자 1 입니다.");
break; // break; 뜻은 switch(in) { } 부분을 빠져나가라는 뜻이다.
case 2:
System.out.println("숫자 2 입니다.");
break;
case 3:
System.out.println("숫자 3 입니다.");
break;
default: // operator 값이 1,2,3이 아닌 기타 나머지 모든 값이라면
// if문에서의 else
System.out.println("3 이하의 숫자만 가능합니다.");
break;
}