on
변수 Variable 1편
변수 Variable
이 글은 남궁성님의 자바의 정석 3/e을 기반으로 공부한 내용을 정리한 글입니다.
변수
1.1 변수(variable)란?
변수란 단 하나의 값을 저장할 수 있는 메모리 공간을 말한다. 하나의 변수에 단 하나의 값만 저장할 수 있으므로, 새로운 값을 저장하면 기존의 값은 사라진다.
1.2 변수의 선언과 초기화
변수의 선언방법은 다음과 같다.
int age;
여기서 int
는 변수타입이다. 변수타입은 변수에 저장될 값이 어떤 ‘타입(type)’인지를 지정하는 것이다. 저장하고자 하는 값의 종류에 맞게 선택해서 적어주면 된다.
age
는 변수이름이다. 변수이름은 말 그대로 변수에 붙은 이름이다. 변수는 ‘값을 저장할 수 있는 메모리 공간’이므로 변수의 이름은 메모리 공간에 이름을 붙여주는 것이다. 변수끼리는 서로 구별할 수 있어야하기 때문에 같은 이름이 여러 개 존재해서는 안된다.
변수를 선언하면, 메모리의 빈 공간에 변수타입에 알맞은 크기의 저장공간이 확보되고, 이 저장공간은 변수이름을 통해 사용할 수 있게 된다.
변수의 초기화
변수의 초기화란 변수를 사용하기 전에 처음으로 값을 저장하는 것이다.
변수를 선언한 이후부터 변수를 사용할 수 있지만, 그 전에 반드시 변수를 초기화(initialization)해야 한다. 왜냐하면 메모리는 공유 자원이기 때문에 다른 프로그램에 의해 ‘알 수 없는 값(쓰레기값, garbage value)’가 남아있을 수 있기 때문이다.
변수에 값을 저장할 때는 대입 연산자 ‘=’를 이용한다. 대입연산자는 오른쪽의 값을 왼쪽(변수)에 저장하라는 뜻이다. 따라서 왼쪽에는 반드시 변수가 와야한다.
아래의 두 코드는 같은 의미의 다른 코드이다. 타입이 같은 경우 콤마 ‘,’를 구분자로 여러 변수를 한 줄에 선언할 수 있다.
int a;
int b;
int x = 0;
int y = 0;
int a, b;
int x = 0, y = 0;
변수의 종류에 따라 초기화를 생략할 수 있지만, 사용되기 전에 적절한 값으로 초기화 하는 것이 좋다.
| 참고 | 지역변수는 사용되기 전에 초기화를 반드시 해야 하지만, 클래스변수와 인스턴스변수는 초기화를 생략할 수 있다.
두 변수의 값 교환하기
변수 x, y가 있을 때, 두 변수에 담긴 값을 교환하려면 그냥 변수 x의 값을 y에 저장하고 y의 값을 x에 저장하면 안된다. x의 값을 y에 저장하는 순간, 이미 y의 값이 사라졌기 때문에 y의 값을 x로 가져와도 의미가 없게 된다.
이를 해결하기 위해 임의의 변수를 하나 더 선언하여 임시 저장소로 사용하면 된다.
class VarEx {
public static void main(String[] args) {
int x = 10, y = 20;
int tmp = 0;
System.out.println("x : " + x + " y : " + y);
tmp = x;
x = y;
y = tmp;
System.out.println("x : " + x + " y : " + y);
}
}
위 예제를 실행하면 결과는 다음과 같다
x : 10 y : 20
x : 20 y : 10
1.3 변수의 명명규칙
‘변수의 이름’처럼 프로그래밍에서 사용하는 모든 이름을 식별자(identifier)라고 하며, 식별자는 같은 영역 내에서 서로 구분(식별)될 수 있어야한다. 그리고 식별자를 만들 때는 다음과 같은 규칙을 지켜야 한다.
-
대소문자가 구분되며 길이에 제한이 없다.
- True와 true는 서로 다른 것으로 간주된다. -
예약어를 사용해서는 안 된다.
- true는 예약어라서 사용할 수 없지만, True는 가능하다. -
숫자로 시작해서는 안 된다.
- top10은 허용되지만, 7up은 허용되지 않는다. -
특수문자는 ‘_‘와 ‘$‘만을 허용한다.
- $harp은 허용되지만, $#arp은 허용되지 않는다.
예약어는 키워드(keyword) 또는 ‘리저브드 워드(reserved word)’라고 하는데, 프로그래밍언어의 구문에 사용되는 단어를 뜻한다. 따라서 예약어는 클래스나 변수, 메서드의 이름(identifier)으로 사용할 수 없다.
그 외에 필수적인 것은 아니지만 권장하는 규칙은 다음과 같다.
-
클래스 이름의 첫 글자는 항상 대문자로 한다.
- 변수와 메서드 이름의 첫 글자는 항상 소문자로 한다. -
여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
- lastIndexOf, StringBuffer 등등 -
상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 ‘_‘로 구분한다.
- PI, MAX_NUMBER
| 참고 | 모든 이름에는 유니코드에 포함된 문자들을 사용할 수 있지만, 적어도 클래스이름은 ASCII(영문자)로 하는 것이 좋다. 유니코드를 인식하지 못하는 운영체제(OS)도 있기 때문이다.
변수 이름은 짧을수록 좋지만, 약간 길더라도 용도를 알기 쉽게 의미있는 이름으로 하는 것이 바람직하다. 변수의 선언문에 주석으로 정보를 주는 것도 좋은 방법이다.
변수의 타입
우리가 주로 사용하는 값(data)의 종류(type)은 크게 문자와 숫자로 나눌 수 있으며, 숫자는 다시 정수와 실수로 나눌 수 있다. 이러한 값(data)의 종류(type)에 따라 값이 저장될 공간의 크기와 저장형식을 정의한 것이 자료형(data type)이다. 자료형에는 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) 등이 있으며, 변수를 선언할 때는 저장하려는 값의 특성을 고려하여 가장 알맞은 자료형을 변수의 타입으로 선택하면 된다.
두 변수의 값 교환하기
자료형은 크게 기본형과 참조형 두 가지로 나눌 수 있는데, 기본형 변수는 실제 값(data)을 저장하는 반면, 참조형 변수는 어떤 값이 저장되어 있는 주소(memory address)를 값으로 갖는다. 자바는 C언어와 달리 참조형 변수 간의 연산을 할 수 없으므로 실제 연산에 사용되는 것은 모두 기본형 변수이다.
| 참고 | 메모리에는 1 byte 단위로 일련번호가 붙어있는데, 이 번호를 ‘메모리 주소(memory address)’ 또는 간단히 ‘주소’라고 한다. 객체의 주소는 객체가 저장된 메모리 주소를 뜻한다.
기본형(primitive type)
- 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double)
계산을 위한 실제 값을 저장한다.참조형(reference type)
- 객체의 주소를 저장한다. 8개의 기본형을 제외한 나머지 타입.
참조형 변수(또는 참조변수)를 선언할 때는 변수의 타입으로 클래스의 이름을 사용하므로 클래스의 이름이 참조변수의 타입이 된다. 따라서 새로운 클래스를 작성한다는 것은 새로운 참조형을 추가하는 셈이다.
참조변수를 선언하는 방법은 기본형 변수와 같이 변수이름 앞에 타입을 적어주는데 참조변수의 타입은 클래스의 이름이다.
클래스이름 변수이름; // 변수의 타입이 기본형이 아닌 것들은 모두 참조변수이다.
참조변수는 null 또는 객체의 주소를 값으로 가진다. 예를 들어 Date 클래스 타입의 참조변수 today를 선언했을 때 참조변수의 초기화는 다음과 같다.
Date today = new Date(); // Date 객체를 생성해서, 그 주소를 today에 저장한다.
객체를 생성하는 연산자 new의 결과는 생성된 객체의 주소이다. 이 주소가 대입연산자에 의해서 참조변수 today에 저장되고 참조변수 today를 통해서 생성된 객체를 사용할 수 있게 된다.
| 참고 | 참조형 변수는 null 또는 객체의 주소(4 byte, 0x0 ~ 0xFFFFFFFF)를 값으로 갖는다. null은 어떤 객체의 주소도 저장되어 있지 않음을 뜻한다. 단, JVM이 32 bit가 아니라 64 bit라면 참조형 변수의 크기는 8 byte가 된다.
Q. 자료형(data type)과 타입(type)의 차이? A. 기본형은 저장할 값(data)의 종류에 따라 구분되므로 기본형의 종류를 말할 때는 자료형이라는 용어를 쓴다. 그러나 참조형은 항상 객체의 주소(4 byte 정수)를 저장하므로 값(data)이 아닌, 객체의 종류에 의해 구분되므로 참조형 변수의 종류를 구분할 때는 타입(type)이라는 용어를 사용한다. 타입이 자료형을 포함하는 넓은 의미이므로 굳이 구분하지 않아도 된다.
2.1 기본형(primitive type)
기본형에는 모두 8개의 타입(자료형)이 있으며, 크게 논리형, 문자형, 정수형, 실수형으로 구분된다.
논리형 | boolean true와 false 중 하나를 값으로 가지며, 조건식과 논리적 계산에 사용된다. |
문자형 | char 문자를 저장하는데 사용되며, 변수에 하나의 문자만 저장할 수 있다. |
정수형 | byte, short, int, long 정수를 저장하는데 사용되며, 주로 int가 사용된다. byte는 이진 데이터를 다룰 때 사용되며, short은 C언어와의 호환을 위해서 추가되었다. |
실수형 | float, double 실수를 저장하는데 사용되며, 주로 double이 사용된다. |
문자형인 char는 문자를 내부적으로 정수(유니코드)로 저장하기 때문에 정수형과 별반 다르지 않으며, 정수형 또는 실수형과 연산도 가능하다. 반면에 boolean은 다른 기본형과의 연산이 불가능하다. 즉, boolean을 제외한 나머지 7개의 기본형은 서로 연산과 변환이 가능하다.
정수는 가장 많이 사용되므로 4가지 타입이 제공된다. 각 타입마다 저장할 수 있는 값의 범위가 다르므로 저장할 값의 범위에 맞는 타입을 선택하면 되지만, 일반적으로 int를 많이 사용한다. CPU가 가장 효율적으로 처리할 수 있는 타입이기 때문인데, 효율적인 실행보다 메모리 절약을 하려면 byte나 short를 사용하면 된다.
| 참고 | 4개의 정수형(byte, short, int, long)중에서 int형이 기본 자료형(default data type)이며, 실수형(float, double)중에서는 double이 기본 자료형이다.
종류 \ 크기 | 1 byte | 2 byte | 4 byte | 8 byte |
---|---|---|---|---|
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
기본 자료형의 종류와 크기는 반드시 외워야 한다. 각 타입의 변수가 저장할 수 있는 값의 범위는 다음과 같다.
| 참고 | float와 double은 양의 범위만 적은 것이다. 음의 범위는 양의 범위에 음수 부호(-)를 붙이면 된다.
int 타입의 변수는 대략 10자리 수(약 20억, 2,000,000,000)의 값을 저장할 수 있다. 7~9자리의 수를 계산할 때는 long타입(약 19자리)으로 변수를 선언하는 것이 좋다. 연산 중에 저장자리를 넘어서게 되면 원하지 않는 값을 결과로 얻게 될 수 있다.
실수형은 정수형과 저장형식이 달라서 같은 크기라도 훨씬 큰 값을 표현할 수 있으나 오차가 발생할 수 있다. 따라서 정밀도(precision)가 중요한데, 정밀도가 높을수록 발생할 수 있는 오차의 범위가 줄어든다.
자료형 | 저장 가능한 값의 범위 | 정밀도 | bit | byte |
---|---|---|---|---|
float | 1.4E-45 ~ 3.4E38 (1.4 x 10-45 ~ 3.4 x 1038) | 7 자리 | 32 | 4 |
double | 4.9E-324 ~ 1.8E308 (4.9 x 10-324 ~ 1.8 x 10308) | 15 자리 | 64 | 8 |
float는 ±1038과 같이 큰 값을 저장할 수 있지만, 정밀도가 7자리이므로 보다 높은 정밀도가 필요한 경우에는 변수의 타입으로 double을 선택해야한다. 실수형에서는 저장 가능한 값의 범위뿐만 아니라 정밀도도 중요한 기준이 된다.
2.2 상수와 리터럴(constant & literal)
‘상수(constant)’는 변수와 마찬가지로 ‘값을 저장할 수 있는 공간’이지만, 변수와 달리 한번 값을 저장하면 다른 값으로 변경할 수 없다. 상수를 선언하는 방법은 변수와 동일하고, 변수의 타입 앞에 키워드 final을 붙여주기만 하면 된다. 그리고 상수는 반드시 선언과 동시에 초기화해야 하며, 그 후에는 상수의 값을 변경할 수 없다. 상수의 이름은 모두 대문자로 하는 것이 암묵적인 관례이며, 여러 단어로 이루어져있는 경우 ‘_‘로 구분한다.
| 참고 | JDK1.6부터 상수를 선언과 동시에 초기화 하지 않아도 되며, 사용하기 전에만 초기화하면 되도록 바뀌었다. 하지만 선언과 동시에 초기화하는 습관을 가지는 것이 좋다.
리터럴(literal)
프로그래밍에서 상수를 ‘값을 한 번 저장하면 변경할 수 없는 저장공간’으로 정의하고 있다. 따라서 프로그래밍에서 의미하는 상수가 아닌 값으로서의 상수를 리터럴이라고 한다.
변수(variable) 하나의 값을 저장하기 위한 공간
상수(constant) 값을 한번만 저장할 수 있는 공간
리터럴(literal) 그 자체로 값을 의미하는 것
상수가 필요한 이유
int triangleArea = (20 * 10) / 2;
int rectangleArea = 20 * 10;
삼각형과 사각형의 면적을 구해서 변수에 저장하는 코드이다.
final int WIDTH = 20;
final int HEIGHT = 10;
int triangleArea = (WIDTH * HEIGHT) / 2;
int rectangleArea = WIDTH * HEIGHT;
상수를 이용해 기존 코드를 변경한 것인데, 이전 코드에 비해 의미가 명확해졌다. 다른 값을 구해야하는 경우에도 여러 곳을 수정할 필요없이 상수의 초기화만 다른 값으로 해주면 된다.
이처럼 리터럴만을 사용해서 코드를 작성할 경우, 다른 값을 원할 경우 여러 곳을 수정해야하고 더 복잡한 공식의 경우 코드를 이해하는 것이 어려워진다. 따라서 상수를 사용하여 리터럴에 의미있는 이름을 붙여 코드의 이해와 수정을 쉽게 만드는 것이다.
리터럴의 타입과 접미사
리터럴에도 타입이 있다. 변수의 타입은 저장될 ‘값의 타입(리터럴의 타입)’에 의해 결정되므로, 리터럴에 타입이 없다면 변수의 타입도 필요없을 것이다.
종류 | ||
---|---|---|
논리형 | 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” | 없음 |
정수형과 실수형에는 여러 타입이 존재하므로, 리터럴에 접미사를 붙여서 타입을 구분한다. 정수형의 경우, long 타입의 리터럴에 접미사 ‘l’ 또는 ‘L’을 붙이고, 접미사가 없으면 int 타입의 리터럴이다. byte와 short 타입의 리터럴은 별도로 존재하지 않으며 byte와 short 타입의 변수에 값을 저장할 때는 int 타입의 리터럴을 사용한다.
10진수 외에도 2, 8, 16진수로 표현된 리터럴을 변수에 저장할 수 있으며, 16진수라는 것을 표시하기 위해 리터럴 앞에 접두사 ‘0x’ 또는 ‘0X’를, 8진수의 경우 ‘0’을 붙인다.
| 참고 | 접두사 ‘0x’, ‘0X’, ‘0b’, ‘0B’, ‘0’에서 ‘0’은 숫자이다. 2진 리터럴은 JDK 1.7부터 추가되었다.
JDK 1.7부터 정수형 리터럴의 중간에 구분자 ‘_‘를 넣을 수 있게 되어서 큰 숫자를 편하게 읽을 수 있게 되었다.
실수형 리터럴은 접미사를 붙여서 타입을 구분하며 float 타입의 리터럴에 접미사 ‘f’ 또는 ‘F’를 붙이고, double 타입의 리터럴에는 접미사 ‘d’ 또는 ‘D’를 붙인다. 정수형에서는 int가 기본 자료형인 것처럼 실수형에서는 double이 기본 자료형이라서 접미사 ‘d’는 생략이 가능하다. 즉 실수형 리터럴인데 접미사가 없다면 double 타입 리터럴인 것이다.
리터럴의 접두사와 접미사는 대소문자 어떤 것을 사용해도 상관없지만, 소문자 ‘l’의 경우 숫자 ‘1’과 구분하기 위해 대문자인 ‘L’을 사용하는 것이 좋다.
리터럴에 소수점이나 10의 제곱을 나타내는 기호 E 또는 e, 접미사 f, F, d, D를 포함하고 있으면 실수형 리터럴로 간주된다.
타입의 불일치
리터럴의 타입은 저장될 변수의 타입과 일치하는 것이 보통이지만, 타입이 달라도 저장범위가 넓은 타입에 좁은 타입을 저장하는 것은 허용된다. 그러나 리터럴의 값이 변수의 타입의 범위를 넘거나, 리터럴의 타입이 변수의 타입보다 저장범위가 넓으면 컴파일 에러가 발생한다.
문자 리터럴과 문자열 리터럴
작은따옴표로 문자 하나를 감싼 것을 문자 리터럴이라고 한다. 두 문자 이상은 큰 따옴표로 감싸야 하며 문자열 리터럴이라고 한다. 문자를 저장할 때는 char 타입, 문자열을 저장할 때는 String 타입을 사용해야 한다.
문자열 리터럴은 안에 아무런 문자도 넣지 않은 것을 허용하며, 이를 빈 문자열(empty string)이라고 한다. 그러나 문자 리터럴은 반드시 하나의 문자가 있어야 한다.
문자열은 덧셈 연산자를 이용하여 결합할 수 있다. 덧셈 연사자는 피연산자가 모두 숫자일 때는 두 수를 더하지만, 어느 한 쪽이 String이면 나머지 한 쪽을 String으로 변환하여 두 String을 결합한다. 따라서 기본형 타입의 값을 문자열로 변환할 때는 아무런 내용도 없는 빈 문자열(““)을 더해주면 된다.
2.3 형식화된 출력 - printf()
println()
은 변수의 값을 그대로 출력하므로, 값을 변환하지 않으면 다른 형식으로 출력할 수 없다. 소수점 둘째자리까지만 출력한다던가, 정수를 16진수나 8진수로 출력하고자 할 때 printf()
를 사용하면 된다.
printf()
는 ‘지시자(specifier)’를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력하는 기능을 가지고 있다. ‘지시자’는 값을 어떻게 출력할 것인지를 지정해주는 역할을 한다. 정수형 변수에 저장된 값을 10진 정수로 출력할 때는 지시자 ‘%d’를 사용하며, 변수의 값을 지정된 형식으로 변환해서 지시자 대신 넣는다.
System.out.printf("age:%d", age);
-> System.out.printf("age:%d", 14);
-> System.out.printf("age:14");
출력하려는 값이 2개라면, 지시자도 2개를 사용해야하며 출력될 값과 지시자의 순서는 일치해야 한다. 3개 이상의 값도 지시자를 지정해서 출력할 수 있으며 개수의 제한은 없다.
printf()
는 println()
과 달리 출력 후 줄바꿈을 하지 않는다. 줄바꿈을 하려면 지시자 ‘%n’을 따로 넣어줘야 한다.
| 참고 | ‘%n’ 대신 ‘\n’을 사용해도 되지만, OS마다 줄바꿈 문자가 다를 수 있기 때문에 ‘%n’을 사용하는 것이 더 확실하다.
printf()
의 지시자 중에서 자주 사용되는 것만 뽑아보면 다음과 같다.
%b | boolean 형식으로 출력 |
%d | 10진(decimal) 정수의 형식으로 출력 |
%o | 8진(octal) 정수의 형식으로 출력 |
%x, %X | 16진(hexa-decimal) 정수의 형식으로 출력 |
%f | 부동 소수점(floating-point) 형식으로 출력 |
%e, %E | 지수(exponent) 표현식의 형식으로 출력 |
%c | 문자(character)로 출력 |
%s | 문자열(string)로 출력 |
정수를 출력할 때는 지시자 ‘%d’를 사용하는데, 출력될 값이 차지할 공간을 숫자로 지정할 수 있다.
class PrintfEx {
public static void main(String[] args) {
int finger = 10;
System.out.printf("finger = [%5d]%n", finger);
System.out.printf("finger = [%-5d]%n", finger);
System.out.printf("finger = [%05d]%n", finger);
}
}
위 예제의 결과를 보면 ‘-‘와 ‘0’의 역할을 알 수 있다. 결과는 다음과 같다.
finger = [ 10]
finger = [10 ]
finger = [00010]
지시자 ‘%x’와 ‘%o’에 ‘#’를 사용하면 각각 접두사 ‘0x’와 ‘0’이 붙는다. 그리고 ‘%X’는 16진수에 사용되는 접두사와 영문자를 대문자로 출력한다.
class PrintfEx {
public static void main(String[] args) {
long hex = 0xFFFF_FFFF_FFFF_FFFFL;
System.out.printf("hex = %x%n", hex);
System.out.printf("hex = %#x%n", hex);
System.out.printf("hex = %#X%n", hex);
}
}
출력 결과는 다음과 같다.
hex = ffffffffffffffff
hex = 0xffffffffffffffff
hex = 0XFFFFFFFFFFFFFFFF
실수형 값의 출력에 사용되는 지시자는 ‘%f’, ‘%e’, ‘%g’가 있는데, ‘%f’가 주로 쓰이고 ‘%e’는 지수형태로 출력할 때, ‘%g’는 값을 간략하게 표현할 때 사용한다. ‘%f’는 기본적으로 소수점 아래 6자리까지만 출력하기 때문에 7자리에서 반올림한다. 그리고 전체 자리수와 소수점 아래의 자리수를 지정할 수도 있다. 이 때 소수점도 한 자리를 차지하며, 소수점 아래의 빈자리는 0으로 채우고 정수의 빈자리는 공백으로 채워서 전체 자리수를 맞춘다.
| 참고 | 지시자를 ‘%014.10’와 같이 지정하면, 양쪽 빈자리를 모두 0으로 채워서 출력된다.
지시자 ‘%s’에도 숫자를 추가해서 원하는 만큼의 출력공간을 확보하거나 문자열의 일부만 출력할 수 있다. 지정된 숫자보다 문자열의 길이가 작으면 빈자리는 공백으로 출력된다. 공백이 있는 경우 기본적으로 우측 끝에 문자열을 붙이지만, ‘-‘를 붙이면 좌측 끝에 붙인다. 그리고 ‘.’을 붙여서 문자열의 일부만 출력할 수 있다.
2.4 화면에서 입력받기 - Scanner
자바에서 화면으로부터 입력받는 방법은 여러가지가 있다. 근본적으로 모두 같기 때문에 상황에 맞는 편리한 것을 선택해서 사용하면 된다. 여러 방법 중 하나는 Scanner 클래스를 이용하는 방법이다.
Scanner 클래스를 사용하려면, 다음 문장을 추가해줘야 한다.
import java.util.*;
그 다음엔 Scanner 클래스의 객체를 생성한다.
Scanner sc = new Scanner(System.in);
그리고 nextLine()
이라는 메서드를 호출하면, 입력대기 상태에 있다가 입력을 마치고 enter를 누르면 입력한 내용이 문자열로 반환된다.
String input = sc.nextLine();
int num = Integer.parseInt(input);
입력받는 문자열을 숫자로 변환하려면 Integer.parseInt()
라는 메서드를 이용해야한다. 이 메서드는 문자열을 int타입의 정수로 변환한다.
| 참고 | 문자열을 float타입의 값으로 변환하길 원하면, Float.parseInt()
를 사용해야한다.
Scanner 클래스에는 nextInt()
나 nextFloat()
와 같이 변환없이 바로 숫자를 입력받을 수 있는 메서드가 있고, 이를 사용하면 문자열을 숫자로 변환하는 과정을 하지 않아도 된다. 그러나 연속적으로 값을 입력받아서 사용하기에는 까다롭기 때문에 입력받는 횟수가 적을 때 사용하는 것이 좋다.
Comments
JAVA 의 다른 글
-
서블릿 컨테이너(Servlet Container)란? 05 May 2021
-
지네릭스, 열거형, 애너테이션 27 Oct 2020
-
컬렉션 프레임웍 2편 16 Oct 2020
-
컬렉션 프레임웍 1편 14 Oct 2020
-
날짜와 시간 & 형식화 12 Oct 2020
-
java.lang패키지와 유용한 클래스 29 Sep 2020
-
예외처리 24 Sep 2020
-
객체지향 프로그래밍 II 2편 21 Sep 2020
-
객체지향 프로그래밍 II 1편 19 Sep 2020
-
객체지향 프로그래밍 I 2편 18 Sep 2020
-
객체지향 프로그래밍 I 1편 16 Sep 2020
-
배열 array 14 Sep 2020
-
조건문과 반복문 if, switch, for, while statement 13 Sep 2020
-
연산자 Operator 2편 13 Sep 2020
-
연산자 Operator 1편 11 Sep 2020
-
변수 Variable 2편 09 Sep 2020
-
변수 Variable 1편 08 Sep 2020
-
자바를 시작하기 전에 07 Sep 2020
-
래퍼 클래스(Wrapper Class)란 무엇인가 30 Aug 2020
-
java.lang.Math 29 Aug 2020
-
진수 변환, 형 변환 29 Aug 2020
-
Arrays.sort() 29 Aug 2020
-
Enhanced for loop 20 Aug 2020
-
toCharArray() 20 Aug 2020