본문 바로가기

책 공부/자바의 신

자바의 신 기본 정리

반응형

자바의 신

 

객체지향 관령 용어

  • 클래스
    상태와 행위를 갖는 자바의 기본 단위
  • 상태와 행위
    어떤 사물을 나타낼 때에는 상태와 행위로 구분하여 표시하는 것이 가능하며 자바에서는 상태는 클래스나 인스턴스 변수로 나타내고 행위는 메소드로 나타낸다.
  • 캡슐화
    상태와 행위를 결정하는 기능을 묶어 주는 의미로 클래스 밖에서 접근 가능한 대상을 제한하는 정보은닉, 하나의 객체를 위한 코드가, 다른 객체를 위한 코드와 무관하게 사용할 수 있는 모듈화 기능이 있다.
  • 메시지
    메소드에서 다른 메소드를 호출할 때 전달하는 값을 메시지라고 한다.
  • 객체
    클래스는 사물의 단위를 의미하고, 객체는 각 사물을 의미한다.
  • 상속
    부모에 선언된 변수와 메소드를 자식이 사용하는 것을 말한다.
  • Overriding
    부모 클래스에 선언되어 있는 메소드와 동일한 선언을 갖지만 구현이 다른 것을 말한다.
  • Overloding
    같은 메소드명을 갖고 있지만 매개 변수의 개수와 타입이 다른 것을 말한다.
  • 다향성
    부모 클래스에서 파생된 자식 클래스들에게 다양한 기능을 추가하여 사용할 수 있다.

 

기본 자료형의 형 변환

자바는 자료형이 다양하게 존재한다.

분류
이름 바이트 수 비고
정수형 byte 1 -127 ~ +128
short 2 -32,768 ~ +32,767
int 4 -2,147,483,648 ~ +2,147,483,647
long 8 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
실수형 float 4 -3.4E38 ~ +3.4E38
double 8 -1.7E308 ~ +1.7E308
문자형 char 2 0 ~ +665535 (유니코드 문자열)
논리형  boolean 1 true, false

 

자료형을 나누는 이유는?

첫 번째 : 컴퓨터의 메모리를 효율적으로 사용하기 위해서 사용한다.

ex) int 4바이트 안에 정수 값을 저장하기 위해서 long을 사용한다면 저장 메모리를 4byte -> 8byte로 늘려 저장해야 한다. 이런 부분은 메모리 저장공간을 매우 비효율적으로 사용한다. 메모리를 효율적으로 사용하기 위해서 자료형을 사용한다.

 

그럼 여기서 궁금증이 하나 생길 것이다.

만약 int 4byte로 저장한 정수형의 값이 커져 long인 8byte를 사용해야 한다면 어찌해야 하나라는 궁금증이다.

이런 문제를 해결하기 위해서 캐스팅(casting)을 자바에서 제공해준다.

 

캐스팅(casting)이란?

캐스팅이란 현재 사용하는 자료형의 형태를 변화시켜 주는 것이다.(알맞게 사용하기 위해서)

자바의 상속 관계에 있는 부모와 자식 클래스 간에는 서로 간의 형 변환이 가능하다.(여기서는 자료형의 캐스팅만을 다룬다.)

 

캐스팅의 2종류

 

업 캐스팅 ( byte -> short -> char -> int -> long -> float -> double)

업 캐스팅은 해당 자료형의 표현 범위를 벗어났을 때 자료형을 더 크게 바꿔 주는 것이다.

public class UpCasting
{
	public static void main(String[] args) {
    
	byte byteValue = 127;
       	short shortValue = byteValue;
        shortValue++;
        
        System.out.println("byteValue : " + byteValue);   // 127
        System.out.println("shortValue : " + shortValue); // 128
    
	byteValue = (byte)shortValue;
        System.out.println("byteValue : " + byteValue);   // -128
	}
}

 

 

다운 캐스팅 (double -> float -> long -> int -> char -> short -> byte)

다운 캐스팅은 해당 자료형의 표현 범위를 줄이는 것이다. 다운 캐스팅을 잘 못 사용한다면 생각지도 못한 값이 나올 수도 있으므로 사용에 주의해야 한다.

public class DownCasting
{
	public static void main(String[] args) {
		
        short shortValue = 256;
        byte byteValue = (byte)shortValue;
        
        
        System.out.println("shortValue : " + shortValue); // 256
        System.out.println("byteValue : " + byteValue);   // 0
        
        byteValue = (byte)--shortValue;
        
        System.out.println("shortValue : " + shortValue); // 255
        System.out.println("byteValue : " + byteValue);   // -1
	}
}

 

정리
자료형의 형 변환을 해주는 것을 캐스팅이라고 하며 캐스팅의 종류는 2가지로 업, 다운 캐스팅이 존재한다. 여기서 업 캐스팅은 범위가 넓어져 더 큰 자료형으로 형 변화여서 문제가 없지만 다운 캐스팅의 경우 잘못 사용하면 변화한 자료형의 표현 범위를 벗어나 문제가 발생할 수 있어 주의해서 개발해야 한다.

 

참고
기본 자료형에서 참조 자료형으로, 참조 자료형에서 기본 자료형으로 형 변환은 절대 불가능하다. ( 전혀 방법이 없는 것은 아니다)
반응형

'책 공부 > 자바의 신' 카테고리의 다른 글

interface 와 abstract class  (0) 2024.03.12
Java에서 this란 무엇인가?  (0) 2022.09.01
java final 알아보기  (1) 2022.08.29
오버로딩(overloading) vs 오버라이딩(overriding)  (0) 2022.08.17