뚜sh뚜sh

[자바의 정석 - 기초편] Chapter 2. 변수(Variable) 본문

Language/Java

[자바의 정석 - 기초편] Chapter 2. 변수(Variable)

뚜sh뚜sh 2023. 8. 3. 20:54

변수(variable)란?

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

 

 

 

변수의 선언

1. 변수의 선언 이유

- 값(data)을 저장할 공간을 마련하기 위해서

 

2. 변수의 선언 방법

- 변수타입 변수이름;

 

 

 

변수에 값 저장하기

1. 변수에 값 저장하기('='는 등호가 아니라 대입)

int age; // 정수(int)타입의 변수 age를 선언
age = 25; // 변수 age에 25를 저장

 

2. 변수의 초기화

- 변수에 처음으로 값을 저장하는 것

int x = 0; // 변수 x를 선언 후, 0으로 초기화
int y = 5; // 변수 y를 선언 후, 5로 초기화
int x = 0, y = 5; // 두 줄을 한 줄로

※ 지역 변수는 읽기 전에 꼭 초기화해야 함

 

 

 

변수의 값 읽어오기

1. 변수의 값이 필요한 곳에 변수의 이름을 적는다

int year = 0, age = 14;
year = age + 2000;

 

 

 

변수의 타입

1. 변수의 타입은 저장할 값의 타입에 의해 결정된다

2. 저장할 값의 타입과 일치하는 타입으로 변수를 선언

 

 

 

변수, 상수, 리터럴

- 변수(variable) : 하나의 값을 저장하기 위한 공간

- 상수(constant) : 한 번만 값을 저장 가능한 변수

- 리터럴(literal) : 그 자체로 값을 의미하는 것

 

 

 

리터럴의 접두사와 접미사

- byte, short 타입은 접미사가 없으며 int 타입으로 표현함

- float 타입은 접미사 f 생략불가

- double 타입은 접미사 d 생략가능

- 접두사 0b : 이진수

- 접두사 0 : 8진수

- 접두사 0x : 16진수

 

ex1) 10. => 10.0 (double)

ex2) .10 => 0.10 (double)

ex3) 10f => 10.0f (float)

ex4) 1e3 => 1000.0 (double)

 

 

 

변수와 리터럴의 타입 불일치

  • 범위가 '변수 > 리터럴'인 경우, OK
  • 범위가 '변수 < 리터럴'인 경우, ERROR
  • byte, short 변수에 int 리터럴 저장 가능

※ byte 범위 : -128 ~ 127

※ int 범위 : ±20억

 

 

 

문자와 문자열

- String 타입의 변수에는 빈 문자열(""), 문자("a"), 문자열("abc") 다 사용 가능

- char 타입의 변수는 문자만 사용 가능(빈 문자열(''), 문자열('abc') 사용 불가)

 

 

 

값의 타입(기본형)

- 문자 : char

- 숫자(정수) : byte, short, int, long

- 숫자(실수) : float, double

- 논리 : boolean

 

 

 

기본형과 참조형

- 기본형(Primitive type)

  • 오직 8개(char, byte, short, int, long, float, double, boolean)
  • 실제 값을 저장

- 참조형(Reference type)

  • 기본형을 제외한 나머지(String, System 등)
  • 메모리 주소를 저장(4 byte 또는 8 byte)

 

 

 

기본형(Primitive type)의 종류와 크기

- 논리형 : true와 false 중 하나를 값으로 가지며, 조건식과 논리적 계산에 사용됨

- 문자형 : 문자를 저장하는 데 사용되며, 변수 당 하나의 문자만을 저장할 수 있음

- 정수형 : 정수 값을 저장하는 데 사용됨, 주로 사용하는 것은 int와 long이며, byte는 이진 데이터를 다루는 데 사용되며, short는 c언어와의 호환을 위해 추가되었지만 잘 안 쓰임

- 실수형 : 실수 값을 저장하는 데 사용됨, float와 double이 있음

 

 

 

