자바의 정석 Chapter02 를 참고하여 정리한 포스트입니다.

이전글
자바의 정석 Chapter01
다음글
자바의 정석 Chapter03


Chapter 02

1.1 변수 (variable)

변수란, 단 하니의 값을 저장할 수 있는 메모리 공간이다.

1.2 변수의 선언과 초기화

변수 선언

1
2
int age;   //age라는 이름의 변수를 선언
변수타입 변수이릅

변수 초기화(initialization)

뱐수가 사용되기 전에 적절한 값으로 초가화 하는 것이 좋다.
변수의 초기화란, 변수를 사용하기 전에 처음으로 값을 저장하는 것이다.

1
2
3
int age = 25;   //변수 age를 선언하고 25로 초기화
int a, b;
int x = 0, y = 0;

지역 변수는 사용되기 전에 초기화를 반드시 해야 하지만 클래스 변수의 인스턴스 변수는 초기화를 생략할 수 있다.

두 변수의 값 교환하기

변수 x,y의 값을 서로 바꾸는 방법

1
2
int x = 10;
int y = 20;

잘못된 방법

  1. 변수 y에 저장된 값을 변수 x에 저장
    • x = y;
    • 변수 값 : x = 20, y = 20
  2. 변수 x에 저장된 값을 변수 y에 저장
    • y = x;
    • 변수 값 : y = 20, x = 20

올바른 방법

x의 값을 위한 임시 저장 변수를 선언하면 된다.

1
2
3
int x = 10;
int y = 20;
int tmp;    //x값을 임시로 저장할 변수를 선언
  1. 변수 x에 저장된 값을 변수 tmp에 저장
    • tmp = x;
    • 변수 값 : x = 10, y = 20, tmp = 10
  2. 변수 y에 저장된 값을 변수 x에 저장
    • x = y;
    • 변수 값 : x= 20, y = 20, tmp = 10
  3. 변수 tmp에 저장된 값을 변수 y에 저장
    • y = tmp;
    • 변수 값 : x = 20, y = 10, tmp = 10

1.3 변수의 명명규칙

식별자(identifier)는 같은 영역 내에서 서로 구분될 수 있어야 한다.

식별자 규칙

  1. 대소문자가 구분되며 길이에 제한이 없다.
  2. 예약어를 사용해서는 안 된다.
  3. 숫자로 시작해서는 안 된다.
  4. 특수문자는 ‘_‘와 ‘$’만을 허용한다.


2. 변수의 타입

사용하는 값(data)의 종류(type)는 크게 문자와 숫자로 나누며
숫자는 다시 정수와 실수로 나눌 수 있다.

이러한 값(data)의 종류(type)에 따라 값이 저장될 공간의 크기와 저장형식을 정의한 것이 자료현(data type)이다.

  • 자료형(data type) : 문자형(char), 정수형(byte, short,int, long), 실수형(float, double) 등이 있다.

기본형과 참조형
자료형은 크게 기본형참조형으로 나눌 수 있다.

  • 기본형(primitive type)
    논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float,double)
    계산을 위한 실제 값을 저장한다. (모두 8개)
  • 참조형(reference type)
    객체의 주소를 저장한다. 8개의 기본형을 제외한 나머지 타입

2.1 기본형(primitive type)

기본형의 종류

분류 타입
논리형 boolean
true, false 중 하나를 값으로 가지며, 조건식와 논리적 계산에 사용
문자형 char
문자를 저장하는데 사용되며, 변수에 하나의 문자만 저장 가능
정수형 byte, short, int, long
정수를 저장할 때 사용
실수형 float, double
실수를 저장할 때 사용

기본형의 종류와 크기

종류 \ 크기 1byte 2byte 4byte 8byte
논리형 boolean                  
문자형       char            
정수형 byte short int long
실수형             float double

2.2 상수와 리터럴 (constant & literal)

상수(constant)는 변수와 마찬가지로 값을 저장할 수 있는 공간이지만, 변수와 달리 한 번 값을 저장하면 다른 값으로 변경할 수 있다.
상수를 선언하는 방법은 변수와 동일하며, 단지 변수의 타입 앞에 키워드 ‘final’을 붙여주기만 하면 된다.

1
finalint MAX_SPEED = 10;    // 상수 MAX_SPEED를 선언 & 초기화

그리고 상수는 반드시 선언과 동시에 초기화해야 하며, 그 후 부터는 상수의 값을 변경하는 것이 허용되지 않는다.

1
2
3
final int MAX_SPEED;    //에러, 상수는 선언과 동시에 초기화해야 한다.
final int MAX_VALUE = 100;  //OK, 선언과 동시에 초기화
MAX_VALUE = 200;    //에러, 상수의 값은 변경할 수 없다.

상수의 이름은 모두 대문자로 하는 것이 암묵적인 관계

리터럴(literal)

상수의 다른 이름이다.

  • 변수(variable) : 하나의 값을 저장하기 위한 공간
  • 상수(constant) : 값을 한번만 저장할 수 있는 공간
  • 리터럴(literal) : 그 자체로 값을 의미하는 것
1
2
3
4
5
int year = 2014;
final int MAX_VALUE = 100;

//year : 변수, 2014 : 리터럴
//MAX_VALUE : 상수, 100 : 리터럴

