어제에 이어서 Java 기초 수업이 계속 되었다.
IntelliJ와 Java 설치가 안된다는 사람이 있어서 조금 지연되기는 했지만 수업은 정상적으로 진행되었다. 어제 조퇴를 해야해서 오프라인 강의는 못들었는데 온라인 강의 강사분이랑 다른 분이 들어오셔서 깜짝놀랐다. 사실 같은 분이면 어쩌지라는 생각을 조금 했다.
입력 메소드는 Java를 사용하면 기본으로 제공되는 메소드이다. 물론 그냥은 사용할 수는 없고
import를 이용해서 클래스를 가져와야 사용할 수 있다
import java.util.Scanner
이후 클래스 Scanner를 사용할 객체를 생성하고 그 객체를 이용해서 메소드를 이용하면 된다.
Scanner 객체이름 = new Scanner(System.in)
Scanner의 함수들은 많은 종류가 있지만 우리는 단순히 콘솔을 통해서 입력만 받을 것이기 때문에 next()나 next + 자료형() 등만 사용할 것이다.
출력 메소드는 콘솔에 값이나 문장을 출력을 도와주는 메소드이다.
출력은 따로 클래스를 가져와야할 필요는 없다.
println(): 문장 마지막에 줄바꿈을 포함해서 출력
print(): 문장 마지막에 줄바꿈을 포함하지않고 출력
printf(): 포맷에 맞춰 문장을 출력
변수를 지정하기 위해서는 자료형(타입)을 지정해주어야 한다. 또한 타입에 따라서 저장할 수 있는 값의 종류나 범위가 달라지므로 유의해야 한다. 그리고 한 번 지정한 변수는 사용하는 동안에는 변경이 불가능하다.
원시 타입
boolean: 1바이트, 참 또는 거짓만 저장
char: 2바이트, Unicode/문자를 저장
byte: 1바이트, 정수를 저장
short: 2바이트 정수를 저장
int: 4바이트 정수를 저장
long: 4바이트 정수를 저장
float: 4바이트 실수를 저장 값 뒤에 f를 작성해서 저장함
double: 8바이트 실수를 저장
참조 타입
String : 데이터가 변수에 직접 저장되는 것이 아니라 객체가 힙 메모리에 생성되고 변수는 그 메모리의 위치를 참조
오버플로우와 언더플로우
변수에 선언된 데이터의 범위를 벗어난 값을 할당할 때 발생한다.
Java는 오버플로우와 언더플로우에 대한 예외를 발생하지 않는다.
byte b = (byte)128 -> -128로 출력
자동 타입 변환(Promotion)
프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것을 말한다.
변환 이후에도 데이터 손실이 없다.
큰 크기 타입 = 작은 크기 타입
int intValue = 200;
double doubleValue = intValue; // 200.0
char charValue = 'A';
int intValue = charValue; // 65
강제 타입 변환(Casting)
데이터 손실이 발생할 수 있다.
작은 크기 타입 = (작은 크기 타입) 큰 크기 타입
double doubleValue = 3.14;
int intValue = (int) doubleValue; // intValue는 정수 부분인 3만 저장됨
System.out.println(intValue); // 3
실습 1
Sally는 새로운 노트북을 구매하려고 한다.
노트북 제품값과 Sally가 낸 돈을 콘솔을 통해 사용자에게 입력받는다고 가정하자.
Sally가 받을 잔돈을 계산하시오.
노트북 총액 = 노트북 제품값 + 노트북 제품값의 10% 부과세
https://github.com/baker-lee/JavaStudy/blob/master/src/Test/sallynotebook.java
실습 2
https://github.com/baker-lee/JavaStudy/blob/master/src/Test/MaxandMin.java
실습 3
평년
출력윤년
출력https://github.com/baker-lee/JavaStudy/blob/master/src/Test/Yoonyear.java
실습 4
양수
출력음수
출력0
출력https://github.com/baker-lee/JavaStudy/blob/master/src/Test/PosiNega.java