728x90
1. Scanner 를 사용하여 화면에서 입력받기
- Scanner 란 화면으로부터 데이터를 입력받는 기능을 제공하는 클래스
- Scanner 을 사용하기 위해서는 import 문을 사용하여 Scanner 을 추가해야 함
- import java.util.*;
- import 후 Scanner 객체를 생성해야 사용 할 수 있음.
- Scanner scan = new Scanner(System in);
- Scanner 객체 사용
import java.util.*;
import java.util.Scanner; // 둘 중 하나 사용
Scanner scan = new Scanner(System.in); // Scanner 클래스의 객체 생성
double num = scan.nextFloat(); // 실수 입력 받음
System.out.printf("%f%n", num); // 입력 받은 실수 출력
String input = scan.nextLine(); // 문자열 입력받음
System.out.printf("%s%n",input); // 입력받은 문자열 출력
int input_num = Integer.parseInt(input); // 입력받은 문자열을 정수로 변환
System.out.printf("%d%n",input_num); // 변환한 정수 출력
int num_input = scan.nextInt();
System.out.printf("%s%n", num_input+""); // 입력받은 정수를 문자열로 변환
2. 정수형의 오버플로우(overflow)
- 오버 플로우 overflow : 오버플로우란 표현 할 수 있는 최대값을 넘어가는 것(넘어가는 수) 이다.
- 4자리 10진수의 최솟값은 0000 ~ 최댓값은 9999 가 되고, 만약 9999가 넘어간다면 더는 표현할 수 없기에 overflow 가 발생한다.
- 4자리 2진수의 최솟값은 0000 ~ 최댓값은 1111 이 되고, 만약 1111이 넘어간다면 더는 표현할 수 없기에 overflow 가 발생한다.
- overflow 가 발생하여 최댓값+1 이 되면 다시 최솟값으로 바뀌어 표현된다.
- 즉, 10진수 9999+1 ⇒ overflow 발생 , 0000 으로 표현됨. 2진수도 마찬가지로 1111 + 1 ⇒ overflow 발생, 0000 으로 표현됨.
System.out.println("sMin = "+ sMin);
System.out.println("sMin - 1 = " + (short)(sMin-1));
System.out.println("sMax = " + sMax);
System.out.println("sMax+1 = "+ (short)(sMax+1));
System.out.println("cMin = "+(int)(cMin));
System.out.println("cMin -1= "+(int)--cMin);
System.out.println("cMax = "+(int)(cMax));
System.out.println("cMax +1 = "+(int)++cMax);
2-2)정수형 범위
- 16비트로 표현 할 수 있는 정수의 개수 : 2^16 개 ⇒ 65536
- short 타입의 표현 범위 : -2^15 ~ 2^15-1 : -32768 ~ 32767 ⇒ -1의 이유는 0이 포함되기 때문
- char 타입의 표현 범위 : 0 ~ 2^16-1 : 0 ~ 65535
3. 타입 간 변환 방법(다음 글 '형 변환'에서 좀 더 자세하게 설명)
1) 문자 → 숫자, 숫자 → 문자 : 각각 문자 0 을 더하기, 빼기
- 숫자 → 문자 : 3 +'0' ⇒ 문자 0 을 더함
- 문자 → 숫자 : 3 -'0' ⇒ 문자 0 을 뺌
2) 문자열로 변환 : 빈 문자열 더하기
- 숫자 → 문자열, 문자 → 문자열 : 3+ "" ⇒ 빈 문자열을 더 더함
3) 문자열을 숫자로 변환 => Integer.pareInt(문자열) , 여기서의 문자열은 '숫자형' 문자열이여야함
- Integer.parseInt("3") ⇒ integer.parseInt 메소드를 사용하면 문자열 3을 숫자로 변환 가능
- Double.parseDouble("3.4") ⇒ Double.parseDouble 메소드를 사용하면 문자열 3.4 를 숫자로 변환 가능
4) 문자열 → 문자로 변환 : CharAt(int)
- 문자열.CharAt(0) : 문자열.CharAt(0) ⇒ CharAt(0) 에서의 0은 문자열 배열의 첫번째 자리를 의미한다고 생각하면 쉽다. 예를 들어 문자열 string 가 있고, charAt(1) 을하면 문자 t 를 확인 할 수 있다.
static void change() {
String str = "3";
System.out.println(str.charAt(0)); // 문자열 -> 문자
System.out.println(str.charAt(0)- '0'); // 문자 -> 숫자
System.out.println("3".charAt(0) -'0'+1); // 문자 -> 숫자 변환 후 +1
System.out.println(Integer.parseInt(str)+2); // 문자열 -> 숫자
System.out.println(Double.parseDouble(str)+3); // 문자열 -> 숫자(실수)
System.out.println(3+'0'); // 문자 '0'은 숫자로 48, 즉 문자 0이 숫자로 변환되어 더해짐
System.out.println((char)(3+'0')); // 문자 3 출력
String str = "string";
System.out.println(str.charAt(3)); // 문자열 string 를 문자로 변환 후 4번째 자리의 문자 출력
// 번외
System.out.println((int)(str.charAt(0))); // 문자 3은 숫자로 51
System.out.println((int)('0')); // 문자 0은 숫자로 48
System.out.println(str.charAt(0)+'0'); // 99 출력
}
4. 연산자와 피연산자, 연산자 우선순위
- 연산자 : 연산을 수행하는 기호
- 피연산자 : 연산자의 연산 수행 대상
- X + 3 ⇒ 연산자는 + , 피연산자는 X 와 3
5. 연산자의 종류 및 결합 규칙
1) 연산자의 종류
종류 | 연산자 | 설명 |
산술 연산자 | + - * % / << >> | 사직연산과 나머지(%) 연산, 비트연산(<< >>) |
비교 연산자 | < > >= <= == != | 크고 작음과 같고 다름을 비교 |
논리 연산자 | && || ! & | ^ ~ | 그리고(%%) 또는(||) not(!) ㅈ건을 연결 |
대입 연산자 | = | 우변의 값을 좌변에 저장 |
기타 | (type) ? : instanceof | 형변환 연산자(type), 삼항 연산자(?:), instanceof(객체 연산자) |
2) 연산자의 우선순위 : 거의 상식선에서 대충 해결 가능함
종류 | 결합 규칙 | 연산자 | 높음 |
단항 연산자 | <-------------- | ++ , -- , +, -, ~, !, (type) | |
산술 연산자 | -------------> | * / % | |
-------------> | + - | ||
-------------> | << >> | ||
비교 연산자 | -------------> | > , < , >= , <=, instanceof | |
-------------> | == != | ||
논리 연산자 | -------------> | & | |
-------------> | ^ | ||
-------------> | | | ||
-------------> | && | ||
-------------> | || | ||
삼항 연산자 | -------------> | ?:(삼항 연산자) | |
대입 연산자 | <-------------- | = ,+= ,-= ,*= ,/= ,%= ,>>= , <<=, &=, ^=, != | 낮음 |
- 연산자의 종류와 우선순위는 정보처리기사 시험에서 출제 되는 문제들로 해당 시험을 볼 예정이면 기억해두면 매우매우 좋다(21년 3회 필기 기출)
- 물론 시험 외에도 어쨌든 외워두면 좋다.
3) 연산자의 결합 규칙에서 중요한 점은 딱 3가지
- 산술 > 비교 > 논리 > 대입. 대입은 제일 마지막에 수행됨
- 단항 (1) 피 연산자 1개 > 이항(2) 피 연산자 2개 > 삼항(3) 피 연산자 3개 ⇒ 단항 연산자의 우선순위가 이항 연산자보다 높다.
- 우선 순위가 같은 연산자가 있을때 기본적으로는 왼쪽 → 오른쪽으로 결합함. 단, 대입과 단항 연산자의 경우만 오른쪽 → 왼쪽으로 결합함.
'Java - 기본기' 카테고리의 다른 글
Java 입출력(I/O), 스트림(Stream), 버퍼(Buffer) 개념 및 사용법 (2) | 2021.09.26 |
---|---|
5. 반올림-Math.round(), 비교, 조건, 논리, 대입, 복합 대입 연산자 (0) | 2021.09.16 |
4. 증감 연산자, 부호 연산자, 형변환 , 자동 형변환 + 아스키코드 (0) | 2021.09.13 |
2. 변수 다루기 - 기본형 심화, printf 를 이용한 출력, 입력 받기 (1) | 2021.09.02 |
1. 변수와 변수 타입 (3) | 2021.08.28 |
댓글