4-2 Java 기본자료형

정수형 (byte, char, short, int, long)

a. byte-1 byte

-메모리에서 1byte만 차지한다, 8bit 공간만 갖는다,

-표현할 수 있는 정수의 크기가 작다.

(범위 -127 ~ +128 -256개의 정수만 다룰 수 있다.)

*128까지 표현을 할 수 있는데 숫자 200을 넣으면 129부터는 누실(overflow)발생

*잘 사용하지 않는다.

 

b. char (character)

-2byte만 차지한다. 16bit 공간만 갖는다.

-단일 문자 예)A, B, 등등

*잘 사용하지 않는다.

*캐릭터는 숫자가 아니라 문자인데 왜 정수형에 포함시켰는가

-pc컴퓨터는 binary(1,0)으로만 표현할 수 있어서, ABC를 이해할 수 없지만

 A라는 문자를 컴퓨터에서는 65로 표현하자라고 규정을 해서 아스킥코드 만들어놓았다.

 그래서 각각 문자마다 아스킥코드로 만들어 놓았다.

 

c. short

-2byte만 차지한다. 16bit 공간만 갖는다.

-똑같은 정수를 표현하지만 byte보단 큰 수까지 표현을 할 수 있다.

-하지만 그렇게 큰 범위의 정수를 표현할 수 없다.

 

d. int

-4byte만 차지한다. 32bit 공간만 갖는다.

*실생활에서 사람이 필요한 숫자는 32bit 안에서 해결 할 수 있어 많이 쓰인다.

 

e. long

-8byte만 차지한다. 64bit 공간만 갖는다.

*t실생활에서 쓰지 않는 큰숫자까지 취급을 해서 사용할 수 있다.

*얼마나큰숫자????

=>charint가 많이 쓰이고, 2개 중에서도 int가 많이 쓰인다.

 

정리

분류

이름

바이트수

비고

정수형

byte

1 byte

-127  ~  +128

short

2 byte

-32,768  ~ +32,767

int

4 byte

-2,147,483,648 ~
+ 2,147,483,647

long

8 byte

-9,223,372,036,854,775,808 ~
+9,223,372,036,854,775,807

 

실수형(float, double)

)소수점

-3.1456

-1.00056

-1.78

 

a. float

-4byte만 차지 한다. 32bit 공간만 갖는다.

*소수점을 표현하기에는 공간이 작다.

 

b. double

-8byte만 차지한다. 64bit 공간만 갖는다.

*double만 알아도 프로그래밍하는데 지장이 없을 정도로 많이 쓰인다.

 

 

 

논리형 (boolean)

-참과 거짓이라고 한다.

*c계열에서는 0false라고 하고 0이 아닌 숫자는 true라고 한다.

c++true and false가 생겼다.

자바에도 true and false가 있다. 그것이 boolean

 

a. boolean

-1byte, 8bit의 공간을 갖는다.

 

논리형 메모리관리

*선언한 변수의 값이 직접 메모리 공간에 들어가 직접 그 메모리 공간에 있는 변수 값으로 동작한다.

 

 

문자열 (string)

문자열은 charcter가 안되는데 문자열은 어떻게 다루는가?

-string으로 다룬다.

-문자열을 다루는 String은 첫글자가 대문자로 시작한다.

-문자열을 다루는 String은 문자열을 대입할 수 있다.

)String str = "ABCDEFG";

-그래서 엄밀히 말하면 기본자료형이 아닌 객체자료형이다.

-4byte 차지 한다. 32bit의 공간을 갖는다.

 

문자열 메모리 관리

*String 메모리 관리는 String 값은 다른 공간에 만들어 놓고 실제로 선언한 변수 str에는 또 다른 공간에 만들어 놓고

str은 String이 가지고 있는 ABCDEFG의 객체 주소자료만으로 동작하게 된다.

*기본자료형은 첫글자가 소문자로 시작한다.

 

분류

이름

바이트수

비고

실수형

float

4 byte