기본형의 표현범위

- n비트로 표현할 수 있는 값의 개수 : 2^n개

- n비트로 표현할 수 있는 부호 없는 정수의 범위 : 0 ~ 2^n -1

- n비트로 표현할 수 있는 부호 있는 정수의 범위 : -2^(n-1) ~ 2^(n-1) - 1

  • byte : -2^7 ~ 2^7 - 1 => -128 ~ 127
  • short : -2^15 ~ 2^15 => -32768 ~ 32767
  • char : 0 ~ 2^16 - 1 => 0 ~ 65535
  • int : -2^31 ~ 2^31 - 1 => -20억 ~ 20억
  • long : -2^63 ~ 2^63 - 1 => -800경 ~ 800경

 

 

 

형식화된 출력 - printf()

- println()의 단점 : 출력형식 지정불가

  • 실수의 자릿수 조절 불가
  • 10진수로만 출력된다

 

 

 

printf()의 지시자

※ \n, %n 둘 다 개행문자로 사용할 수 있지만 %n은 os에 관계없이 어디에서나 사용할 수 있음

 

- 정수를 10진수, 8진수, 16진수로 출력

System.out.printf("%d", 15); // 15 (10진수)
System.out.printf("%o", 15); // 17 (8진수)
System.out.printf("%x", 15); // f (16진수)
System.out.printf("%s", Integer.toBinaryString(15)); // 1111 (2진수)

 

- 8진수와 16진수에 접두사 붙이기

System.out.printf("%#o", 15); // 017
System.out.printf("%#x", 15); // 0xf
System.out.printf("%#X", 15); // 0XF

 

- 실수 출력을 위한 지시자 %f(지수형식 - %e, 간략한 형식 - %g)

float f = 123.4567890f;
System.out.printf("%f", f); // 123.456787 (소수점아래 6자리)
System.out.printf("%e", f); // 1.234568e+02 (지수형식)

 

System.out.printf("[%5d]%n", 10); // [   10]
System.out.printf("[%-5d]%n", 10); // [10   ] (왼쪽정렬)
System.out.printf("[%05d]%n", 10); // [00010]

 

String url = www.codechobo.com;
System.out.printf("[%s]%n", url); // [www.codechobo.com]
System.out.printf("[%20s]%n", url); // [   www.codechobo.com]
System.out.printf("[%-20s]%n", url); // [www.codechobo.com   ]
System.out.printf("[%.8s]%n", url); // [www.code] (부분출력)

 

 

 

화면에서 입력받기(Scanner)

Scanner란?

- 화면으로부터 데이터를 입력받는 기능을 제공하는 클래스

 

Scanner를 사용하려면?

1. import문 추가

import java.util.*;

 

2. Scanner 객체의 생성

Scanner scanner = new Scanner(System.in);

 

3. Scanner 객체를 사용

int num = scanner.nextInt(); // 화면에서 입력받은 정수를 num에 저장

 

 

 

정수형의 오버플로우

오버플로우 : 표현가능한 범위를 넘는 것

  • 최댓값 + 1 => 최솟값
  • 최솟값 + 1 => 최댓값

 

 

 

타입간의 변환방법

1. 문자와 숫자간의 변환

  • 숫자 + '0' => 문자
  • 문자 - '0' => 숫자

2. 문자열로의 변환

  • 3 + "" => "3"
  • '3' + "" => "3"

3. 문자열을 숫자로 변환

  • Integer.parseInt("3") => 3
  • Double.parseDouble("3.4") => 3.4

4. 문자열을 문자로 변환

  • "3".charAt(0) => '3'

'Language > Java' 카테고리의 다른 글

PriorityQueue에서의 Comparator 사용법  (0) 2023.10.06
[자바의 정석 - 기초편] Chapter 5. 배열  (0) 2023.08.04
GUI, AWT와 스윙(swing)  (0) 2023.07.06
컬렉션 클래스  (0) 2023.07.06
유용한 클래스들  (0) 2023.07.05
Comments