[Java의 정석] 변수(Variable)

Shiba·2023년 5월 18일
post-thumbnail

📓 변수(Variable)

📔 변수란?

  • 하나의 값저장할 수 있는 메모리 공간

📔 변수, 상수, 리터럴

  • 변수(Variable) : 하나의 값저장하기 위한 메모리 공간
  • 상수(Constant) : '한 번만' 값을 저장할 수 있는 메모리 공간
  • 리터럴(Literal) : 그 자체로 값을 의미 하는 것
	int score = 200; // score은 변수, 200은 리터럴
    String s = "str" // s는 변수, "str"은 리터럴
    final int MAX = 200; // MAX는 상수, 200은 리터럴 (final이 상수를 의미)

📔 변수의 타입

📃 기본형(Primitive type)

  • 논리형 : true와 false중 하나의 값을 가짐. 조건식, 논리식계산에 사용
    • boolean : 논리값을 가지는 자료형 1byte (0이면 거짓, 1이면 참)

  • 문자형 : 문자를 저장하는데 사용. 변수 당 하나의 문자만 저장 가능
    • char : 문자를 가지는 자료형 2byte (-2¹⁵ ~ 2¹⁵ - 1)

  • 정수형 : 정수값을 저장하는데 사용.
    • byte : 이진데이터를 다루는데 사용. 1byte(-2⁷ ~ 2⁷ - 1)
    • short : C언어와의 호환을 위해 추가됨. 2byte(-2¹⁵ ~ 2¹⁵ - 1)
    • int : 가장 기본적으로 사용되는 정수형 변수. 4byte(-2³¹ ~ 2³¹ - 1)
    • long : int의 범위를 넘어서는 정수형에 사용. 8byte(-2⁶³ ~ 2⁶³ - 1)

  • 실수형 : 실수값을 저장하는데 사용.
    • float : 실수값 저장에 사용.
           4byte(부호(S)(1) + 지수부(E)(8) + 가수부(M)(23))
    • double : 기본적으로 사용되는 실수형 변수.
            8byte(부호(S)(1) + 지수부(E)(11) + 가수부(M)(52))

  • 실제 값을 저장

📃 참조형(Reference type)

  • 기본형을 제외한 나머지 (String, System 등)

  • 객체의 주소를 저장

📔 변수의 선언

📃 변수의 선언 이유

  • 값을 저장할 공간마련하기 위해서

📃 변수의 선언 방법

  • 변수타입 변수이름;
int num;

📃 명명규칙

  • 대소문자가 구분되며 길이에 제한이 없다.
    • int A; 와 int a; 는 서로 다른 변수이다.
  • 예약어(Reserved word)를 사용해서는 안된다.
    • boolean,int,true,false 등 은 불가능.

  • 숫자로 시작해서는 안된다.
    • top10은 허용하지만 10top은 허용하지 않는다.

  • 특수문자'_' 와 '$'만허용한다.
    • $harp는 허용하지만 $#harp는 허용하지 않는다.
    • max_num은 허용하지만 max num은 허용하지 않는다.

  • 권장사항
    • 클래스 이름의 첫 글자항상 대문자로 한다.
      • 변수와 메소드의 첫 글자는 항상 소문자로 한다.
    • 여러 단어 이름단어 첫 글자대문자로 한다.
      • Last_Num, StringLength
    • 상수의 이름항상 대문자로 한다. 단어'_'구분한다.
      • PI, MAX, MAX_NUM

📔 변수에 값 저장하기

📃 변수의 기본값

자료형기본값
boolanfalse
char'\u0000'
byte0
short0
int0
long0L
float0.0f
double0.0d 또는 0.0
참조형 변수null

📃 변수에 값 저장하기

int num; // 변수를 선언
num = 25; // 25라는 값을 저장
int num = 25; // 위 두줄을 한줄로

📃 변수의 초기화

  • 변수에 가장 처음으로 값을 저장하는것
int x = 50; // x라는 정수형 변수를 선언 후, 50으로 초기화
int y = 20; // y라는 정수형 변수를 선언 후, 20으로 초기화
int x = 50, y = 20; // 같은 자료형일시, 쉼표를 통해 한번에 초기화 가능

지역 변수사용되기 전에 반드시 초기화한뒤 사용해야한다. (에러발생)

📃 리터럴과 접미사

  • Long범위의 리터럴로 초기화 할때, 리터럴뒤에 L을 붙여주어야 한다.
    • long num = 10000000000L; (int범위를 넘으므로 L을 붙여야 한다.)
  • float의 리터럴로 초기화 할때, 리터럴뒤에 f를 붙여주어야 한다.
    • float f = 3.14f;

📔 변수의 값 읽어오기

  • 변수의 값이 필요한 곳변수의 이름을 적는다.
		int x = 50; // x를 50으로 초기화
		int y = 20; // y를 20으로 초기화
		int sum = x+y; // sum을 x+y(50+20)로 초기화

📔 문자와 문자열

char ch = 'a';                
char ch = 'ab'; // 에러      
char ch = ''; // 에러         

String s = "ab";
String s = "A" + "B"; // "AB"
String s = "";

// "" + anytype => 문자열
// anytype + "" => 문자열

/*
ex)
	"" + 7 => "" + "7" => "7"
    "" + 7 + 7 => "" + "7" + "7" => "7" + "7" => "77"
    7 + 7 + "" => 14 + "" => "14" + "" => "14"
*/

📔 정수의 오버플로우(Overflow)

  • 변수는 저장할때 0과1로만 이루어진 bit의 모임으로 저장됨.
    • 비트하나 당 2가지 경우의 수가 존재.
      • n비트의 변수는 2n2^n개의 리터럴을 저장가능
  • 양수 음수 둘다 존재할시, 부호비트1비트를 소모함.
    • Signed(부호가 존재하는) int : -2³¹ ~ 2³¹ - 1
    • Unsigned(부호가 존재하지 않는) int : 0 ~ 2³²
profile
모르는 것 정리하기

0개의 댓글