단정도 실수형(유효 자리는 7

double

8 byte

 

논리형

boolean

1 byte

true, false

문자열

string

4 byte

기본자료형이 아닌 객체자료형

 

 

실습

1. 프로젝트 다시 생성해보기

*생성후 해당 프로젝트 class 생성할 때 클래스 이름을 대문자로 쓰는 습관을 들여 놓는 것이 좋다.

*23lines = "내이름“; 으로 변수 변경이 가능하다.

변수에 담은 자료형은 언제든지 변경이 가능하다는 것

4강 기본자료형 (3강 변수 선언하는 법의 연장선)

-변수를 만들 때 어떠한 자료(정수, 실수)의 형태를 넣을 것인가를 볼 것이다.

 

4-1기본자료형과 객체자료형

a.자료형은 종류 2가지

-기본자료형

-객체자료형

 

a-1.기본자료형

-데이터가 변수에 직접 저장된다.

-메모리에 데이터가 직접 들어간다.

-변수를 선언하면 선언하는 변수의 메모리공간이 할당 되고 거기에 데이터가 초기화를 거쳐서 들어간다.

*정수/실수/참거짓에 따라서 메모리 크기가 달라진다.

ex) int i = 10

 

a-2.자바의 기본자료형 종류

정수

실수

문자

문자열

블리언(,거짓)

 

b-1.객체자료형

-객체를 만들어서 데이터가 직접 메모리 공간에 저장 되는 것이 아니라,

 객체(object)를 가리키는 i를 만들어서 객체를 가리키는 또 다른메모리 공간을 하나를 더 만들어

 객체가 존재하는 주소를 i공간에 저장한다.

 

재정리

- 객체를 만들어 하나의 메모공간에 담아 놓고,

  실제i라는 변수는 다른 메모리공간에 객체를 가리키는 특정주소(객체가 존재하는 메모리주소=레퍼런스)를 참조해서

  변수정보로 사용한다.

-변수를 사용할 때 실제로 객체를 담는 것이 아니라 다른 곳에 만들어 놓고,

 변수는 객체가 존재하는 메모리 주소만 가지고 있다.

 (그래서, 레퍼런스의 크기는 항상 4바이트(16진수)로 고정이 되어 있다.)

*객체를 바로 변수로 만들 수 없다.(객체 자료형은 객체 메모리 주소가 변수에 저장된다.)

*i라는 변수는 객체 메모리 주소를 참조해서 사용한다.

*c계열에서는 포인터라고 하고, Java에서는 레퍼런스라고 한다.

3강 변수

3-1변수란

-데이터(자료)를 임시로 담을 수 있는 상자(메모리공간)

ex)학생들의 점수를 어딘가에는 데이터화해서 저장을 해야 연산을 할 수 있다.

이 때 변수를 이용한다.

 

int i=10;

int j=20;

*int - 자료형(정수,문자열 등등)

 

3-2변수 선언과 초기화

a.선언부와 초기화

-선언부까지 작업을 하면 메모리 일정한 공간만 확보를 한 것이다.

-대입연산자를 통해서 내가 원하는 변수값을 대입할 수 있다.

 

예제)

int i = 10;

___________________________________

" int i " - 선언부

" = " - 대입연산자

" 10 " - 초기화

__________________________________

"int" - 자료형

" i " - 변수이름

" 10 " - 변수값

___________________________________

 

b.변수선언 방법 2가지

1.변수선언 후 초기화 진행

int i; #변수선언

i = 10; #변수 초기화

System.out.println("i = " + i);

=> i = 10

 

2.변수선언과 초기화를 동시에 진행

int j = 20; #변수 선언 & 초기화

System.out.println("j = " + j);

=> j = 20

 

실습

*결국 값은 같게 나온다.

*추후에 변수 초기화를 해야 할 상황을 대비해 

 1번처럼 int i;정도로만 설정 해주는 용도로 사용해도 좋을 것 같음

*ctrl + F11 -> 실행 단축키

 

3-3메모리 할당과 진법(실습)

int

데이터형

-정수가 있고 실수(소수점)가 있다.

 

자료형

-문자(A : 문자, AB:문자열)

*int 자료형은 메모리에서 4byte(=32bit)공간은 차지함

int i;로 할시에 32bit만 확보가 된다.

i =10; (10진수 : 10, 2진수 : 1010 형태로 채워지게 된다)

 

실습

 

3-4변수 데이터 변경

-변수에 저장된 데이터는 언제든지 변경할 수 있다.

*변수는 말그대로 변하는 수이다.

*한번 선언한 이름을 다시 선언할 수는 없다.

 

변수를 왜 사용하는가

-재활용하기 위해서

) 학점관리, 반학생들의 점수를 총합한 값

)어떤 사람의 기상시간을 알리는 시간을 설정을 한다.

-a라는 변수에 5시간을 설정 한 것을 계속 사용하게 한다.

-다른데이터를 하나의 상징적인 의미로 담아 놓고 재활용해서

 쉽게 사용하게 하기 위해서 변수를 사용한다는 개념으로 이해하면 된다.

+ Recent posts