- 변수 선언 : 어떤 타입의 데이터를 저장 할 것인지 변수 이름은 무엇인지 결정
ex) int age;
- 변수 이름 짓기 규칙
- 첫 번째 글자는 문자이거나 '$', '_'이어야 하고 숫자로 시작 할수 없고 문자가 포함될 수 없다.
- 영어 대소문자를 구분한다.
- 첫 문자는 영어 소문자로 시작하고 다른 단어가 붙을 경우 첫 문자를 대문자로 한다.
- 문자수의 제한은 없다.
- 자바 예약어는 사용할 수 없다.
- 변수 사용 : 변수의 값을 읽거나 변경하는 것
public class VariableScopeExample {
public static void main(String[] args) {
int v1 = 15;
if (v1 > 10) {
int v2;
v2 = v1 - 10;
}
//int v3 = v1 + v2 + 5; // 에러 발생 v2는 if 안에서 선언 되었기 때문
}
}
- 정수 타입 : 정수를 저장할 수 있는 타입
- byte(1byte)
- short(2byte)
- char(2byte)
- int(4byte)
- long(8byte)
정수 리터럴
- 2진수 : 0b 또는 0B로 시작하고 0과 1로 구성 ex) 0b1011 -> 11
- 8진수 : 0으로 시작하고 0~7 숫자로 구성 ex) 013 -> 11
- 10진수 : 소수점이 없는 0~9 숫자로 구성 ex) 12
- 16진수 : 0x 또는 0X로 시작하고 0~9숫자와 A,B,C,D,E,F 또는 a,b,c,d,e,f로 구성
ex) 0xB3 -> 179
- String 타입 : "(큰 따옴표)로 감싼 문자열을 저장할 수 있는 타입
이스케이이프 문자
\
t - 탭만큼 띄움\
n - 줄 바꿈\
" - "출력\
' - '출력
- 실수타입 : 소수점이 있는 실수 리터럴을 저장할 수 있는 타입
- float(4byte) : float타입으로 저자하고 싶다면 f, F를 붙여 float 타입으로 저장한다.
- double(8byte)
*
char 타입보다 허용범위가작은 byte 타입은 char 타입으로 자동 형변환될 수 없다.// 강제 형변환
int intValue = 44032;
char charValue = (char) intValue;
System.out.println(charValue);
<정수 연산>에서 int 타입보다 작은 byte, short타입의 변수는 <int 타입>으로 자동 형변환되어 연산을 수행
<실수 연산>에서 피연산자 중 하나가 double 타입이라면 다른 피연산자도 <double 타입>으로 자동 형변환 후 연산을 수행
+연산에서의 문자열 자동 형변환 : 피연산자 오두 숫자일 경우 덧셈연산을 수행, 피연산자 중 하나라도 문자열일 경우 문자열로 자동 형변환후 문자열 결합
int value = 10 + 2 + 8;
System.out.println(value); // 20
String str1 = 10 + 2 + "8";
System.out.println("str1: " + str1); // 128
String str2 = 10 + "2" + 8;
System.out.println("str2: " + str2); // 1028
String str3 = "10" + 2 + 8;
System.out.println("str3: " + str3); // 1028
String str4 = "10" + (2 + 8);
System.out.println("str4: " + str4); // 1010
// 문자열에서 기본타입으로 변환
int value1 = Integer.parseInt("10");
double value2 = Double.parseDouble("3.14");
boolean value3 = Boolean.parseBoolean("true");
System.out.println("value1: " + value1); // 10
System.out.println("value2: " + value2); // 3.14
System.out.println("value3: " + value3); // true
// 기본타입에서 문자열로 변환
String str1 = String.valueOf(10);
String str2 = String.valueOf(3.14);
String str3 = String.valueOf(true);
System.out.println("str1: " + str1); // 10
System.out.println("str2: " + str2); // 3.14
System.out.println("str3: " + str3); // true
System.out.println() : 시스템의 표준 출력 장치, 괄호 안의 내용을 출력하고 줄 바꿈
System.out.print() : 괄호 안의 내용을 출력
System.out.printf("형식문자열", 값1, 값2, ...) : 괄호 안의 첫 번째 문자열 형식으로 출력
int value = 123;
System.out.printf("상품의 가격:%d원\n", value); // 123원
System.out.printf("상품의 가격:%6d원\n", value); // ---123원
System.out.printf("상품의 가격:%-6d원\n", value); // 123---원
System.out.printf("상품의 가격:%06d원\n", value); // 000123원
double area = 3.14159 * 10 * 10;
System.out.printf("반지름이 %d인 원의 넓이:%10.2f\n", 10, area);
String name = "홍길동";
String job = "도적";
System.out.printf("%6d | %-10s | %10s\n", 1, name, job);
=> 형식 문자열에 포함될 값이 2개 이상일 경우에는 값의 순번을 알려 준다.
1$ 첫번 째 값, 2$ 두번 째 값System.out.printf("이름: %1$s, 나이: %2$d", "김자바", 25);
- System.in.read() : 표준 출력 장치
public static void main(String[] args) throws Exception { int keyCode; while(true) { keyCode = System.in.read(); System.out.println("keyCode: " + keyCode); } }
=> System.in.read()의 단점은 키코드를 한개 씩 읽기 때문에 2개 이상의 키가 조합된 한글을 읽을 수 없다.
public class ScannerExample {
public static void main(String[] args) throws Exception{
Scanner scanner = new Scanner(System.in);
String inputData; // 키보드를 눌렀을 때 문자열
while(true) {
inputData = scanner.nextLine();
System.out.println("입력된 문자열: " + "\"" + inputData + "\"");
if (inputData.equals("q")) {
break;
}
}
System.out.println("종료");
}
}