01 변수

변수 : 하나의 값을 저장하기 위한 공간

상수 : 값을 한번만 저장할 수 있는 공간

리터럴 : 그 자체로 값을 의미하는 것

 

변수의 타입 : 기본형과 참조형

○ 기본형 : 논리형/ 문자형/ 정수형/ 실수형

계산을 위한 실제 값을 저장함(8)

○ 참조형 : 객체의 주소를 저장. 기본형 타입을 제외한 나머지 타입

변수의 타입을 클래스의 이름으로 사용하여 선언 -> 참조변수 타입 = 클래스 이름

새로운 클래스 작성 -> 새로운 참조형 추가되는 것

클래스이름 변수이름; // 선언하는 방법

 

상수와 리터럴

○ 상수

값을 한 번 저장하면 다른 값으로 변경할 수 없는 저장공간

키워트 final

선언과 동시에 초기화 해야 함

이름은 모두 대문자로 하는 것이 관례

 

○ 리터럴

상수! 말 그대로 진짜 상수 ㅎㅎ

상수는 리터럴에 의미 있는 이름을 붙여 코드의 이해와 수정을 쉽게 만든 것

리터럴의 타입과 접미사, 접두사

 

접미사 boolean

 

                         

      정수형은 기본형이 int

실수형은 기본형이 double -> 실수형 리터럴인데 접미사 없으면 double형 리터럴이다

→ L, F만 잘 신경 쓰면 된다!

접두사

8 진수 : 0 / 16 진수 : 0x, 0X

 

타입 불일치

범위 넓은 타입 <- 좁은 타입 저장 허용 (반대면 에러)

 

문자 리터럴과 문자열 리터럴

문자 리터럴 : 작은 따옴표로 문자 하나를 감싼 것

- char 타입

- 문자 리터럴은 비는 것을 허용하지 않음 -> ‘ ‘ 안에 반드시 하나의 문자가 있어야 함

 

문자열 리터럴 : 큰 따옴표로 두 문자 이상을 감싼 것

- String 타입(본래 클래스임_그래서 앞 글자가 대문자…)

- 공백 문자열을 허용 -> “ “ 안에 아무 문자로 넣지 않는 것을 허용

String name = new String(“JAVA”); // String 객체 선언해서 참조 변수 달아 사용

+ concat 가능

String str = “ hey, hey!”;

String callname = name + str; -> “JAVA hey, hey!”

- 기본형과 참조형 구별 없이 어떤 타입의 변수도 문자열과 덧셈연산 하면 문자열이 됨

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

““(공백 문자열)도 문자열이므로

““ + any type = any type + ““ -> 문자열

 

printf() : 형식화 된 출력

■ printf : 지시자를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력

지시자

C와 마찬가지로

출력 공간 확보하면

 

Scanner : 화면에서 입력 받기

■ Console 클래스 이용하는 것이 최신이나.. IDE에서 잘 동작하지 않음

■ Scanner 클래스 이용해서 입력 받음

import java.util.*; 추가 해 주자

Scanner scanner = new Scanner(System.in);

□ int num = scanner.nextInt(); // 정수를 입력받아서 변수 num에 저장

물론 nextFloat() 등과 같은 메서드가 있는데.. 그거 하나하나 골라가며 하기 힘드니까

보통

String input = scanner.nextLine(); // 문자열을 입력 받아서 변수 input에 저장

int num = Integer.parseInt(input) // 입력 받은 것이 String 형태로 들어옴 -> 변환해줘야 됨

이런식으로 변환해주면서 필요할 때 쓰는 게 낫다

 

기본형

○ 논리형 : Boolean

○ 문자형 : char

문자가 저장되는 것 같지만 문자의 유니코드(정수)가 저장됨

유니코드를 알고 싶으면 char형 변수에 저장된 값을 int형으로 형변환 하면 됨

특수문자

 

                      \n 보다는 %n을 쓰는 게 낫다고 한다. %n도 줄 바꿈 문자

                     

○ 정수형 : byte < short < int < long

표현 범위 : n비트 사용하는 자료형이라면  만큼 표현 가능

부호가 없다면

정수형 선택 기준

정수형 변수 선언 시 int타입으로 -> int범위(+- 20)를 넘어서면 long

성능보다 저장공간을 절약하는 것이 중요하다면 byte, short 사용

정수형의 오버플로우

타입이 표현할 수 있는 값의 범위를 넘어서는 것

 

     

부호 있는 정수의 오버플로우

o  부호 있는 정수는 부호비트가 0에서 1이 될 때 오버플로우 발생

 

 ○ 실수형 : float < double

언더플로우 : 실수형으로 표현할 수 없는 아주 작은 값, 양의 최소 값보다 작은 값이 되는 경우

이 때 변수의 값은 0이 됨

오버플로우 : 변수의 값이 무한대가 됨

정밀도 : 얼마나 0에 가깝게 표현할 수 있는가

□ float의 정밀도 : 7자리 -> 7자리의 10진수를 오차 이 저장할 수 있다는 뜻

double의 정밀도 : 15자리

double float보다 더 정밀하게 값을 표현할 수 있음

○ 실수의 저장 형식

부동 소수점 형식

 

S : 부호 E : 지수 M : 가수

부호 : 0이면 양수, 1이면 음수

지수 : 지수의 범위를 기술

가수 : 실제 값(유효값)을 저장하는 부분

             float 2진수 23자리를, double 2진수 52자리를 저장할 수 있음

부동소수점의 오차

정규화 : 유효숫자를 일의 자리만 남기고 전부 소수점 아래로 하고 그 차이를 기수의 제곱의 곱으로 표현

9.123 = 1001.000111111110  정규화 ->

만약 저 숫자가 더 길었다면 float의 경우 23자리까지만 저장되고 그 뒤로는 잘려나감

-> 만약 double 이라면 52자리까지만 저장되고 그 뒤로는 잘려나가는 것이 되는 거지

지수는 기저법으로 저장된다는데.. 바이어스법이랑 같은 건지 확인해야 함

          

형 변환 (casting 캐스팅)

○ 형 변환 : 변수 또는 상수의 타입을 다른 타입으로 변환하는 것

○ 형 변환의 종류

강제 형 변환

자동 형 변환

 

 

 

 

 

 

 

 

+ Recent posts