728x90
반응형
CharType (탈출 문자, 유니코드 )
public class CharType {
public static void main(String[] args) {
// 문자형(char)
// 싱글쿼터 사용. 2byte 차지. 단 하나의 문자만 허용
char ch1 = '한';
// 유니코드 표현식(\\\\u 로 시작되는 탈출문자)
// escape sequence(탈출 문자)
// D55C는 16진수를 기반으로 한 숫자임.
// 16진수에 맞는 문자를 출력함
char ch2 = '\\uD55C';
System.out.println(ch1);
System.out.println(ch2);
// '한'이라는 값을 정수형 int 타입에 넣는다.
// 자동 형 변환이 되어 54620 이라는 숫자가 됨.
int i = ch1;
System.out.println(i);
// 탈출 문자(escape sequence)
/*
* \\n : 개행
* \\t : 수평 tab, 공백의 정도는 주변에 따라 유동적으로 크기가 변함.
* \\\\ : \\ 출력
* \\' : ' 출력
* \\" : " 출력
*/
System.out.println(" 안 녕 하 \\n 세 요");
System.out.println(" 안 녕 하 \\t 세 요");
System.out.println(" 안 녕 하 \\\\ 세 요");
System.out.println(" 안 녕 하 \\' 세 요");
System.out.println(" \\"안 녕\\" 하 \\" 세 요");
// 탈출 문자를 사용한 문자열
String str = "아름다운 이땅에 금수강산에 " +
"단군 할아버지가 \\"터\\" 잡으시고\\n" +
"\\'홍익인간\\' 뜻으로 나라 세우니 " +
"대대손손 훌륭한 인물도 많아.";
System.out.println(str);
// 텍스트 블록 (text block)
// java 15 버전부터 도입됨
// """ 을 활용
// 여는 따옴표 다음에는 공백 및 주석 외의 다른 문자열 사용 불가
// """ 입력하고 반드시 개행한 후, 닫는 따옴표 사이의 모든 개행 및 특수 분자를
// 탈출 문자 없이 사용 가능
String str2 = """
아름다운 이땅에 금수강산에
단군 할아버지가 "터" 잡으시고
'홍익인간' 뜻으로 나라 세우니
대대손손 훌륭한 인물도 많아.
""";
System.out.println(str2);
}
}
- 홑 따옴표 ( ’ ) = single quote
- 쌍 따옴표 ( “ ) = double quotes
ImplicitConversion (묵시적(자동) 형변환)
public class ImplicitConversion {
public static void main(String[] args) {
// 묵시적 형변환 (자동 형 변환)
byte bNum = 10;
int iNum = bNum; // (int) 명시적 표현도 가능
// 작은 범위의 byte를 큰 범위의 int 타입에 넣음
// 작은 범위에서의 큰 범위로 가는 경우는,
// 오류 없이 자동 형 변환이 된다.
// 자동 형변환이 되기 때문에
// int iNum = (int) bNum; 처럼
// 따로 명시를 해도 되고 안해도 상관 없다.
System.out.println(bNum);
System.out.println(iNum);
////////////////////
// 역시 작은 범위인 int 타입(4byte)에서
// 큰 범위인 double 타입(8byte)으로 자동 형변환
int iNum2 = 20;
double dNum = iNum2;
System.out.println(iNum2);
System.out.println(dNum);
}
}
ExplicitConversion (명시적(강제) 형 변환)
public class ExplicitConversion {
public static void main(String[] args) {
// 명시적 형 변환 (강제 형 변환)
// 큰 범위 타입에서 작은 범위 타입으로 변환하는 경우
// 반드시 바꾸려는 타입을 명시해줘야한다.
// 안하면 오류 발생
int iNum = 10;
byte bNum = (byte) iNum;
double dNum = 3.14;
int iNum2 = (int) dNum;
// 소숫점이 가능한 double에서 정수형 타입의 int 타입이 돼서
// 소숫점을 날리고 3 만 할당이 됨.
System.out.println(bNum);
System.out.println(iNum2);
}
}
ArithmeticConversion
public class ArithmeticConversion {
public static void main(String[] args) {
// 연산 중 형 변환 (산술 형변환)
double dNum = 1.2;
float fNum = 0.9F; // float 타입이라 F 붙임
// dNum을 int 타입으로 소숫점 버리고 강제로 1이됨
// fNum을 int 타입으로 소숫점 버리고 강제로 0이 됨
int iNum = (int) dNum + (int) fNum;
// dNum + fNum = 2.1 인데
// 강제로 int 타입으로 소숫점 버리고 강제로 2가 됨
int iNum2 = (int) (dNum + fNum);
// 산술 형변환
// 다른 두개의 데이터 타입이 연산된다면 자동으로 큰 범위로 전환된다.
// 그래서 float가 double 형으로 변환되어 dNum + fNum 이 진행됨.
double dNum2 = dNum + fNum;
System.out.println(iNum);
System.out.println(iNum2);
// 연산을 하는 와중에 2.1이 아닌 깔끔하게 나오지 않는 값으로 나온다.
// 그래서 이전에 미리 float을 double 형으로 바꿔서 계산하든가 해야한다.
System.out.println(dNum2);
//////////////////
// 예)
double dNum3 = 2.4;
float fNum4 = 2.1F;
float result1 = (float) dNum3 + fNum4;
double result2 = dNum3 + fNum4;
System.out.println(result1);
System.out.println(result2);
}
}
Example01 - 1
import java.util.Scanner;
public class Example01 {
public static void main(String[] args) {
// int, double, String 타입의
// 데이터를 입력받아 입력값을 출력하세요.
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
double num2 = sc.nextDouble();
String str1 = sc.next();
System.out.println("나는 int 타입의 " + num1);
System.out.println("나는 double 타입의 " + num2);
System.out.println("나는 String 타입의 " + str1);
}
}
문자열 띄어쓰기 받기 : nextLine( )
import java.util.Scanner;
public class Example01 {
public static void main(String[] args) {
// int, double, String 타입의
// 데이터를 입력받아 입력값을 출력하세요.
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
double num2 = sc.nextDouble();
sc.nextLine();
String str1 = sc.nextLine();
System.out.println("나는 int 타입의 " + num1);
System.out.println("나는 double 타입의 " + num2);
System.out.println("나는 String 타입의 " + str1);
sc.close();
}
}
- next( )
- next( ) 는 한 단어(공백 또는 줄바꿈 전까지의 문자열)를 읽습니다.
- 공백이나 줄바꿈을 기준으로 입력을 분리하여 한 단어만 가져오기 때문에, 공백이 포함된 문장은 제대로 읽지 못합니다.
Scanner scanner = new Scanner(System.in);
String word = scanner.next(); // 공백 이전까지의 한 단어만 읽음
- nextLine( )
- nextLine( )은 한 줄 전체를 읽습니다.
- 줄바꿈( \n )을 만나기 전까지 입력된 모든 내용을 포함하여 공백을 포함한 한 줄 전체를 가져옵니다.
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine(); // 한 줄 전체를 읽음, 공백 포함
- 만약 입력이 `"Hello World!"`인 경우:
- next( ) 를 사용하면 `Hello`만 읽고, `World!`는 다음 입력에서 읽게 됩니다.
- `nextLine()`을 사용하면 `"Hello World!"` 전체가 한 번에 읽힙니다.
- 주의할 점
- `nextLine()`을 사용할 때, 바로 전에 `next()`, `nextInt()`와 같은 메서드를 사용했다면, 그 메서드가 입력 버퍼에 남긴 줄바꿈(`\n`)을 읽어버리는 문제가 발생할 수 있습니다. 이를 방지하려면 `nextLine()`을 두 번 호출하여 첫 번째 호출로 빈 줄을 제거한 후 두 번째 호출에서 원하는 값을 읽도록 해야 합니다.
- `nextLine()`을 사용할 때, 바로 전에 `next()`, `nextInt()`와 같은 메서드를 사용했다면, 그 메서드가 입력 버퍼에 남긴 줄바꿈(`\n`)을 읽어버리는 문제가 발생할 수 있습니다. 이를 방지하려면 `nextLine()`을 두 번 호출하여 첫 번째 호출로 빈 줄을 제거한 후 두 번째 호출에서 원하는 값을 읽도록 해야 합니다.
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt(); // 숫자 입력
scanner.nextLine(); // 버퍼에 남은 줄바꿈 제거
String sentence = scanner.nextLine(); // 한 줄 전체 입력 받기
- 공백을 포함한 입력을 받으려면 `nextLine()`을 사용하는 것이 적합합니다.
Example 01 - 2
import java.util.Scanner;
public class Example01 {
public static void main(String[] args) {
// int, double, String 타입의
// 데이터를 입력받아 입력값을 출력하세요.
// 입력
Scanner sc = new Scanner(System.in);
// 정수 입력 받을 변수 초기화
// int num = sc.nextInt(); // 정수값이 온다.
// 입력을 받을 때까지 대기 상태
// 이렇게 써보자
// 초기화와 재할당을 따로 진행.
int num = 0;
System.out.println("정수를 입력해주세요: ");
num = sc.nextInt();
System.out.println("출력: " + num);
// 실수 입력 받을 변수 초기화
double dNum = 0.0;
System.out.println("실수를 입력해주세요: ");
dNum = sc.nextDouble();
System.out.println(dNum);
// 문자열을 입력 받을 변수 초기화
String text = "";
System.out.println("문자열을 입력해주세요: ");
text = sc.next();
System.out.println(text);
}
}
Example 02 - 1
import java.util.Scanner;
public class Example02 {
public static void main(String[] args) {
/*
* 이름, 나이, 키를 입력 받아 출력하세요.
* 출력결과
* 이름 : 홍길동
* 나이 : 20
* 키 : 188.9
* 이름은 홍길동이고 나이는 20세, 키는 188.0Cm 입니다.
*/
Scanner sc = new Scanner(System.in);
String name = sc.next();
int age = sc.nextInt();
double height = sc.nextDouble();
String eachInfo = "이름 : " + name + "\\n나이 : " + age + "\\n키 : " + height;
System.out.println(eachInfo);
String allInfo = "이름은 " + name + "이고 나이는 " + age + "세, 키는 " + height + "Cm입니다.";
System.out.println(allInfo);
System.out.printf("이름은 %s이고 나이는 %d세, 키는 %.1fCm입니다.", name, age, height);
}
}
Example 02 - 2
import java.util.Scanner;
public class Example02 {
public static void main(String[] args) {
/*
* 이름, 나이, 키를 입력 받아 출력하세요.
* 출력결과
* 이름 : 홍길동
* 나이 : 20
* 키 : 188.9
* 이름은 홍길동이고 나이는 20세, 키는 188.0Cm 입니다.
*/
Scanner scan = new Scanner(System.in);
String name = "";
int age = 0;
double height = 0.0;
System.out.println("이름: ");
name = scan.next();
System.out.println("나이: ");
age = scan.nextInt();
System.out.println("키: ");
height = scan.nextDouble();
// 세 변수에 입력을 모두 하면 실행이 중지된다.(빨간 네모 사라짐, terminate)
System.out.println("이름은 " + name +
"이고 나이는 " + age +
"세, 키는 " + height +
"Cm입니다.");
// 변수 안에 저장하면 재사용이 가능해서 더 효율적이다.
String result = "이름은 " + name +
"이고 나이는 " + age +
"세, 키는 " + height +
"Cm입니다.";
System.out.println(result);
}
}
Eclipse - Run 단축키 수정
- 이클립스에서 상단의 window - preferences
- 검색창에 key 입력 ⇒ General 내부의 keys 선택
- keys “type filter text” 검색창에 ctrl+f11 검색
- 아래 Binding 부분을 클릭하고 backspace를 눌러서 삭제한뒤
- Ctrl+e를 타이핑이 아닌 직접 타건
- Apply 하면 끝~
728x90
반응형