728x90
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
public class exam2 {
public static void main(String[] args) {
System.out.println("====정수형 자료형====");
byte b10=1;//★ byte 크기 : 1byte / 표현 범위 : -128 ~ 127
short s10=20;//★ short 크기 : 2byte / 표현 범위 : -32,768 ~ 32,767
int i10;//★ int 크기 : 4byte / 표현 범위 : -21억 ~ 21억 대
//-2,147,483,648 ~ 2,147,483,647
long l10;//★ long 크기 : 8yte / 표현 범위 : -900경 ~ 900경 대
//-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
b10 = (byte)s10;//★ 2바이트 공간인(s10)을 1바이트 공간에(b10) 넣고 싶으면
//★ 앞에 (byte)붙여서 (1)강제적 형변환을 시킴. 2바이트 공간 값 20 출력됨
//★ (1)강제적 형변환 : 강제로 형 변환 처리를 하는 것 (묵시적 형변환과 반대)
System.out.println("b10:"+b10);//▶ b10:20
byte b1=10;
byte b2=20;
System.out.println("b1+b2="+(b1+b2));//▶ b1+b2=30
//★ 바이트끼리 연산한 결과를 담을 때 바이트에 담을 수 없음!((2)묵시적 형변환이 일어나기 때문)
//★ (2)묵시적 형변환 : 크기가 작은 유형에서 큰 유형으로 자동 변환되는 것
//byte b3;
//Type mismatch : cannot convert from int to byte (유형불일치 오류)
int b3;
b3 = b1 + b2;
System.out.println("b1+b2="+b3);//▶ b1+b2=30
/*
byte + byte → int
short + byte → int
short + short → int
char + char → int
*/
int x = 1000000;
int y = 2000000;
int z = x * y ;
//2,000,000,000,000 : 2조가 나와야 하는데 int 표현 범위를 초과하기 때문에 이상한 값이 출력됨
System.out.println("z:"+z);//▶ z:-1454759936
long z2 = x * y;
System.out.println("z2:"+z);//▶ z2:-1454759936
//★ 2조를 담을 수 있는 long에 넣기 전에 연산 결과가 4바이트 공간에 들어가므로
//★ 먼저 8바이트 공간에 2조가 들어갈 수 있게 해야 함(강제 형변환 필요)
long z3 = (long)x * y;//x, y 둘 다 강제 형변환 해줘도되고 하나만 해줘도 되고~
System.out.println("z3:"+z3);//▶ z3:2000000000000
System.out.println("====문자형 자료형====");
char ch1 = 'A';//★ char 크기 : 2byte / 표현 범위 : 0 ~ 65,535
char ch2 = 'b';
int ch3 = ch1 + ch2;//char 끼리 연산이니까 int에 담아야 함
System.out.println("ch1:"+ch1);//▶ ch1:A
System.out.println("ch2:"+ch2);//▶ ch2:b
System.out.println("ch3:"+ch3);//▶ ch3:163
System.out.println(ch1+1);//▶ 66
//★ 모든 문자는 고유의 숫자를 갖고있음(아스키코드 값)
System.out.println((char)(ch1+1));//▶ B
System.out.println("====논리형 자료형====");
boolean bool1 = true;//★ boolean 크기 : 1bit / 표현 범위 : true 또는 false
//★ boolean 기본값 : false
boolean bool2 = false;
bool1 = 5<10;
System.out.println("bool1 : " + bool1);//▶ true
System.out.println("===실수형 자료형===");
float ft1 = 1.234f;
//★ float 크기 : 4byte / 표현 범위 : -3.4E38 ~ + 3.4E38
//★ float 기본값 : 0.0f / f를 뒤에 꼭 붙여줘야 4바이트 공간으로 잡음(안 쓰면 8바이트 공간)
System.out.println("ft1:"+ft1);//▶ ft1:1.234
float ft2 = 0.0987000f;
System.out.println("ft2:" + ft2);//▶ ft2:0.0987
float ft3 = 1.1234567890123456f;
System.out.println("ft3:"+ft3);//▶ ft3:1.1234568
//★ float : 소수점 아래 8번째 자리가 5이상이면 반올림돼서 7번째 자리까지 표시됨
double d1 = 1.234;
System.out.println("d1:"+d1);//▶ d1:1.234
//★ double 크기 : 8byte / 표현 범위 : -1.7E308 ~ + 1.7E308
double d2 = 1.1234567890123456789d;
System.out.println("d2:"+d2);//▶ d2:1.1234567890123457
//★ double : 소수점 아래 16번째 자리가 5이상이면 반올림돼서 15번째 자리까지 표시됨
d2 = ft1;//4바이트 공간을 8바이트에 넣는 건 쉽지만
ft1 = (float)d2;//8바이트 공간을 4바이트 공간에 넣으려면 강제 형변환 해야겠죠~
System.out.println("ft1:"+ft1);//▶ ft1:1.234
double d3 = .987E3;//0.987 * 10^3
System.out.println("d3:" +d3);//▶ d3:987.0
double d4 = .987E-2;//0.987 * 10^-2
System.out.println("d4:" +d4);//▶ d4:0.00987
int i=10;
float f=1.2f;
f = i;
System.out.println("f:"+f);//▶ f:10.0
i = (int)f;//★ int랑 float 똑같은 4바이트지만 float을 더 크게 봄.
//★ 따라서 int에 그냥 안 담김. 강제 형변환 필요!
System.out.println("i:"+i);//▶ i:10
}
}
|
cs |
▼ (이후 게시물) [확고의 쓱~ 훑어보는 기록] JAVA - 자료형과 기본 입출력(3)
▼ (첫 번째 게시물) [확고의 쓱~ 훑어보는 기록] JAVA - 자료형과 기본 입출력(1)
728x90
반응형
'IT관련 > Java' 카테고리의 다른 글
[확고의 쓱~ 훑어보는 기록] JAVA - 연산자(산술/대입/증감/관계/논리/삼항) (0) | 2022.07.19 |
---|---|
[확고의 쓱~ 훑어보는 기록] JAVA - 자료형과 기본 입출력(3) (0) | 2022.07.18 |
[확고의 쓱~ 훑어보는 기록] JAVA - 자료형과 기본 입출력(1) (0) | 2022.07.16 |
이클립스 JAVA 단축키 정리 (0) | 2022.07.16 |
[Java] String 메서드(1) - toLowerCase / toUpperCase / charAt / equals / indexOf / replace (0) | 2022.06.12 |
댓글