리터럴의 타입과 접미사

종류 리터럴 접미사
논리형 false, true 없음
정수형 123, 0b0101, 077, 0xFF, 100L L
실수형 3.14, 3.0e8, 1.4f, 0x1, 0p-1 f, d
문자형 ‘A’, ‘1’, ‘\n’ 없음
문자열 “ABC”, “123”, “A”, “true” 없음

16진수 표시를 위해 리터럴 앞에 접두사 ‘0x’ 또는 ‘0X’를, 8진수의 경우에는 ‘0’을 붙인다.

1
2
3
int octNum = 010;   //8진수 10, 10진수로 8
int hexNum = 0x10;  //16진수 10, 10진수로 16
int binNum = 0b10;  //2진수 10, 10진수로 2

실수형에서는 float타입의 리터럴에 접미사 ‘f’ 또는 ‘F’를 붙이고, double타입의 리터럴에는 접미사 ‘d’ 또는 ‘D’를 붙인다.

1
2
float pi = 3.14f;   //접미사 f 대신 F를 사용해도 된다.
double rate = 1.618d;   //접미사 d 대신 D를 사용해도 된다.

타입의 불일치

리터럴의 타입은 저장될 변수의 타입과 일치하는 것이 보통이지만, 타입이 달라도 저장범위가 넓은 타입에 좁은 타입의 값을 저장하는 것은 허용된다.

1
2
3
int i = 'A';        //OK, 문자 'A'의 유니코드인 65가 변수 i에 저장된다.
long i = 123;       //OK, int보다 long타입이 더 범위가 넓다.
double d = 3.14f;   //OK, float보다 double 타입이 더 범위가 넓다.

2.3 형식화된 출력 - printf()

자주 사용되는 printf()의 지시자

지시자 설명
%b 불리언(boolean) 형식으로 출력
%d 10진(decimal) 정수의 형식으로 출력
%o 8진(octal) 정수의 형식으로 출력
%x, %X 16진(hexa-decimal) 정수의 형식으로 출력
%f 부동 소수점(floating-point)의 형식으로 출력
%e, %E 지수(exponent) 표현식의 형식으로 출력
%c 문자(character)로 출력
%s 문자열(string)로 출력

2.4 화면에서 입력받기 - Scanner

  • 예제 2-6 ScannerEx.java
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
      import java.util.*; //Scanner를 사용하기 위해 사용
    
      class ScannerEx {
          public static void main(String[] args) {
              Scanner scanner = new Scanner(System.in);
    
              System.out.print("두 자리 정수를 하나 입력해주세요 > ");
              String input = scanner.nextLine();
              int num = Integer.parseInt(input);  //입력받은 문자열을 숫자로 변환
    
              System.out.println("입력내용 : " +input);
              System.out.println("num = %d%n", num)
          }
      }
    
  • 결과
    1
    2
    3
    
      두 자리 정수를 하나 입력해주세요 > 77
      입력내용 : 77
      num = 77
    


3. 기본형 (primitive type)

3.1 논리형 - boolean

논리형에는 boolean 한 가지 밖에 없다.
true, flase 중 하나를 저장할 수 있으며 기본값은 false이다.

1
2
boolean power = true;
boolean checked = False;    //에러,대소문자가 구분된. true 또는 flase만 가능

3.2 문자형 - char

문자형에도 char 한 가지 자료형밖에 없다.

1
2
3
4
5
char ch = 'A';  //문자 'A'를 char 타입의 변수 ch에 저장

char ch = 65;   //문자의 코드를 직접 변수 ch에 저장

int code = (int)ch; //ch에 저장된 값을 int타입으로 변환하여 저장

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

정수형에는 모두 4가지 자료형이 있으며, 각 자료형이 저장할 수 있는 값의 범위가 서로 다르다.

byte < short < int < long
     (1)     (2)     (4)     (8)

3.4 실수형 - float, double

실수형은 실수를 저장하기 위한 타입으로 float, double 두 가지가 있다.

타입 저장 가능한 값의 볌위 (양수) 정밀도 bit byte
float 1.4 * 10^-45 ~ 3.4 * 10^38 7자리 32 4
double 1.4 * 10^-45 ~ 3.4 * 10^38 15자리 64 8


4. 형변환

4.1 형변환(캐스팅, casting)이란?

형변환이란, 변수 또는 상수의 타입을 다른 타입으로 변환하는 것

ex) int 타입의 값과 float타입의 값을 더하는 경우, 먼저 두 값을 같은 타입으로 즉, 둘 다 float타입으로 변환한 다음에 더해야 한다.

4.2 형변환 방법

(타입)피연산자

  • 예제 2-12 CastingEx1.java
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
      class CastingEx1 {
          public static void main(String[] args) {
              double d = 85.4;
              int score = (int)d;
    
              System.out.println("score = " + score);
              System.out.println("d = d" + d);
          }
      }
    
  • 결과
    1
    2
    
      score = 85
      d = 85.4    //형변환 후에도 피연산자에는 아무런 변화가 없다.
    


🌞 정보 : 공부 기록용 블로그입니다. 오타나 내용 오류가 있을 경우 알려주시면 감사하겠습니다.

태그:

카테고리:

업데이트:

댓글남기기