220608 TIL

Yeoni·2022년 6월 8일
0

국비교육TIL

목록 보기
6/41

국비교육 6일차 JAVA

1. Wrapper 클래스

1) 기본자료형과 Wrapper 클래스의 차이

기본자료형은 데이터 저장 및 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
  • Wrapper 클래스
Character chr = 'a';
System.out.println("chr => " + chr); 	// chr => a
  • Wrapper 클래스의 메소드
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는 소문자 입니다. 

2) Boxing(박싱), Autoboxing(오토박싱)

  • Boxing(박싱) : 기본 자료형으로 되어진 변수를 객체타입인 Wrapper 클래스 타입의 객체로 만들어 주는 것이다.
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

3) Unboxing(언박싱), Autounboxing(오토언박싱)

  • Unboxing(언박싱) : Wrapper 클래스로 되어진 객체를 기본 자료형으로 만들어 주는 것이다.
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 

2. Math 클래스

1) 반올림

  • Math.round()
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

2) 올림

  • Math.ceil()
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

3) 내림

  • Math.floor
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

4) 절대값

  • Math.abs
int a = 20, b = -30;
System.out.println("a => " + Math.abs(a) + ", b => " + Math.abs(b));
// a => 20, b => 30	

3. if 문

1) if문에서 equals와 == 차이

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를 사용하는 것이 더 낫다.

2) if문에서의 null 값의 오류

  • equals 앞에 오는 변수가 null 일 경우 java.lang.NullPointerException 오류 발생 예시
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의 값과 홍길동의 값은 같지 않습니다.

4. switch - case문

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;
}
profile
이런 저런 기록들

0개의 댓글