몬그로이

Java 코드 해석 본문

카테고리 없음

Java 코드 해석

Mon Groy 2024. 4. 28. 11:29

p. 37 ◈ 2진수로 표현된 리터럴을 2진수로 출력하기

int binNum = 0b10; //2진수로 표현된 리터럴이 정수타입의 변수에 담김
//0b는 10이 2진수로 표현되었음을 나타내는 뜻이며, binNum에는 10진수로 저장됨

System.out.printf("binNum = %s, %d%n", Integer.toBinaryString(binNum), binNum);
//2진수 상태로 출력하고 싶으나 지시자가 없어 불가능함
//%b는 boolean 형식으로 출력하라는 뜻이므로 2진수로 출력되지 않음
//문자열 상태로 바꿔서 문자로 출력하기
//toBinayString 메서드를 사용하면 10진수를 2진수로 변환하여 그대로 문자열 리터럴이 되게 함
//변환된 값을 지시자 %s를 통해 문자그대로 출력함

p. 40 ◈ 화면에서 입력받기 (스캔하여 변수에 저장하기)

Scanner scanner = new Scanner(System.in); //스캐너 클래스 -의 객체 생성

System.out.print("입력해달라는 내용") 
/*
뭔가 입력해달라 요청을 내보낼 것이므로 out사용 - 스캐너는 입력받은 걸 스캔하는 기능이니 입력받자
큰 따옴표 적지 않으면 구동되지 않음
멈춘건지 입력받으려고 기다리는 건지 구별이 되어야 하니까 큰따옴표 안에 입력해달라는 내용을 적어놓자
*/
String input = scanner.nextLine(); //스캐너를 통해 입력받은 값을 input(String타입)에 저장
//여기까지 작성해야 입력가능함 ★
/*
출력된 부분 다음부터 읽으니까 next가 붙었고
엔터 전까지인 줄을 읽는 거니까 Line이 붙어서 nextLine인 듯
*/

//아래부터는 입력받은 걸 가지고 조작하는 부분
int num = Integer.parseInt(input); //input을 integer 타입으로 분석해(변환해)서 num(int타입)에 저장

/*
int num = Floating.parseFloat(input);
을 입력하면 Float타입으로 분석해서 num(Float타입)에 저장할 수 있음
*/
int num = scanner.nextInt(); //를 사용하면 변환과정 없이 바로 num에 입력 받을 수 있음 (위 두 줄 합친 것)
int num = scanner.nextFloat(); //도 마찬가지

/*
단 위 방법들은 연속적 값을 받아 사용하기 까다로움
모두 nextLine()으로 받아 적절히 변환시키는 것이 나음 - 즉, 처음 알려준 방식이 나음 
*/

p. 38 ◈ 실수형 리터럴을 가진 변수들 변환하여 출력하기

float f1 = .10f;
System.out.printf("f1 = %f, %e, %g%n", f1, f1, f1);

/*
f1 = 0.100000, 1.000000e-01, 0.100000

.10 = 0.1
%f는 f1을 소수점 아래 6자리까지(7째 자리에서 반올림) >> 0.100000

%e는 f1을 지수형태로
0.1*10^1 = 1이고, 지수부분은 두 자리수로 나타내므로 >> 1.000000e-01

%g는 큰 숫자나 작은 숫자는 지수형식으로, 이외엔 일반적인 모습으로 >> 0.100000
큰 숫자는 10의 7승 이상, 작은 숫자는 10의 -3승 이하
*/
float f2 = 1e1f;
System.out.printf("f2 = %f, %e, %g", f2, f2, f2);

/*
f2 = 10.000000, 1.000000e+01, 10.0000

1e1 = 1*10^1 = 10
%f는 소수점 아래 6째 자리까지(7째 자리에서 반올림) >> 10.000000

%e는 f2를 지수형태로 나타내게 함
10 = 10^1이며 지수는 2자리수로 표현됨 >> 1.000000e+01

%g는 10의 -3승보다 크고 10의 7승보다 작으므로 일반적 형태로 나타냄
대신 6개의 유효숫자로 표기 >> 10.0000
*/
float f3 = 3.14e3f;
System.out.printf("f3 = %f, %e, %g", f3, f3, f3);

/*
f3 = 3140.000000, 3.140000e+03, 3140.00

3.14e3 = 3.14 * 10^3 = 3140
%f는 소수점 6번째 자리까지 >> 3140.000000

%e는 지수형태로 나타냄
소수점 6번째 자리까지 표현하고 지수는 두 자리수로 표현>> 3.140000e03

%g는 340이 10의 -3승보다 크고 10의 7승보다 작으므로 일반형으로 나타냄
대신 6개의 유효숫자 있어야 함 >> 3140.00
*/

 

double d = 1.23456789;
System.out.printf("d = %14.10f%n", d);

/*
d =   1.2345678900

%f로 나타내면 1.234568이지만
14.10의 의미: 점 포함하여 총 14칸으로 표현하고, 소수점 아래 10자리 까지 표현하기
7번째 자리에서 반올림 하기 전에 자릿수를 맞춘다
1.2345678900 은 소수점 아래 10자리는 맞지만 전체는 12자리임
14자리에 맞추려면 앞에 두 칸 더 있어야 함 >> d =   1.2345678900
/*
String url = "www.codechobo.com";

System.out.printf("[%s] %n", url);
/*
[www.codechobo.com]
 */
 
System.out.printf("[%20s]%n",url);
/*
[   www.codechobo.com]

20칸 출력공간 확보하여 우측 정렬
점 포함하여 17칸이므로 왼쪽에 3칸 비워진 것
참고로 url에 숫자가 포함되어 있더라도 에러 없이 출력됨
 */
 
System.out.printf("[%-20s]%n",url);
/*
[www.codechobo.com   ]

20칸 출력 공간 확보하여 좌측 정렬
 */
 
System.out.printf("[%.8s]%n",url);
/*
[www.code]

url의 왼쪽부터 8칸만 출력
url에 스페이스(빈칸)입력이 되어 있어도 적용됨
 */