자바 Object 자료형 - jaba Object jalyohyeong

자바에서는 아래의 방법으로 변수를 생성합니다.

int a = 852;

변수가 생성되는 과정은 아래와 같습니다.

1. int는 4Byte의 고정된 크기를 가지는 변수타입이다.

2. 메모리의 4Byte의 공간을 마련하고, a라고 이름짓는다. (1Byte는 8Bit이므로, 총 32Bit의 공간이 생기겠죠?)

3. a라는 32Bit 공간에 숫자852를 이진법으로 바꾼 수(1101010100)를 할당한다.

System.out.println(Integer.toBinaryString(852)); // 1101010100

기본자료형은 2진법으로 변환되어 메모리에 바로 박히게 됩니다. 직접 할당이라고 합니다.


그러나 객체자료형은 크기가 가변적이기 때문에, 고정된 크기의 2진법으로 변환될 수 없습니다.

String str = "가느다란물방울"; str += "가나다라"; str += "마바사아자차카타파하";

객체 자체는 고정된 크기로 변환될 수 없지만, 객체의 주소값은 크기가 고정되어 있습니다. 따라서 힙 영역에 객체를 생성하고, str 이라는 변수에 객체의 주소값을 저장하게 됩니다.

Object obj = new Object(); System.out.println(obj); //java.lang.Object@15db9742


명시적 형변환시 데이터의 손실


기본 자료형의 직접 할당과 관련된 내용이 있습니다.

자바에서 명시적 형변환시 데이터 손실이 일어나는 경우, 어떻게 손실되는가? 입니다.

long 타입은 8Byte이고, int 타입은 4Byte입니다.

int in = 88822; long lon = 8223372036854775804L; int in2 = (int) lon; System.out.println(Integer.toBinaryString(in)); System.out.println(Long.toBinaryString(lon)); System.out.println(Integer.toBinaryString(in2)); // 10101101011110110 // 111001000011111010010010100110001011000100110111111111111111100 // 1011000100110111111111111111100

long타입의 데이터를 int타입의 변수로 형변환을 한 결과입니다.

이진수의 뒤에서부터 들어가서, 자릿수가 큰 앞부분은 짤리게 되네요.

 문자, 숫자, 논리값으로 분류할 수 있는 자바의 기본자료형 이외에 자바의 꽃인 객체자료형에 대해 알아보는 시간이다. 어떤 언어에서든 객체라는 녀석은 뒤에 점(.)을 찍고 속성과 메서드를 추가할 수 있다.

 대표적인 기본자료형은 아래와 같이 3가지로 분류하니 참고하자.

1. 문자 : char, 2바이트

2. 숫자 : 정수 byte(1바이트) < short(2바이트) < int(4바이트) <long(8바이트)

실수: float(4바이트) < double(8바이트)

3. 논리값 : boolean, 1바이트

Java 확장자를 가진 두 개의 문서를 만들었다. 하나는 객체를 표현하고 다른 하나로 실행을 할 예정이다.

 먼저 Moondol 클래스로 색상 red를 입력했다. 색상을 변경할 수 있도록 setColor라는 메서드를 활용할 계획이다.  

class Moondol{

             String color="red";

             public void setColor(String color){

                           this.color=color;

             }

}

 setColor 메서드 소괄호 안에 매개변수를 넣었다. 실행부에서 원하는 색으로 조정하기 위함이다.

 다음은 실행부의 클래스이다.

class UseMoondol {

             public static void main(String[] args){

                           Moondol m = new Moondol();

                           System.out.println("최초 설정된 색은?" + m.color);

                           m.setColor("blue");

                           System.out.println("변경된 색은?" + m.color);

             }

}

 Main 메서드는 개발자가 코드에서 호출하는 것이 아니라 실행할 때 java.exe에 의해 호출 된다. 여기서 Moondol을 객체형, 사용자정의자료형 이라고 하고 class로 표현한다. new Moondol();객체를 표현하기 때문에 new를 사용했다. 자바스크립트에도 나오는 개념이라 기초를 잘 쌓았다면 금방 이해할 수 있는 개념이다.

 이제 Moondol, UseMoondol 순서로 컴파일을 하고 실행부인 UseMoondol을 실행하면 된다.

결과값

최초 설정된 색은?red

변경된 색은?blue

Toplist

최신 우편물

태그