JAVA

[JAVA] 값 할당 / 변수자료형 / 자료형분류 / Escape Sequence

sian han 2022. 2. 8. 21:42

▣ print 메서드 : 줄바꿈하지않고 출력하는 메서드

System.out.print(" ");

 

 

 

※변수

 : 데이터를 저장하기 위해서 메모리에 공간을 만들고 이 공간에 이름을 부여한 것 

      (=데이터를 담기위한 그릇)

   

 

▶ 변수 값 할당

1. 변수선언 후 값 할당

  - 선언 후 세미콜론 잊지않기

int a;
a = 23;

2. 선언 및 할당

int a = 23;

3. 여러개 동시에 선언 및 할당

  - int 한번만 쓰고 선언,선언 형태로 쓰기

int a=10, b=20;

4. 여러개 분리해 선언 및 할당

  - 선언 한꺼번에 하고 아래서는 변수 값 설명만 하면됨

int a,b;
a=10;
b=20;

5. 변수끼리 할당

  - 변수값 설정하지 않고 선언만 하는것 가능 !

int a=10, b; 
b=a;

* 주의 : 값변경은 가능하지만, 재선언은 불가하다

int a=10;   (a=55;)                 (int a = 55;)  => 같은 이름의 변수를 다시 선언할 수 없다

 

   // 재선언 시 cmd 창 에러문:

       error: variable a is already defined in method main(String[])

 

 

 

 

 

 

 

※자료형 (=데이터타입)

 : 변수 공간을 얼마나 확보할 것인지 크기와 종류를 정하는 것

     - 변수를 만들 때 어떠한 데이터가 들어가며 메모리는 몇 바이트나 차지하는지를 명시해주기도 함

 

 

▶ 기본 자료형

1. 숫자형

 - 정수

byte 1 byte -128~127  
short 2byte 대략 +-32,000  
int 4byte 대략 +-21억  
long 8byte 대략 +-922경 * 선언 시 뒤에 L을 붙여야함

 - 결과값은 계산식에서 가장 큰 자료형으로 변환되어 나온다.

       따라서 연산 시에는 변수의 모든 타입을 가장 큰 자료형으로 일치시켜 계산한다

 - ex ) int*int*int*int= 결과값 > int 의 경우, garage 값이 나오게 된다

      계산식에서 int 가 가장 큰 자료형이기 때문에 결과값도 int 로 출력되는데,

          실제 결과값은 int (21억) 보다 크기때문에 에러가 발생하는것.

          // error: incompatible types: possible lossy conversion from int to byte

 

             이런경우 연산 값 중 하나를 더 큰 자료형인 long으로 변환한다.

 - ex) long ab = (long)a*sh*i; // long*short*int=> long* long* long=>long

                                               

 

 

 

 

2. 숫자형 / 실수형

    : 정밀도에 따라 결정

float 4byte 소수이하 7 자리까지 유효 뒤에 f or F 를 붙여줘야 함
double 8byte 소수이하 15 자리까지 유효 기본적으로 double 로 인식

 - 정수를 포함한 모든 실수를 다룰 수 있다

 - 값의 표현범위보다 정밀도를 우선시하여 선택해야 함

 

 

 

 

 

3. 문자형

Char a = 'A';

 - *작은 따옴표로 감싸야 함

 - 따옴표 안에는 문자에 해당하는 '유니코드' 값이 들어간다

 - 따옴표 안에는 문자 '하나'만 저장 가능하다.

   - 두개 이상 들어갈 시 에러발생

 - 2byte

 

*유니코드 : 문자 하나를 2바이트로 표현하는 문자체계로, 세계의 모든언어 표현가능

 

 

 

 

 

4. 논리형 

 - true, false 가 들어감

 - 다른프로그램에서 true =1 / false=0 으로 호환해서 쓰기도 하지만,

   자바의 논리형은 0,1로 호환되지않는다

 

boolen

int i =5, j=9;
	boolean b = i > j; //false, 따라서 b=false
		System.out.println("i="+i+", j=" +j);
		System.out.println("i > j : "+b);

i=5, j=9

i>j : false

 

 

 

 

 

 

5. 참조형

 - "문자열" 자료형

 - 숫자형과 함께 양대산맥으로 사용됨

 - 선언 시 "큰따옴표" 로 감싸준다

 

String name = "홍길동"

  - 문자열을 넣기위해 string 이라는 참조형을 사용함

 

 

★자료형 표현법 한눈에 보기

 

 

 

 

 

 

※ 자료형(data type)의 분류

 

  ▶값타입 (Value Type)

     - 메모리의 스택에 저장됨

  ▶참조타입 (Reference Type)

     - 실제값은 다른곳에 있으나 값이 존재하는 주소를 가지고와서

        나중에 그 주소를 참조해서 값을 가져올 수 있는것

     - 메모리의 힙에 실제값 저장

       참조값을 갖는 변수는 스택에 저장

     - 클래스형 중 대표적으로 string 이 있음

 

* 메모리

  - 물리적 메모리 X , 가상메모리 O

  - 변수는 모두 메모리에 저장된다

 

 

1. 메서드 영역

  - (static영역)

 

2. 힙 영역

  - (heap) 덩치가 큰 데이터 보관

  - 메모리구조 : FIFO (First In First Out - 처음으로 들어온게 처음으로 나간다)

                        = 임이의 메모리에 데이터를 자유롭게 저장하고 제거

                             참조는 데이터가 저장되어있는 힙의 주소를 기억하고 있다가,

                             직접 데이터가 있는 곳에 접근

 

3. 스택 영역

  - 잠깐 사용하고 삭제할 데이터 저장공간

  - 메모리 구조 : LIFO (Last In First Out - 마지막으로 들어온게 제일먼저 나간다)

                             = 데이터가 아래서부터 쌓였다가

                                  제거될때는 맨 위의 데이터부터 차례대로 제거됨

 

 

 

 

 

 

 

 

 

 

 

※ Escape Sequence

 : 문자열안에서 특별한 의미로 해석되는 문자

 

 

\n : 개행 (줄바꿈, Enter)
\t : 탭(Tab)
\" : 큰 따옴표
\\ : 역슬래쉬

 

▽사용예시

System.out.println("그는 말했다.\"나는 java 가 재밌어!\"\n그는 말했다\t나도 java가 재밌어! " ); //한줄로 입력하기
System.out.println("\n그는 말했다.\"나는 java 가 재밌어 !\""); // 두줄로 나눠서 깔끔하게 입력하기
System.out.println("그는 말했다.\t나도 java가 재밌어!");

 

'JAVA' 카테고리의 다른 글

[JAVA] for 무한루프 / scope /  (0) 2022.02.14
[JAVA] 중첩if / switch 문 / 반복문_for  (0) 2022.02.14
[JAVA] 연산자 / 제어문  (0) 2022.02.10
[JAVA] 형변환  (0) 2022.02.09
[JAVA] JAVA 실행과정 이해하기 / 자바코드의 구조  (0) 2022.02.07