Java/자바의 정석

[ch2]

정호나 2024. 6. 18. 12:44

출력

System.out.println(): 줄바꿈해서 출력

System.out.print(): 줄바꿈 안하고 출력

 

변수 

: 하나의 값을 저장할 수 있는 메모리 공간(RAM)

 

변수에 값 저장하기 (= : 대입)

int age = 25; //오른쪽에 있는 값을 왼쪽에 대입

 

변수 초기화 

지역변수는 읽기 전에 꼭 초기화 하기!

int x = 0, y =5;

 

변수 값 읽어오기

age = age + 1 //변수age의 값 1 증가시키기

 

변수의 타입

저장할 값의 타입과 변수의 타입이 일치해야 함

 

int age = 25;

age = 3.14;  //실수형으로 에러

 

 

 

변수, 상수, 리터럴

- 변수(variable) : 하나의 값을 저장하기 위한 공간

int score = 100;

 

- 상수(constant)  : 한 번만 값을 저장 가능한 변수

final int MAX = 200;

 

- literal(=기존의 constant) : 그 자체로 값을 의미하는 것

100, 200

 

- ctrl + / : 여러줄 주석 처리

 

리터럴의 타입과 접미사

 

boolean power = true;

char ch ='A';

byte b = 127; //-128 ~ byte ~ 127

byte b = 128 // byte범위 밖 에러

 

int i = 100; //10진수

int oct = 0100 //8진수 '0'

int hex = 0x100 //16진수 '0x'

'0b' -> 2진 접두사

 

long l = 10_000_000_000L; //L생략 불가

long l = 100;   //생략가능

float f = 3.14f;   //생략 불가

double d = 3.14d;  //생략가능

 

 

<퀴즈>

10. = 10.0

.10 = 0.10 실수형, double타입

10f =  10.0

1e3 = 1000.0  double타입,10^3

 

- 변수와 리터럴의 타입 불일치

1) 범위가 변수>리터럴 인 경우 OK

 int i = 'A'; //int > char

long l =123; //long > int

double d = 3.14f; //double > float

 

2) 범위가 '변수 < 리터럴' 인 경우, ERROR

int i = 3_000_000_000 //int의 범위 (+-20억 벗어남)

long l =3.14f; //long < float

float f = 3.14 //float < double , 실수형이면 3.14d로 d 생략가능

 

3) byte, short 변수에 int 리터럴 저장 가능

변수 타입의 범위 이내이어야 함

byte b = 100; //byte범위 속함

byte b = 128; // 에러, byte범위 벗어남

 

 출력 시 접미사는 출력 안함

 

문자와 문자열

char ch = 'A';

char ch = 'AB'; //에러

 

String s = "ABC";

String s = ""; //빈 문자열

char ch =''; //에러

 

String s1 = "AB"; //권장

String s2  = new String ("AB"); //이렇게 많이 안씀

String s1 = "A" + "B"; //"AB"

 

"" + 7 -> "" + 7 -> "7" //숫자 -> 문자열 

 

 

"문자열" + any type -> "문자열"
any type + "문자열" -> "문자열"

 

 

두 변수의 값 교환하기 -tmp사용

 

int x = 10, y = 20;

x =y ; //y의 값을 x에 저장

y = x // x의 값을 y에 저장

 

int x = 10, y =20;
int tmp;

tmp = x;  //1. x값을 tmp에 저장
x = y;	  //2. x값을 y에 저장
y = tmp;  //3. tmp값을 y에 저장

  

기본형과 참조형

기본형

- 오직 8개(boolean, char, byte(2진 데이터), short, int, long, float, double)

- 실제 값을 저장

 

참조형

- 기본형을 제외한 나머지(string, system 등)

- 메모리 주소를 저장(4 byte 또는 8 byte)

Date today; //참조형 변수 today 선언

today = new Date(); //today에 객체의 주소 저장

 

 

 

float x 2 = double

부동소수점(floating point) //떠다닌다

 

- 기본형

 

1bit :부호비트 // 0 : 양수, 1: 음수

 

 

실수형 default 타입 : double

 

 

printf이용한 출력

println() 단점 : 출력형식 지정불가

1) 실수의 자리 수 조절불가 - 소수점 n자리만 출력하려면?

system.out.println(10.0/3);  //3.3333, 실수/실수 = 실수

system.out.println(10/3);  //3  정수/정수 = 정수

 

2) 10진수로만 출력된다

system.out.println(0x1A);  //26

 

printf()출력형식 지정가능

system.out.println("%.2f",10.0/3);  //3.33 , 소수점 둘째자리

system.out.println("%d",0x1A); //26, 10진수

system.out.println("%X",0x1A); //1A, 16진수

 

 

 

2) 접두사 붙일 때는 #

 

3) 실수 출력을 위한 지시자 %f

float의 정밀도는 7자리이므로 123.4567_ _ (나머지는 의미없는 숫자)

e+02 -> 10^2, 반올림해서 표현

 

소수점 아래는 빈자리를 0으로 채우고, 소수점 앞은 공백으로 채움

전체자리 수는 소수점 포함해서 count

 

System.out.printf("[%5d]%n", 1234567); //[1234567], 5자리 출력보다 그 이상의 숫자 출력명령 시 
System.out.printf("[%.10s]",\n, "www.codechobo.com"); //[www.codech], 10자리만 출력되게

 

화면으로부터 입력받기

Scanner : 화면으로부터 데이터를 입력받는 기능을 제공하는 클래스

 

1. import문 추가

import java.util.*;

 

2. scanner 객체의 생성

Scanner scanner = new Scanner (System.in);  //System.in :화면에서 입력받기

 

3. Scanner 객체를 사용

int num = scanner.nextInt(); //화면에서 입력받은 정수를 num에 저장

//위 한줄과 같음
String input = scanner.nextLine();  //행단위로 입력받을 때,화면에서 입력받은 내용을 input에 저장
int num = Integer.parseInt(input);  //문자열(input)을 숫자(num)로 변환

 

 

정수형의 오버플로우

10진수

9999 ->오버플로우 발생 -> 0000

 

최댓값 +1 -> 최소값

최소값 -1 -> 최대값

**부호 있는 정수일 때

 

 

 

** 범위: 0부터 시작하니 마지막 범위에 '-1'

 

 

타입간의 변환방법

1. 문자와 숫자간의 변환

3 + '' = '3'

 

2. 문자열로의 변환

3 + "" = "3"

'3' + "" = "3"

 

3. 문자열을 숫자로 변환

"3" -> Intger.parseInt("3") -> 3

"3,4" -> Double.parseDouble("3,4") -> 3,4

 

4. 문자열을 문자로 변환

"3" -> charAt(0) -> '3'

 

 

[연습문제]

2-4

double은 접미사 생략 가능

float는 접미사 생략 불가

 

(x) float f = 3.14 // 3.14는 3.14d의 생략된 형태. 접미사f를 붙이거나 형변환필요

 

(o) double d = 1.4e3f; // double(8byte)에 float값(4byte)을 넣는 것이므로 OK

 

 

'Java > 자바의 정석' 카테고리의 다른 글

[ch3 연습문제] (조건)삼항 연산자 중첩  (0) 2024.06.28
[ch3 연습문제]  (0) 2024.06.28
코포자를 위한 코딩 공부법(남궁성)  (0) 2024.06.21
[ch4] 조건문과 반복문  (0) 2024.06.19
[ch3] 연산자  (1) 2024.06.18