2022-09-27
printf() : print format : format에 출력하고 줄 안바꿈
println() : print line : 출력하고 줄 바꿈.
print() : print : 그냥 출력
문자열 보간 형식도 있다.
import java.text.MessageFormat;
public class SimpleTesting{
public static void main(String[] args) {
String site_name = "DelfStack";
String type = "'How to Guide'";
String message = MessageFormat.format("{0} is a {1} Portal", site_name, type);
System.out.println(message);
}
}
출력:
DelfStack is a 'How to Guide' Portal
int i = 97;
String s = "Java";
double f = 3.14f;
System.out.printf("%d\n", i); // 10진수 출력
System.out.printf("%o\n", i); // 8진수 출력
System.out.printf("%x\n", i); // 16진수 출력
System.out.printf("%c\n", i); // Char 출력
System.out.printf("%5d\n", i); // 공백 5자리 넣음 (수 는 오른쪽부터 채워짐 왼쪽부터 채우려면 -부호 붙여 사용
System.out.printf("%05d\n", i); // 5자리 빈칸 출력, 빈자리 공백
System.out.printf("%s\n", s); //
System.out.printf("%5s\n", s);
System.out.printf("%-5s\n", s);
System.out.printf("%f\n", f);
System.out.printf("%e\n", f);
System.out.printf("%4.1f\n", f);
System.out.printf("%04.1f\n", f);
System.out.printf("%-4.1f\n", f);
System.out.printf("\n");
System.out.printf("%22.99f\n", Math.PI);
출력:
97
141
61
a
97
00097
Java
Java
Java
3.140000
3.140000e+00
3.1
03.1
3.1
3.141592653589793000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Scanner 클래스의 인스턴스 생성은 데이터를 뽑아 올 대상과의 연결을 의미. 연결후에는 데이터 스캔 가능!
Scanner class 사용 방법
프로그램 첫 행에 다음을 추가해 Scanner class의 경로 이름을 컴파일러에 알린다.
// import 해줌
import java.util.Scanner;
키보드로 데이터를 입력 받기 위해 System.in 객체와 연결된 Scanner 객체를 생성한다.
// 객체 생성.
Scanner sca = new Scanner(System.in);
메서드 / 반환타입
next() / String
nextByte() / byte
nextshort() / short
nextint() / int
nextLong() / long
nextFloat() / float
nextDouble() / double
nextLine() / String
Scanner.close() 의 이유
-GarbegeCollector가 있는데 왜 close()를 해주는 거지...?
보통 close() 메서드가 있는 클래스들은 OS로부터 자원을 할당받아 사용하는 네이티브 메소드들을 가지고 있는 경우들이 있는데 이렇게 C(?)에서 자원을 할당 받은 경우 GC가 자원을 할당 받았는지 알 수가 없다고 함.
close() 메서드를 통해서 자원을 그만쓴다라는 것을 알리고 GC가 메모리 해제를 할 수있도록 하는 것이라고 함.
개발자가 직접 정의한 경우를 제외한 close() 메서드는 Object의 사용 중지를 알리는 역할이고 이것을 메모리 해제하는건 GC가 한다!
논리 연산자
조건식 1 && 조건식 2 -> 조건식 1이 false이면 조건식 2의 진릿값과 상관없이 결과가 무조건 false가 된다. 따라서 조건식 2의 진릿값을 조사할 필요가 없다.
조건식 1 || 조건식 2 -> 조건식 1이 true이면 조건식 2의 진릿값과 상관없이 결과가 무조건 true가 됨. 따라서 조건식 2의 진릿갑슬 조사할 필요가 없다.