변수(Variable)란?
변하는 수
하나의 값을 저장할 수 있는 저장공간.
변수의 타입(Data type)
■ 기본형(Primitive Type)
- 8개 (boolean, char, byte, short, int, long, float, double)
- 실제 값을 저장
■ 참조형(Reference type)
- 기본형을 제외한 나머지(String, System 등...)
- 객체의주소를 저장(4byte, 0x00000000~0xffffffff)
기본형(Primitive Type)
논리형 - true와 false 중 하나의 값으로 갖으며, 조건식과 논리적 계산에 사용
문자형 - 문자를 저장하는데 사용되며, 변수 당 하나의 문자만을 저장할 수 있다.
정수형 - 정수 값을 저장하는데 사용된다. 주로 사용하는 것은 int와 long이며, byte는 이전데이터를 다루는데 사용되며, short는 c언어와 호환을 위해 추가되었다.
실수형 - 실수 값을 저장하는데 사용, float와 double이 있다.
변수의 선언 방법
★ 타입 변수명
int score;
score 100;
int score 100;
String str = new String("abc");
str = null;
명명규칙(Naming convention)
대소문자가 구분되며 길이에 제한이 없다 // True와 true는 서로 다른 것으로 간주된다.
예약어(Reserved word)를 사용해서는 안 된다. // ture는 예약어라 사용할 수 없지만, True는 가능하다.
숫자로 시작해서는 안 된다. // top10은 허용하지만, 7up은 허용되지 않는다.
특수문자는 '_' 와 '$' 만을 허용한다. // $harp은 허용되지만 S#arp는 허용되지 않는다.
명명규칙 - 권장사항
클래스 이름의 첫 글자는 항상 대문자로 한다. // 변수와 메서드 이름의 첫 글자는 항상 소문자로 한다.
여러 단어 이름은 단어의 첫 글자를 대문자로 한다. // lastIndexOf, StringBuffer
상수의 이름은 대문자로 한다. 단어는 '_'로 구분한다. // PI, MAX_NUMBER
변수, 상수, 리터럴
변수(variable) - 하나의 값을 저장하기 위한 공간
상수(constant) - 한 번만 값을 저장할 수 있는 공간
리터럴(literal) - 그 자체로 값을 의미하는것
int score = 100; score = 200; char ch = 'A'; String str = "abc"; final in MAX = 100; MAX = 200; // 에러, 상수의 값은 변경불가!
리터럴과 접미사
boolean power = true; char ch = ‘A’; char ch = ‘\u0041’; char tap = ‘\t’; byte b = 127; short s = 32767; int I = 100; int oct = 0100; int hex = 0x100;
long l = 10000000000L; float f = 3.14f; double d = 3.14d float f = 100f; 10. -> 10.0 .10 -> 0.10 10f -> 10.0f 3.14e3f -> 3140.0f 1e1 -> 10.0
변수의 기본값과 초기화
변수의 초기화 ?
- 변수에 처름으로 값을 저장하는 것
* 지역변수는 사용되기 전에 반드시 초기화해주어야 한다.
문자와 문자열
정수의 오버플로우(Overflow)
부호가 없는 정수
부호가 있는 정수
형변환(Casting)
형변환이란?
- 값의 타입을 다른 타입으로 변환하는 것
- boolean을 제외한 7개의 기본형은 서로 형변환이 가능
folat f = 1.6f;
int i = (int)f;
1. byte -> int
byte b = 10;
int i = (int) b; // 생략가능
2. int -> byte
int i2 = 300;
byte b2 = (byte) i2; // 생략불가
형식화된 출력 - printf()
▶ println()의 단점 - 출력방식을 지정불가하다는 점!
1. 실수의 자리수를 조절불가 - 소수점 n 자리만 출력하려면?
System.out.println(10.0 / 3); // 3.333333....
2. 10진수로만 출력된다. - 8진수, 16진수로 출력하려면?
System.out.println(0x1A); // 26
▶ printf() 로 출력형식 지정가능하다.
System.out.println("%.2f", 10.0/3); // 3.33
System.out.println("%d", 0x1A); // 26
System.out.println("%X", 0x1A); // 1A
printf()의 지시자
%b : 불리언(boolean) 형식으로 출력 (true or false)
%d : 10진수(decimal) 형식으로 출력
%o : 8진수(octal) 형식으로 출력
%x, %X : 16진수(hexa-decimal) 형식으로 출력 (%x는 소문자로, %X는 대문자로 출력)
%f : 부동 소수점(floating point) 형식으로 출력
%e, %E : 지수(exponent) 형식으로 출력
%c : 문자(character) 형식으로 출력 (Unicode)
%s : 문자열(string) 형식으로 출력
public static void main ( String [] args ) {
System . out . printf ( "age:%d year:%d\n" , 14 , 2017 ) ;
// "age:14 year:2017\n" 이 화면에 출력된다.
int age = 10 ;
System . out . printf ( "age:%d" , age ) ; // 출력 후 줄바꿈을 하지 않는다.
System . out . printf ( "age:%d\n" , age ) ; // 출력 후 줄바꿈을 한다.
System . out . printf ( "=================" ) ;
// 정수를 10진수, 8진수, 16진수로 출력
System . out . printf ( "%d\n" , 15 ) ; // 15 >> 10진수
System . out . printf ( "%o\n" , 15 ) ; // 17 >> 8진수
System . out . printf ( "%x\n" , 15 ) ; // f >> 16진수
System . out . printf ( "%s\n" , Integer . toBinaryString ( 15 )) ; // 1111 >> 2진수
// 8진수와 16진수에 접두사 붙이기
System . out . printf ( "%#o\n" , 15 ) ; // 017
System . out . printf ( "%#x\n" , 15 ) ; // 0xf
System . out . printf ( "%#X\n" , 15 ) ; // 0xF
// 실수 출력을 위한 지시자 %f - 지수형식(%e), 간단한 형식(%g)
float f = 123.4567890f ;
System . out . printf ( "%f" , f ) ; // 123.456787 소수점 아래 6자리
System . out . printf ( "%e" , f ) ; // 1.2345678e+02 지수형식
System . out . printf ( "%g" , 123.456789 ) ; // 123.457 간략한 형식
System . out . printf ( "%g" , 0.00000001 ) ; // 1.00000e-8 간략한 형식
System . out . printf ( "[%5d]%n" , 10 ) ; // [ 10]
System . out . printf ( "[%-5d]%n" , 10 ) ; // [10 ]
System . out . printf ( "[%05d]%n" , 10 ) ; // [00010]
화면에서 입력받기 - Scanner
★ Scanner 란?
화면으로부터 데이터를 입력받는 기능을 제공하는 클래스
★ Scanner를 사용하려면
1. import 문 추가
import java.util.Scanner;
2. Scanner 객체의 생성
Scanner scanner = new Scanner(System.in);
3. Scanner 객체를 사용
Scanner scanner = new Scanner ( System . in ) ;
int num = scanner . nextInt () ; // 화면에서 입력받은 정수를 num 에 저장
String input = scanner . nextLine () ; // 화면에서 입력받은 내용은 input에 저장
int num = Integer . parseInt ( input ) ; // 문자열(input)을 숫자( num )로 변환