공부/java

02. 변수(Variable)

ㄱ ㅣ린 2023. 1. 13. 20:47

■ 변수(Variable)

  • 프로그램에서 사용될 값을 저장하는 메모리 공간이다.
  • 변수를 사용 시, 변수의 데이터형을 사용하여 선언해야한다.
  • 어떤 진법의 리터럴을 변수에 저장해도 실제로는 2진수로 바뀌어 저장된다.
  • 변수 선언 위치에 따라 instance 변수, static 변수, local변수 가 있다
  • 동일 영역에서는 같은 변수명을 사용할 수 없다 (같은 이름의 변수는 하나만 선언할 수 있다)
  • 자바는 정수형, 실수형, 문자형 등의 다양한 타입을 제공한다.
  • 이름 규칙
    • 대소문자가 구분되고, 길이에 제한이 없다
    • 예약어를 사용해서는 안된다
    • 숫자로 시작해서는 안된다
    • 특수문자는 '_'와 '$'만 허용된다

 

□ 지역변수 (Local Variable)

  • method안에서 선언되고, 사용되는 변수(method 밖에서는 사용 불가)
  • 자동초기화가 되지 않아, 초기화를 한 후 사용해야한다(초기화되지 않은 변수 사용시 변수안에 쓰레기값이 담겨 에러가 발생!)
  • 변수의 초기화는 변수 사용전, 처음으로 값을 저장하는 것이다
  • 선언된 변수는 상수값을 저장한다(Literal에 Stack에 저장된다)
  • 사용법
    • 선언 및 초기화(값 할당)

 

□ 상수와 리터럴(Constant & Literal)

  • 상수(Constant)
    • 변수와 같이 값을 저장하는 공간이지만 변수와 달리 한번 값을 저장하면 다른값으로 변경이 불가능하다
    • 상수 선언은 변수 타입 앞에 'final'을 붙이면 된다
final int MAX = 10; // 선언 및 초기화
  • 리터럴(Literal)
    • 수 그 자체의 값
    • 상수는 리터럴에 이름을 붙여서 코드를 더 쉽게 이해하게 만들어준다.
변수(Variable) 하나의 값을 저장하기 위한 공간
상수(Constant) 값을 한번만 저장할 수 있는 공간
리터럴(Literal) 그 자체로 값을 의미하는 것


■ 데이터 형(Data Type)

  • 값을 저장하기위해 종류별로 미리 예약해둔 메모리 공간
  • 변수 선언 시 사용
  • 기본형(primitive type) 데이터형, 참조형(reference type) 데이터형으로 구분
    • 기본형: 변수에 값 직접 저장 [ byte, short, int, long, float, double, char, boolean  == 8가지]
    • 참조형: 변수에 주소 저장 [ class, array, string  == 3가지]
int i = 10; // 기본형
String str = "hell0 world"; // 참조형

 

□ 기본형(Primitive type)

  • 변수에 리터럴의 값을 직접 저장하는 데이터형
    • 정수형 - byte, short, int, long
    • 실수형 - float, double
    • 문자형 - char
    • 논리형 - boolean
값 종류 데이터형 명 크기( byte ) 범위(range) 사용 예
정수 byte 1 -128 ~ +127 byte b=10;
short 2 -32768 ~ + 32767 short s=10;
int 4 -2147483648 ~ +2147483647 int  i =10;
long 8 2^63 ~ + 2^63-1 long l=10;
long l=int초과L; //형명시 L,l
실수 float 4 유효연산 7자리 float  f=3.14; //error, 형명시
float f=3.14F;
double 8 유효연산 15자리 double d=3.14; //형명시 생략
double d=3.14D;
문자 char 2 ‘로 묶여진 영문자 한자, 숫자 한자,
한글 한자의 unicode값을 저장
char c=‘A’; // Unicode값할당
불린 boolean 1 true, false 저장 boolean b=true;
booleanb1=false;

 

