리터럴( Literal )
- 변수의 초기값을 코드에서 직접 입력하는 경우, 직접 입력된 값을 리터럴이라고 한다.
- 리터럴의 종류 > 정수 리터럴 , 실수 리터럴 , 문자 리터럴,논리 리터럴
- 리터럴은 상수와 같은 의미지만 프로그램에서 '상수(constant)'를 값을 한 번 저장하면 변경
- 할 수 없는 변수로 정의 하기 때문에 이와 구분하기위해 ' 리터럴'이라는 용어를 사용한다.
1. 정수리터럴
- 소수점이 없는 리터럴은 10진수로 간주한다.
- 0으로 시작되는 리터럴은 8 진수로 간주한다.
- 0x 또는 0X로 시작하고 0~9 숫자나 A,B,C,D,E,F 또는 a,b,c,d,e,f 로 구성된 리터럴은 16진수
- 정수 리터럴을 저장할 수 있는 타입은 byte,char,short,int,long
2. 실수 리터럴
- 소수점이 있는 리터럴은 10진수 실수로 간주
- 대문자 E또는 소문자e가 있는 리터럴은 10진수 지수와 가수로 간주한다.
- float,double
3)문자리터럴
- 작은 따옴표 ( ' )로 묶는 텍스트는 하나의 문자 리터럴로 간주
- 역 슬레쉬 (\) 가 붙은 문자 리터럴은 이스케이프(문자라고한다.)
\t |
수평 탭 |
\n |
줄 바꿈 |
\r |
리턴 |
\" |
큰따옴표 |
\' |
작은따옴표 |
\\ |
\ |
\u16진수 |
16진수에 해당하는 유니코드 |
문자 리터러을 저장 할 수 있는 타입은 char 이다
3. 문자열 리터럴
- 큰 따옴표 (")로 묶은 텍스트는 문자열 리터럴로 간주
- 큰 따옴표 안에 텍스트가 없어도 문자열로 간주한다.
- 문자열 리터럴 내부에서도 이스케이프 문자를 사용 할수 있다.
4. 논리 리터럴
- true와 false는 논리 리터럴로 간주한다.
- 논리 리터럴을 저장할 수 있는 타입은 boolean
데이터 형 (Data Type )
- 값을 저장하기 위해 이름과 크기를 지정하여 예약해놓은 것
- 변수를 선언할 때 사용
- 종류 : 기본데이터 형 ( 기본 타입 ) , 참조형 데이터형(참조 타입)이 제공된다.
- 기본 타입 : 선언된 변수자체에 값이 저장되는 데이터형
- 참조 타입 : 값은 메모리의 다른곳에 저장되고 그 주소를 저장하는 데이터 형
- 참조 형에는 class,String,Array가 있으며 다음에 다루도록 하겠습니다.
1.기본형 데이터형 / 기본 타입 / 기본형
- 선언된 변수자체에 값이 저장되는 데이터형
- 상수를 저장
- char을 문자로 치나 정수로 치는가 두가지로 나누어서 구분한다.
* char 문자로 취급하는경우
값의 종류 |
데이터형 |
크기(byte) |
범위(range) |
사용예 |
정수 |
byte
short
int
long |
1
2
4
8
|
-128~+127
-32,768~+32,767
-2,147,483,648~+2,147,483,647
-(2의 63승) ~ +(2의 63승 -1) |
byte b =10;
short s =20;
int i =30;
long l = 40; |
문자 |
char (character라고 읽는다.) |
2 |
작음 따음표(')로 묶인 영문자,숫자,한글(1자),한자(1자) |
char c = 'A'; char c = '0'; char c = '가' |
실수 |
float
double
|
4
8
|
소수 이하 6자리 유효연산
소수이하 15자리 유효연산 |
float f= 0.123F double d= 0.123; |
논리 |
boolean |
1 |
true/false 만 저장 |
boolean bl = true; boolean bl =false; |
* char를 정수로 취급하는 경우
정수 |
byte |
1byte |
|
char |
2byte |
|
short |
2byte |
|
int |
4bye |
|
long |
8byte |
실수 |
float |
4byte |
|
double |
8byte |
논리 |
boolean |
1byte |
필자는 char를 정수로 취급하여 기제 하겠습니다.
2. 정수타입
1) byte 타입
- 색상정보 및 파일 또는 이미지등의 이진(binary)데이터를 처리 할때 사용
- 표현값의 범위 -128~127이다. 양수가 127인 이유는 0이 포함되기때문
2) char 타입
- 자바는 모든 문자를 유니코드( www.unicode.org 참조) 로 처리한다.
- char가 표현 할 수 있는 범위는 0~65535(2의 16승 )이다
- 음수는 처리 될 수 없다.
- 표현 값 = 아스키코드 > A = 65 , a = 97 , 0 = 48
3) short 타입
- 2byte로 표현되는 정수 값을 저장할 수 있는 데이터 타입이다.
- 표현값의 범위는 -32,768~+32,767
- c언어와의 호환을 위해 사용되며 비교적 자바에서는 잘 사용되지 않는 타입
4) int 타입
- 4byte로 표현되며 정수값을 저장 할 수 있는 데이터 타입
- 값의 범위는 -2,147,483,648~2,147,483,647이다
- 8 진수를 표현할 때 숫자앞에 0을 붙이고 16진수를 표현할 때 0x를 붙이면된다.
5) long 타입
- 8byte(64bit)로 표현되는 정수값을 저장할 수 있는 데이터 타입
- 표현 범위는 -(2의 63승) ~ +(2의 63승 -1)
- int 타입의 저장 범위를 넘어서는 큰 정수는 반드시 소문자 'l'이나 대문자'L'을 붙여야한다.
그렇지 않으면 컴파일 에러가 나며 , 소문자 엘(l)은 숫자 1과 혼동하기 쉬움으로 대문자L를
사용한다.
ex) long var=10000000000000L
3. 실수 타입
- 실수 타입은 소수점이 있는 실수 데이터를 저장할 수 있는 타입으로,
- 메모리 사용 크기에 따라 float과 double을 사용 할수 있다.
- 만약 정수 리터럴에 10의 지수를 나타내는 E또는 e를 포함하고 있으면 정수 리터럴이 아닌
실수 리터럴임으로 실수 타입에 저장 해야한다..
1) float 타입
- float (4byte ,32bit ) = 부호(1bit) + 지수(8bit) + 가수(23bit) = 32bit = 4byte
- 소수 이하 6자리 유효연산
- 실수 리터럴을 float 타입 변수에 저장하려면 리터럴 뒤에 'f'나 'F'를 붙여야한다.
ex) float var = 3.22F;
2) double 타입
- double(8byte,64bit) = 부호(1bit) + 지수(11bit) + 가수(52bit) = 64bit = 8byte
- 소수이하 15자리 유효연산
*논리타입
- boolean 타입은 1byte(8bit)로 표현되는 논리값(true/false)을 저장 할 수 있는 타입
형변환
1. 자동형변환( promotion )
- 프로그램 실행시 JVM이 알맞게 메모리를 변경해주는 것
- 변수에 값을 할당 할 때 작동;
- 연산 될 때 동작하게됨
- int의 하위 데이터형은 연산적 결과를 int로 로 만든다.
2. 강제 형변환 ( casting )
- 데이터형을 개발자가 일시적으로 변경하는 것
- 단점 : 값 손실이 발생할 수 있다.
- 기본형 데이터 , 참조형 데이터형 모두 사용 가능
- 기본형 > 참조형 , 참조형 >기본형으로 형변환이 되지 않는다.
- boolean 은 형변환이 되지 않는다.
- 문법 : (변환할 형)리터럴 , (변환할 형 ) 변수
constant 상수
- 변수를 고정상수처럼 사용 할 때 사용할 때 사용
- 한번정해진 값은 바뀔수가 없다 / 선언 할때만 값 할당 가능
- 프로그램내에 기준값을 저장하고 사용할 때 사용하면 좋다.
- class의 field에 선언하고 어디에서든 사용 할 수 있다.
- 상수는 변수와 다르게 주로 전부 대문자로 작성한다.
- ( 아니면 전부 소문자로 사용하기도 한다. 단어구분은 _ 로 한다.)
문법)
class 클래스명{
public static final 데이터형 상수명 = 값;
}
1. Wrapper class
- 기본형 데이터를 객체로 만들어서 사용할 때 필요한 클래스들
- 기본형 데이터를 값만 대입받고 어떤행동을 하지 못한다.
- 기본형은 오로지 연산,출력,다른변수에 할당하는 것만 할수 있다.
- 이와 같이 다른 기능도 추가적으로 할수 있게 wrapper class가 존재한다.
- java.lang 이라는 패키지에서 제공한다.
- 기본형데이터와 이름이 같지만 클래스임으로 첫글자가 대문자
ex ) byte -> Byte
int -> Interger
int 는기본타입이지만 Integer 라는 클래스가 존재
연산자 & 진법
- 연산하기 위해 예약해 놓은 부호들
1.연산자 우선순위 : 최단산쉬관리삼대콤마
먼저 연산<---------------------->나중에 연산
[최]우선 |
( ) 괄호 |
[단]항 |
~ , ! , + , -, ++ , -- |
[산]술 |
+ , - , * , / , % |
[쉬]프트 |
<< , >> , >>> |
[관]계 |
> , < , >= , <= , == , != |
논[리] |
비트논리 : & ,! , | , ^ 인발논리 : && , || |
[삼]항 |
? : |
[대]입 |
산술대입 =. += , -= , *= , /=, %= 쉬프트대입 <<= , >>=, >>>= 비트논리대입 &=, != , ^= |
[콤마] |
, 콤마 |
1) 단항 (Unary ) 연산에 필요한 항이 하나인 연산자,
- ~(tilde) : 1의 보수 연산자 ( 이진수로 변환해야하는 연산자 )
부호가 바뀌고 값도 변경된다
~ 양수 : 부호가 변경되고 1증가
~ 음수 : 부호가 변경되고 1감소
~5 = 5는 ( 0000 01010) 인데 ~5는 ( 1111 1010 ) = -6
~-3 = -3은 (1111 1101) 인데 2으로 변환 (0000 0011) = 2로
- !( not ) : true -> false , false -> true
!(3>2) 는 FALSE가 나온다.
- + : 형식적 제공
- - : 2의 보수연산
부호만 변경되고 값은 그대로 유지하는 연산
2. 진수
- 서로 다른 모양의 숫자로 모든 수를 표현하는 법
16 진수( Hex / 헥사 ) |
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (16개) |
10 진수 |
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ( 10개 ) |
8 진수 ( Octa / 옥타 ) |
0, 1, 2, 3, 4, 5, 6, 7 ( 8개 ) |
2 진수 ( Binary /바이너리 ) |
0, 1 ( 2개 ) |
- java 에서 표현 할 수 있는 진수는 16진수, 10진수, 8진수
- 맨 앞에 0이 붙으면 8진 > int a = 04 ( 8진수의 4)
- 맨 앞에 0x(혹은 0X) 가 붙으면 16진수 int a = 0x10 ( 진수의 16 )
- 어떠한 진수를 리터럴로 입력하든 출력은 10진수로 나온다.
소스코드)
출력)
하지만 아래의 이미지에 나오는 것처럼
Integer class에 있는 메소드를 사용하면 해당 진수에 따라 출력이된다.
참조 : https://docs.oracle.com/javase/8/docs/api/index.html
소스코드)
결과)
3. 8진수를 2진수로 바꾸는 방법
- 숫자하나를 4 2 1 첨자를 사용하여 2진수로 만든다.
ex ) int a = 013
1 일 경우 |
4 |
2 |
1 |
1의 2진표현법 |
0 |
0 |
1 |
3 일 경우 |
4 |
2 |
1 |
3의 2진표현법 |
0 |
1 |
1 |
1의 결과 001 과 3의 결과 011 을 붙인다. = > 001 011
4. 16 진수를 2진수로 바꾸는 법
- 숫자하나를 8 4 2 1 첨자를 사용하여 2진수로 만든다.
ex int a = 0x1A
1 |
8 |
4 |
2 |
1 |
1의 2진표현 |
0 |
0 |
0 |
1 |
A의 경우 (10진수로 변홤하면 10) |
8 |
4 |
2 |
1 |
A의 2진표현 |
1 |
0 |
1 |
0 |
1와 결과 0001 와 A의 결과 1010을 붙인다.. 0001 1010
5. 보수
양수의 보수는 절대값에서 1을 더해준 음수 값이다..
1의 보수는 -2
2의 보수는 -3
'IT > JAVA' 카테고리의 다른 글
[JAVA] Eclipse (0) | 2018.03.26 |
---|---|
[JAVA] Package (패키지) (0) | 2018.03.26 |
[JAVA] 연산자 (0) | 2018.03.23 |
[JAVA] 개발환경설정 및 기초 (0) | 2018.03.21 |
[JAVA] 콘솔(Console)에서 출력 (0) | 2018.03.21 |