변수 개념
값을 저장할 수 있는 메모리 상의 공간 → “단 하나의 값”
변수의 초기화
두 변수의 값 교환하기
int x = 10;
int y = 20;
int tmp;
식별자
식별자(identifier): 프로그래밍에서 사용하는 모든 이름 → 서로 구분될 수 있어야 함
명명 규칙
대소문자가 구분되며, 길이에 제한이 없다
예약어를 사용해서는 안 된다 (구문 사용 단어)
숫자로 시작해서는 안 된다
특수문자는 ‘_’와 ‘$’만을 허용한다.
코딩 컨벤션
클래스 이름의 첫 글자는 항상 대문자로 한다
→ 변수와 메서드의 이름 첫 글자는 항상 소문자로 한다
여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다
ex) lastIndexOf, StringBuffer
상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 ‘_’로 구분한다
ex) PI, MAX_NUMBER
‘의미 있는 이름’ ← 변수의 선언문에 주석으로 정보를 주는 것도 좋다
자료형
기본형과 참조형
논리형, 문자형, 정수형, 실수형
기본 자료형의 종류와 크기
Fig 1. Java 기본 자료형의 값 범위 및 크기 |
---|
![]() |
각 타입의 변수가 저장할 수 있는 값의 범위
상수
리터럴
상수가 필요한 이유
리터럴의 타입과 접미사
Fig 2. 타입 종류에 따른 리터럴과 접미사 |
---|
![]() |
long big = 100_000_000_000L;
long hex = 0xFFFF_FFFF_FFFF_FFFL;
float pi = 3.14f; // float pi = 3.14; <- Error!
double rate = 1.618d;
타입의 불일치
int i = 'A';
long l = 123;
double d = 3.14f;
int i = 0x123456789; // 에러. int값 범위 넘음
float f = 3.14; // 에러. float 범위 < double 범위
문자 리터럴과 문자열 리터럴
String str = ""; // OK. 내용이 없는 빈 문자열
char ch = ''; // 에러. '' 안에 반드시 하나 필요
char ch = ' '; // OK. 공백 문자로 변수 초기화.
println()과 printf()의 차이
printf()의 지시자
Fig 3. printf() 지시자 |
---|
![]() |
‘%5d’ → 5자리 차지, 우측 정렬, 나머지 빈 공간
‘%-5d’ → 5자리 차지, 좌측 정렬, 나머지 빈 공간
‘%0d’ → 5자리 차지, 우측 정렬, 나머지 0
지시자 ‘%x’와 ‘%o’에 ‘#’을 사용하면 접두사 ‘0x’와 ‘0’이 각각 붙는다
→ 그리고 ‘%X”는 16진수 사용 접두사와 영문자를 대문자로 출력한다
System.out.printf("c=%c, %d %n", c, (int)c); // 형변환이 꼭 필요하다
→ int 타입으로 형변환해야만 ‘%d’로 출력할 수 있다.System.out.printf("d = %14.10f%n", d);
// 전체 14자리 중 소수점 아래 10자리, 소수점 아래 빈 자리는 모두 0, 정수의 빈자리는 공백
System.out.printf("d = %014.10f%n", d);
// 전체 14자리 중 소수점 아래 10자리, 소수점 아래와 정수부 양쪽 빈자리를 모두 0으로 채움
→ 소수점 아래의 자리수를 지정할 수도 있다System.out.printf("[%s]%n", url); // 문자열의 길이만큼 출력공간 확보
System.out.printf("[%20s]%n", url); // 최소 20글자 출력공간 확보. (우측 정렬)
System.out.printf("[%-20s]%n", url); // 최소 20글자 출력공간 확보. (좌측 정렬)
System.out.printf("[%.8s]%n", url); // 왼쪽에서 8글자만 출력
System.out.printf("[%8.8s]%n", url); // 오른쪽에서 8글자만 출력
Scanner 클래스 이용 전
Scanner 클래스 이용 과정
import java.util.*
Scanner scanner = new Scanner(System.in); // Scanner 클래스의 객체를 생성
String input = scanner.nextLine(); // 입력 받은 내용을 input에 저장
int num = Integer.parseInt(input); // 입력받은 내용을 input 타입의 값으로 변환
// 입력받은 문자열을 숫자로 변환하려면 Integer.parseInt() 이용 (string -> int)
// 입력받은 문자열을 정수로 변환하려면 Float.parseFloat() 이용 (string -> float)
import java.util.*;
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.printf("num=%d%n", num);
}
}
→ 그러나 연속적으로 값을 입력 받아 사용하기에 까다롭다 → 모든 값을 nextLine()으로 입력받아 적절히 변환하는 게 낫다 → 숫자가 아닌 문자 또는 기호를 입력하면, 에러 발생 (공백 입력 주의!)