◇ 정수형 - byte, short, int, long

  • 연산과정에서 해당 타입이 표현할 수 있는 범위를 넘어가면 Overflow(오버플로우)가 발생하게 된다
  •  

추가

 

◇  실수형 -float, double

 추가

 

◇ 문자형- char

  • 문자를 저장하기 위한 변수를 선언할 때 사용된다 
    • char c = 'A'; // 문자 'A'가 아닌 유니코드 65가 저장된다. 하지만 출력은 'A'로 된다
    • char c = 65; // 65가 저장되지만 출력은 'A'로 나온다
  • 문자의 유니코드를 알고 싶다면 정수형(int)으로 변경하면 된다
    • int code = (int) c; // 변수 c에는 'A'가 들어가 있고 출력은 65가 나오게 된다
  • 인코딩(Encoding)과 디코딩(Decoding) 

+  추가

  • 8bit 문자집합 => 한글 지원 안함 (ASCII CODE: 0~255)
  • 16bit 문자집합 => 한글 지원 (UNICODE: 0~65535)
  • 유니코드: 0~9(48, 57)   / A~Z (65~90)   / a~z(97~122)
숫자 유니코드 영어
대문자
유니코드 영어
소문자
유니코드
0 48 A 65 a 97
1 49 B 66 b 98
2 50 C 67 c 99
3 51 D 68 d 100
4 52 E 69 e 101
5 53 F 70 f 102
6 54 G 71 g 103
7 55 H 72 h 104
8 56 I 73 i 105
9 57 J 74 j 106
    K 75 k 107
    L 76 l 108
    M 77 m 109
    N 78 n 110
    O 79 o 111
    P 80 p 112
    Q 81 q 113
    R 82 r 114
    S 83 s 115
    T 84 t 116
    U 85 u 117
    V 86 v 118
    W 87 w 119
    X 88 x 120
    Y 89 y 121
    Z 90 z 122

 

+ 특수문자 표현

특수문자 문자 리터럴
탭(tab) \t
백스페이스 \b
새로운 줄 \n
\ 표현 \\
' 표현 \'
" 표현 \"
유니코드(16진수) 문자 \u유니코드

 

 


□ 형명시

  • Literal의 크기를 일시적으로 변경한다
  • 정수
    • 정수 Literal은 4byte가 기본크기이고, L&l을 정수상수 뒤에 붙여 리터럴의 크기를 8byte로 변경할 수 있다
    • 정수상수 값이  int의 범위라면 생략가능

  • 실수
    • 실수 Literal의 8byte가 기본크기이고, F&f를 실수상수 뒤에 붙여 리터럴의 크기를 4byte로 변경할 수 있다.
    • D, d 생략가능. 리터럴의 크기를 8byte로 유지

 

□ 형변환(Casting)

 


□ 자바 출력

  • console 출력, 주로 debug용으로 사용
  • 표준 출력 method
    • System.out.print( );     // 출력 후 줄 변경 없음.
    • System.out.println( );  // 출력 후 줄 변경.                         
    • System.out.format();
    • System.out.printf();
  •   문자열은 + 연산자를 사용하면 문자열을 서로 붙여서 출력
    • System.out.println( 12+2 );        // 14, 숫자는 연산의 결과가 나온다
    • System.out.println( "12" + "2");  // 122, 문자열은 붙임
    • System.out.println( "12"+ 2 );    // 122, 문자열은 붙임
    • System.out.printf("%d". age);  
지시자 설명
%b boolean 형식 출력
%d 10진(decimal) 정수 형식 출력
%o 8진(octal) 정수 형식 출력
%x 16진(hexa) 정수 형식 출력
%f 부동 소수점(float) 형식 출력
%c 문자(character)로 출력
%s 문자열(String)로 출력

 


진법은 일단 생략


 

+ 자바 권장 규칙

  • 클래스명은 항상 대문자로 시작한다
  • 여러단어로 이뤄진 이름은 단어 첫글자를 대문자로 한다
  • 상수의 이름은 모두 대문자로 짓는다.