티스토리 뷰

학습정리-10-30.txt
0.00MB

1.Wrapper class란?

8개의 기본 자료형을 감싸는 클래스로 자료형을 객체로 다루기 위한 클래스이다.

기본형(primitive type) 래퍼클래스(wrapper class)
byte Byte
char Character
int Integer
float Float
double Double
boolean Boolean
long Long
short Short

래퍼 클래스의 구조도

 

 

 


2. auto unboxing 이란?

래퍼클래스를 이용해 기본형을 객체로 만들어 주는 것을 boxing이라고 한다.

객체에 있는 값을 래퍼 클래스에 있는 함수를 이용해 다시 기본형 값으로 변환해 꺼내오는 것을 unboxing이라고 한다.

 

여기서 객체 생성을 하지 않고 값을 래퍼 클래스에 바로 집넣을 경우 자동을 박싱이 되는데 이를 auto boxing이라고 한다.

또한 기본 자료형에 래퍼 클래스 인스턴스가 오면 auto unboxing이 된다.

래퍼 클래스만 되는 기능이다.

class BoxingTest {
	
	public static void main(String[] args) {
		int num = 10;
		Integer intObj = new Integer(num); // 박싱
		
		double dou = 10;
		dou = intObj.doubleValue(); // 언박싱
		
		short sh = (short)num; // 이전 방식
		sh = intObj.shortValue(); // 강제 형변환 없이 함수를 호출해 사용할 수 있다.
		
		Integer iObj = 10; // 오토 박싱
		Double dObj = 3.14; // 오토 박싱
		// 인스턴스가 와야 할 위치에 기본 자료형 값이 오면 오토 박싱 진행
		
		
		int num1 = iObj; // 오토 언박싱   iObj.intVaule();
		Double num2 = dObj; // 오토 언박싱
		// 기본 자료형 값이 와야 할 위치에 인스턴스가 오면 오토 언박싱 진행

		
		String str = "ABCD";
		String str2 = new String("String");
		// String은 byte로 배열을 생성해 문자 하나씩 아스키 코드로 저장한다.
		
		Integer num3 = 10;
		
		num3++;  // 오토 박싱과 오토 언박싱 동시에 진행!
		System.out.println(num); 
		
		num3 += 3;
		System.out.println(num);
		
		int r = num3 + 5;
		Integer rObj = num3 - 5;
		// 객체로 지정해도 사칙 연산을 마음대로 할 수 있다.

	}
}

.valueOf()는 값을 해당 타입으로 변경해 줄 때 쓰는 함수이다. 자주 쓰이니 기억해 두기!

ex)     Integer.valueOf("1024"); → 문자열을 int형으로 변경   (함수 오버로딩)

 

 

 

 


3.BigInteger 클래스에 대하여 설명하시오. 

매우 큰 정수를 표현하기 위한 클래스가 BigInteger이다. (long 타입 범위를 넘어가는 경우)

import java.math.BigInteger;

public class BigIntegerTest {
	
	public static void main(String[] args) {
		// long형으로 표현 가능한 값의 크기 출력	
		System.out.println("최대 정수 : " + Long.MAX_VALUE); // 정수 최대값
		System.out.println("최소 정수 : " + Long.MIN_VALUE); // 정수 최소값
		
		// 매우 큰 수를 BigInteger 인스턴스로 표현
		BigInteger big1 = new BigInteger("100000000000000000000");
		BigInteger big2 = new BigInteger("-99999999999999999999");
		
		// BigInteger 기반 덧셈 연산
		BigInteger r1 = big1.add(big2);
		System.out.println("덧셈 결과 : " + r1); // 값을 제대로 못 살린다....
		
		// BigInteger 기반 곱셈 연산
		BigInteger r2 = big1.multiply(big2);
		System.out.println("덧셈 결과 : " + r2);
		
		// 인스턴스에 저장된 값을 int형 정수로 반환
		int num = r1.intValueExact();
		System.out.println("From BigInteger : " + num);
		
	}
}

 

 

 

 


4.- 클래스 Person은 이름을 저장하는 필드 구성
- 클래스 Person은 상위 클래스 Object의 메소드 equals()를 오버라이딩하여 이름이 같으면 true를 반환하는 메소드 구현
- 다음과 같은 소스로 클래스 Person을 점검
Person p1 = new Person("홍길동");
System.out.println(p1.equals(new Person("홍길동")));
System.out.println(p1.equals(new Person("최명태")));
결과 
true
flase

class Person{
	private String name;
	
	public Person(String name) {
		this.name = name;
	}
	
	@Override
	public boolean equals(Object obj) {
		if(this.name == ((Person)obj).name)
			return true;
		else
			return false;
	}
}

class PersonTest {
	
	public static void main(String[] args) {
		Person p1 = new Person("홍길동");
		System.out.println(p1.equals(new Person("홍길동")));
		System.out.println(p1.equals(new Person("최명태")));

	}
}

아래와 같이도 가능하다.

	@Override
	public boolean equals(Object obj) {
		if (obj instanceof Person) {
			Person person = (Person) obj;

			if (this.name.equals(person.name)) {
				return true;
			}
		}

		return false;
	}

 

 

 

 


5. 다음 조건을 만족하는 클래스 String의 객체 이용 프로그램을 작성하여 
메소드 equals()와 연산자 == 의 차이를 비교 설명하시오.
String s1 = new String("java");
String s2 = new String("java");
String s3 = s2;
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
System.out.println(s2 == s3);
System.out.println(s2.equals(s3));

class StringEquals {

	public static void main(String[] args) {
		String s1 = new String("java");
		String s2 = new String("java");
		String s3 = s2;
		System.out.println(s1 == s2); // 주소값 비교
		System.out.println(s1.equals(s2)); // 문자열 자체를 비교
		System.out.println(s2 == s3); // s3가 s2를 참조하기 때문에 같은 주소값을 가진다.
		System.out.println(s2.equals(s3)); // 문자열 자체를 비교		
	}
}
//false
//true
//true
//true

equals를 쓰지 않고 String을 ==연산자를 이용해 비교하게 되면 문자열 자체를 비교하는 것이 아니라 주소값을 비교한다.

문자열 자체를 비교하고 싶다면 equals를 사용해야 한다.

(equals의 경우에도 객체가 들어가면 주소값을 비교한다. 객체 내용물 자체를 비교하기 위해서는 오버라이딩이 필요하다.
다만 String(문자열)의 경우 이미 오버라이딩이 돼 있기 때문에 equals를 사용하면 글자 그자체를 비교한다.)

 

 

 



6.아래를 정리하시오.
 - 프로토콜
 -DNS
 -포트 번호

▶ 프로토콜 : 통신 규약을 의미한다.(lte, 5g 등은 무선 프로토콜이다.)

▶ DNS : Domain Name System의 약자로 DNS 서버에 인터넷에서 사용하는 IP 주소를 서로 연관된 도메인 이름과 연결시켜두고 있다가 도메인 이름이나 IP주소 요청이 들어오면 상호 변환되어 해당 정보를 컴퓨터에 제공하는 시스템.

즉 숫자를 사용한 IP 주소를 사람이 이해하기 쉬운 도메인 이름으로 변환해 사용하는 것이다. 

▶ Port : 컴퓨터 안에서 작동하는 어플리케이션(프로그램)을 식별하기 위해 사용하는 숫자이다. (생략도 가능하고 기본적으로 80으로 받는다.)

 

 

 

 


7. 지네릭에 관하여 예습 하시오.

내일 개별진척도 41, 40번...

앞으로 개별 진척도는 새로운게 있으면 새로운 것과 이전에 했던 것.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함