프로그래밍의 첫단추는 값을 잘 전달하는 것이다. 값을 저장하는 공간인 변수에 대해서 잘 끼워보자.
변수 = 변하는 수
"변수란, 단 하나의 값을 저장할 수 있는 메모리 공간"
변수타입 = 변수에 저장될 값이 어떤 '타입(type)'으로 저장는지 지정하는 것이다.
변수이름 = 변수에 붙인 이름이다. 즉, 주소 값과 같은 개념이다.
Int age;
Int(변수 타입) age(변수 이름)
변수의 명명 규칙
- 대소문자가 구분되며 길이에 제한이 없다.
- True와 true는 서로 다른 것으로 간주한다.
- 예약어를 사용해서는 안 된다.
- True는 예약어라서 사용할 수 없지만, True는 가능하다.
- 숫자로 시작해서는 안 된다.
- Top10은 허용하지만, 7up은 허용하지 않는다.
- 특수문자는 '_'와 '$'만을 허용한다.
- $harp는 허용되지만, S#arp는 허용하지 않는다.
자바 프로그래머들에게 권장하는 규칙
- 클래스 이름의 첫 글자는 항상 대문자로 한다.
- 변수와 메서드의 이름의 첫 글자는 항상 소문자로 한다.
- 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
- lastIndexOf, StringBuffer
- 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다.
- PI, MAX_NUMBER
변수타입
우리가 주로 사용하는 값의 종류는 크게 문자와 숫자로 구분되고 숫자는 다시 정수와 실수로 나뉜다.
값이 저장될 공간의 크기와 저장형식을 정의한 것이 자료형이다.
자료형에는 문자형, 정수형, 실수형이 존재한다.
기본형 변수는 실제 값을 저장하는 반면, 참조형 변수는 어떤 값이 저장되어 있는 주소(Memory address)를 값으로 갖는다.
기본형(primitive type)
기본형의 종류와 크기
종류 | 1byte | 2byte | 3byte | 4byte |
---|---|---|---|---|
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
참조형(reference type)
- 객체의 주소를 저장한다. 8개의 기본형을 제외한 나머지 타입.
클래스 이름 변수이름; // 변수의 타입이 기본형이 아닌 것들은 모두 참조변수이다.
상수
상수는 변수와 마찬가지로 값을 저장할 수 있는 공간이지만, 변수와 달리 한번 값을 저장하면 다른 값으로 변경할 수 없다. 상수를 선언하는 방법은 변수와 동일하며, 단지 변수의 타입 앞에 키워드 'final'을 붙여주면 된다.
final int MAX_SPEED = 10; 선언과 동시에 초기화해야한다.
따라서 final int MAX_SPEED;는 오류 발생한다.
리터럴(literal)
변수(variable) 하나의 값을 저장하기 위한 공간
상수(constant) 값을 한번만 저장할 수 있는 공간
리터럴(literal) 그자체로 값을 의미하는 것
int year(변수) = 2014(리터럴);
final int MAX_VALUE (상수)= 100(리터럴);
리터럴의 타입과 접미사
리터럴에는 논리형, 정수형, 실수형, 문자형, 문자열이 존재한다. 이 중 정수형과 실수형에만 리터럴에 접미사가 붙을 수 있다.
정수형의 경우 long타입의 리터럴에 접미사 'l' 또는 'L'을 붙이고 접미사가 없으면 int타입의 리터럴이다.
실수형의 경우 float타입의 리터럴에 접미사 'f'또는 'F'를 붙이고 double타입의 리터럴에는 'd'또는 'D'가 붙는다.
형식화된 출력 - printf()
printf()는 '지시자'를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력하는 기능을 가지고 있다.
자주 사용되는 printf()의 지시자
지시자 | 설명 |
---|---|
%d | 불리언(boolean) 형식으로 출력 |
%b | 10진(decimal) 정수의 형식으로 출력 |
%o | 8진(octal) 정수의 형식으로 출력 |
%x, %X | 16진(hexa-decimal) 정수의 형식으로 출력 |
%f | 부동 소수점(floating-point)의 형식으로 출력 |
%e, %E | 지수(exponent)표현식의 형식으로 출력 |
%s | 문자열(String)으로 출력 |
ex System.out.printf("age: %d", age) // "age:14"가 화면에 출력된다.
System.out.printf("finger: =[%5d]", 10)
Scanner
Scanner scanner = new Scanner(System.in); //Scanner클래스의 객체를 생성
String input = scanner.nextLine(); //입력받은 내용을 input에 저장
int num = Integer.parseInt(input); //입력받은 내용을 int타입의 값으로 변환
int num = Interger.parseInt(); //정수를 입력받아서 변수 num에 저장
문자열을 입력하는 과정에서 공백을 입력시 Integer.parseInt()에서 오류가 발생한다.
출처 : JAVA의 정석 - (남궁성지음)