[TIL] Java 220530

HJ Kim·2022년 5월 30일
0

TIL

목록 보기
4/27

Chapter 2 : 변수 (Variable)

1. 상수와 리터럴 (constant & literal)

(1) 상수 (constant)

  • 상수는 변수와 달리 한 번 값을 저장하면 다른 값으로 변경할 수 없다.
  • 상수를 선언하는 방법은 변수와 동일
  • 단지 변수의 타입 앞에 키워드 'final' 을 붙이기만 하면 됨
  • 뿐만 아니라 선언과 동시에 초기화 해야하며 변경은 불가능
final int MAX_SPEED = 10;

(2) 리터럴(literal)

  • 단지 리터럴은 우리가 기존에 알고 있던 '상수'의 다른 이름

    변수 (Variable) : 하나의 값을 저장하기 위한 공간
    상수 (Constant) : 값을 한 번만 저장할 수 있는 공간
    리터럴 (Literal) : 그 자체로 값을 의미하는 것

=> 상수가 필요한 이유? : 리터럴에 '의미있는 이름'을 붙여줘서 코드의 이해와 수정을 쉽게 만듬.

(3) 리터럴의 타입과 접미사

논리형 : 없음
정수형 : L
실수형 : f, d
문자형 : 없음
문자열 : 없음

(정수형인 Long인 경우엔 L이 생략 가능, 실수형인 Double의 경우엔 d 생략 가능. 그 얘기는 반대로 말하면 float의 경우에는 d 가 없는 경우엔 Double로 값을 인식하므로 반드시 f를 써줘야 한다)

float pi = 3.14; // 에러. float 타입 변수에 double 타입 리터럴 저장 불가
double rate = 1.618; // OK. 접미사 d는 생략할 수 있다.

(4) 문자 리터럴과 문자열 리터럴

  • 문자 하나를 작은따옴표로 감싼 것을 '문자 리터럴' (char)
  • 두 문자 이상은 큰 따옴표로 감싸야 하며 '문자열 리터럴' (string)
char ch = 'J';
String name = "Java";

- 원래 String은 Data Type이 아닌 클래스이기 때문에 아래와 같이 사용해야하지만 위와 같이 변수 선언 하듯이 해도 된다.

String name = nre String("Java"); // String 객체를 생성

2. 형식화된 출력 - printf()

지금까지는 화면에 출력시 println()을 써왔다. 편하긴 한데 println()의 경우엔 값을 변환하지 않으면 다른 형식으로 출력할 수 없다.

하지만 우리는 같은 값이라도 다른 형식으로 출력하고 싶을 때가 있다.
(ex. 소수점 둘째자리까지만 출력, 또는 정수를 16진수나 8진수로 출력)

이럴땐 printf() 를 사용하면 됨

System.out.printf("age:%d", age);
-> System.out.printf("age:%d", 14);
-> System.out.printf("age:14"); // "age:14"가 화면에 출력

(이때 %d같이 어떻게 값을 출력 할 것인지 지정해주는 역할을 하는 것을 지시자 (Specifier) 라고 한다.)

printf()의 지시자 중에서 자주 사용되는건 아래와 같다.

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

3. 화면에서 입력받기 - Scanner

여러가지 방법이 있지만 Scanner 클래스 사용

  • Scanner 클래스를 사용하기 위해선 아래의 한 문장을 추가
import java.util.*;
  • Scanner 클랙스의 객체 생성
Scanner scanner = new Scanner(System.in);
  • 그리고 nextLine() 메서드를 호출하면 입력대기 상태에 있다가 입력을 마치고 '엔터키' 를 누르면 입력한 내용이 문자열로 반환
String input = scanner.nextLine();
int num = Integer.partIne(input); // 입력받은 내용을 int 타입의 값으로 변환
profile
티끌모아 태산을 아는 사람

0개의 댓글