2022.12.06 - [Java] - 자바 #001_자바 시작하기
에서 예약어 부분에 대하여 좀 더 자세하게 공부해보겠다.
예약어
|
기본타입(Primitive Type)
기본 타입에는 boolean, byte, char, short, int, long, float, double이 있다.
여기서 정수, 실수, 논리 타입으로 구분된다.
- 정수 타입 : byte, char, short, int, long
- 실수 타입 : float, double
- 논리 타입 : boolean
2022.12.05 - [Java] - Java 내가 보려고 작성한 기본 기초 문법, 용어 정리
이곳에 각 타입에 대하여 처음에 정리하여 놓았다.
정수타입
|
실수타입
|
논리타입
|
자바는 실수 리터럴의 기본을 double 타입으로 지정
float 타입으로 저장하려면 리터럴 뒤 f 혹은 F로 표시
double 타입이 float 타입보다 약 2배 정밀도가 높음
리터럴 (Literal)
프로그램 언어에서 문자열 그 자체가 값을 나타내는 것. 예를 들면 X="90"에서 문자열 90은 90이라는 값을 나타내는 리터럴이다. (출처 : 네이버 지식백과)
- 2진수 : 0B 혹은 0b로 시작 (0과 1로 구성)
- 8진수 : 0으로 시작(0~7로 구성)
- 10진수 : 일반적으로 사용하는 숫자(정수) (0~9로 구성)
- 16진수 : 0X 혹은 0x로 시작 (0~9, A, B, C, D, E, F로 구성)
char 타입
하나의 문자를 저장할 수 있는 타입이다.
char a1 = 'A'; // 유니코드 65
char a2 = 'a'; // 유니코드 97
문자열
큰따옴표(" ")로 쌓인 문자들을 말한다.
문자열은 char타입에 저장 불가능하다.
String 타입에 저장 가능하다.
String var = "hahee_it";
이스케이프 문자 (Escape)
문자열 내부에 있는 \
특정 문자를 포함시키거나, 문자열의 출력을 제어할 수 있다.
이스케이프 문자 | 출력 용도 |
\t | 탭 |
\n | 라인 피드 |
\r | 캐리지리턴 |
\" | "출력 |
\' | '출력 |
\\ | \출력 |
\u16진수 | 16진수 유니코드에 해당하는 문자 출력 |
자동타입변환 (Promotion)
값의 허용 범위가 작은 타입이 큰 타입으로 저장될 경우에 이루어지는 변환이다.
큰type = 작은type;
byte < short < int < long < float < double
char 타입의 경우 int 타입으로 자동변환되면 해당하는 유니코드 값이 저장된다.
강제 타입 변환 (Casting)
값의 허용 범위가 큰 타입을 작은 타입으로 강제로 나누어 저장하는 것을 말한다.
구현클래스 변수 = (구현클래스) 인터페이스변수;
작은type = (작은type) 큰type;
- 연산 시 byte, char, short 타입 변수는 int 타입으로 자동 변환된다.
- 피연산자 중 하나가 long 타입이면 다른 피연산자는 long으로 자동변환
- 피연산자 중 하나가 double타입이면 다른 피연산자는 double으로 자동변환
- 다른 타입 연산이 필요하면 강제 변환한 뒤 연산을 진행해아한다.
+ 연산자
더하기
앞에서부터 순차적으로 수행되며, 문자열을 + 연산하면 문자열로 변경됨 (문자열은 결함 연산)
문자열을 기본 타입으로 강제변환
String->기본 타입
- Byte.parseByte(문자열변수) 를 기본타입 변수에 넣는다.
- Short.parseShort(문자열변수) 를 기본타입 변수에 넣는다.
- Integer.parseInt(문자열변수) 를 기본타입 변수에 넣는다.
- Long.parseLong(문자열변수) 를 기본타입 변수에 넣는다.
- Float.parseFloat(문자열변수) 를 기본타입 변수에 넣는다.
- Double.parseDouble(문자열변수) 를 기본타입 변수에 넣는다.
- Boolean.parseBoolean(문자열변수) 를 기본타입 변수에 넣는다.
기본타입을 문자열로 강제 변환
기본타입->String
- String.valueOf(기분타입변수) 를 String 변수에 넣는다.
System.out / System.in / println()
System.out : 시스템의 표준 출력 장치로 출력 (모니터)
System.in : 시스템의 표준 입력 장치에서 읽음 (키보드)
public class PrintExample {
public static void main(String[] args) {
// printf에서 f는 format의 약자
// %6d : 여섯 자리를 유지 => _ _ _ 1 2 3
// %-6d : 마찬가지로 여섯자리 유지 => 1 2 3 _ _ _
int value = 123;
System.out.printf("출력해보기: %d\n", value);
System.out.printf("출력해보기: %6d\n", value);
System.out.printf("출력해보기: %-6d\n", value);
System.out.printf("출력해보기: %06d\n", value);
System.out.printf("출력해보기: %10d\n", value);
System.out.println("\n");
double area = 3.14159 * 10 * 10;
System.out.printf("반지름이 %d인 원의 넓이: %10.2f\n", 10, area);
System.out.println("\n");
String name = "하히";
String website = "티스토리";
System.out.printf("%6d | %-10s | %10s\n", 1, name, website);
}
}
println() 메소드
괄호 안에 리터럴을 넣으면, 그 값이 출력
변수를 넣으면 변수에 저장된 값이 출력
문자열은 쌍따옴표(" ")사용
Conversion : 제공되는 값에 타입에 따라 정수(%d), 실수(%f), 문자열(%s)을 입력
키코드
키보드에서 값을 입력하면, 프로그램에서는 숫자로 된 키코드를 읽음(유니코드)
위에서 언급한 System.in의 read() 메소드를 사용
public class KeyCodeExample {
public static void main(String[] args) throws Exception {
int keyCode;
keyCode = System.in.read();
System.out.println("keyCode: " + keyCode);
keyCode = System.in.read();
System.out.println("keyCode: " + keyCode);
keyCode = System.in.read();
System.out.println("keyCode: " + keyCode);
}
}
콘솔창에 'A'를 입력한 후 엔터를 눌렀다.
A에 해당하는 키코드(유니코드)가 출력된 것을 확인할 수 있다.
13은 carriage return, 10은 line feed 이다. (밑에 아스키코드 표 참조)
System.in.read()
2개 이상 키가 조합된 한글을 읽을 수 없는 단점이 있음
통문자열로 읽을 수 없음
Scanner 클래스
System.in.read()의 단점을 해결
통문자열을 읽을 수 있음
Scanner 변수선언 후, 시스템의 입력 장치로부터 읽는 Scanner를 new 예약어를 통해 해줌.
변수를 사용하여 문자열을 저장 후 출력
scanner를 사용하려면 꼭 import문을 호출해야함 (import java.util.Scanner;)
// Scanner사용할 때 꼭 import 해주어야함
import java.util.Scanner;
public class ScannerCode {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String inData;
while(true) {
inData = scanner.nextLine();
System.out.println("입력된 문자열: \"" + inData + "\"");
if( inData.equals("q") ) {
break;
}
}
System.out.println("종료");
scanner.close();
}
}
기본타입과 문자열 비교
기본타입은 == 를 사용하여 값 비교
문자열은 equals() 메소드를 사용하여 비교
출처 : 혼자 공부하는 자바 (신용권)
'Java' 카테고리의 다른 글
자바 #005_참조 (0) | 2022.12.12 |
---|---|
자바 #004_조건문, 반복문 (0) | 2022.12.12 |
자바 #003_연산자 (0) | 2022.12.12 |
자바 #001_자바 시작하기 (0) | 2022.12.06 |
Java 내가 보려고 작성한 기본 기초 문법, 용어 정리 (0) | 2022.12.05 |
댓글