3.1 입력값 출력하기 (Scanner 클래스)
자바에서 이미 제공하고 있는 Scanner 클래스 사용
클래스 Scanner 호출 (package와 class 사이 작성)
sc라는 변수로 새로운 Scanner클래스 생성
여기까지가 준비 끝.
먼저, 입력받고자 하는 내용을 먼저 질문해서 입력을 유도한다.
next() 라는 메소드에 변수를 대입해준다.
출력값
Console창에 홍길동은 직접입력하고 Enter를 누르면 입력값이 출력된다.
next() : 문자열 사용 (사용자가 입력한 값 중 공백이 있을 경우 공백문자 이전까지만 입력받음)
nextInt(), nextDouble() : 정수나 실수 사용
nextLine() : 문자열 (사용자가 입력한 값 중 공백과 무관하게 한 문장을 다 읽어옴. 개행문자를 만나기 전까지/
버퍼에서 개행문자 이전까지의 모든 값을 가져온 후 "개행문자"를 비워주는 역할)
Scanner라는 클래스를 사용해서 입력값을 출력할 수 있다! 근데 Scanner는 외부클래스이므로 호출해서 "new"로 새롭게 생성해주어야 한다!
3.2 형변환
자바에서 값을 처리하는 규칙
1. =(대입연산자)를 기준으로 왼쪽, 오른쪽이 같은 자료형이어야 한다.
=> 같은 자료형에 해당하는 리터럴값만 대입할 수 있음
=> 자료형이 다를 경우? == 값을 바꿔서 대입해야함
2. 같은 자료형들끼리만 연산이 가능함
=> 자료형이 다른데 연산이 하고싶다?? 둘 중 하나를 "형변환"해서 나머지 하나와 동일하게 만들어야함
3. 연산의 결과물도 같은 자료형이어야 한다.
ex) 1 + 1 = 2(정수), 1.1 + 1.1 + = 2.2(실수)
형변환의 종류
1. 자동형변환(Promotion) : 자동으로 형변환이 진행됨 (작은 크기의 자료형 -> 큰 크기의 자료형)
1-1. int(4Byte, 정수) -> double(8Byte, 실수)
1-2. int(4yte, 정수) -> long(8Byte, 정수)
1-3. long(8Byte, 정수) -> float(4Byte, 실수) ; 특이케이스. 정수가 실수에 담길 때 큰 사이즈의 정수가 작은 사이즈의 실수자료형에 대입될 수 있음
1-4. char(2Byte) <-> int(4Byte) ;상호작용. 서로 자동 형변환 됨
int가 char보다 크기 때문에, char가 int로 변환되어 연산값 출력됨(char는 연산할 때 무조건 int로 바꿈)즉, 결과값은 int형 => CPU가 값을 처리하는 기본크기가 int형 크기(4Byte)
String은 class이다. 모든 자료형은 String과 연산될때 String으로 변경후 출력된다.
비교연산자( == ) : 좌항과 우항의 값을 비교해서 결과값을 반환 (true, false)
2. 강제형변환/명시적 형변환(Type Casting) : 자동형변환이 이루어지지 않은 경우에 진행
2-1. double(8Byte, 실수) -> float(4Byte, 실수)
2-2. double(8Byte) -> int(4Byte)
Type Casting은 기본형에서만 할 수 있음
3.3 연산자
#산술연산자
1. 덧셈(+)
묶지 않고 연산하면 String(문자열)로 인식하기 때문에 결과값이 다르게 나온다
2. 뺄셈(-)
뺄셈의 경우 괄호로 묶지 않으면 문자열과 num1을 하나로 묶은 뒤 정수를 빼기 때문에 빨간줄이 생김
3. 곱셈, 나눗셈, 모듈러(%)
4. 특이케이스 (0으로 나누면 오류가 난다 : by zero)
예제. 변준식의 나눔 프로젝트
문제)
// 메소드명 : presentToStudent()
// 입력받을 값 : 1. 신청 인원 수
// 2. 선물 개수
// 1인당 가질 수 있는 선물의 개수 : 선물 개수 / 신청 인원 수
// 남은 선물의 수 : 선물 개수 % 신청 인원 수
// 출력 형식
// 신청 인원 당 받을 수 있는 선물의 개수 : X개
// 남는 선물의 개수 : X개
답)
※헷갈리지만 중요한 것.
외부클래스, 메소드 불러오기
main() 메소드가 있는 클래스에 "import 패키지명.클래스명;" : 외부클래스 불러오기
main() 메소드에 "클래스명 별명 = new 클래스명();" : 외부클래스 생성하기
main() 메소드에 "변수명.메소드명();" : 외부클래스 메소드 실행하기
#증감연산자
단항연산자로서 한 번에 1씩 증가(더하거나) 감소(빼거나)하는 연산을 한다.
연산자의 위치
* 전위 연산 : ++값. --값 --> 먼저 값을 증가시키고 그 값을 처리
* 후위 연산 : 값++, 값-- --> 값을 처리하고나서 증가하거나 감소하겠다
후위 연산 먼저.
헷갈릴 수 있다.
전위 연산.
#복합 대입 연산자
자기 자신과 해당 산술 연산을 한 뒤 그 결과를 자기자신에게 다시 대입하는 용도
#논리 부정 연산자
논리값(true, false)를 반대로 바꿔주는 연산자
#비교 연산자(관계 연산자)
두 개의 값을 가지고 비교, 이항 연산자
1. 동등비교 : 일치함을 비교( =, != )
2. 대소비교 : 크고 작음을 비교 ( <, >, <=, >= )
#논리 연산자
두 개의 논리값을 연산하는 연산자
1. AND 연산자 : 논리값 && 논리값
좌항과 우항의 값이 모두 true여야만 최종 결과 true
2. OR 연산자 : 논리값 || 논리값
좌항과 우항의 값 중 하나라도 true이면 최종 결과 true
'JAVA > JAVA수업' 카테고리의 다른 글
#6. 배열 (0) | 2023.07.10 |
---|---|
#5. switch문, for문, while문, do-while문, break, continue (0) | 2023.07.07 |
#4. 연산자, if문, else, switch문 (0) | 2023.07.06 |
#2. 외부클래스 메소드 호출, 자료형, 변수선언, 초기화, 출력문, 상수 등 (0) | 2023.07.04 |
#1. JAVA, eclipse 다운로드, HelloWorld 출력 (1) | 2023.07.03 |