반응형
[Java] 3. 자료형
자바에서 자료형은 기본 자료형과 참조 자료형(객체 자료형) 이 두 가지로 나뉜다.
기본 자료형
기본 자료형은 컴파일러에 의해 해석되는 자료형이고 그 종류는 다음과 같다.
자료형 | 키워드 | 크기 | 기본값 | 표현범위 |
논리형 | boolean | 1bit | false | true/false(0, 1 아님!) |
문자형 | char | 2byte | \u0000 | 0~65,535 |
정수형 | byte | 1byte | 0 | -128~127 |
short | 2byte | 0 | -32.768~32.767 | |
int | 4byte | 0 | -2,147,483,648~2,147,483,647 | |
long | 8byte | 0 | -9,223,372,036,854,775,808 ~9,223,372,036,854,775,807 |
|
실수형 | float | 4byte | 0.0 | -3.4E38~+3.4E38(E:밑이 10인 지수) |
double | 8byte | 0.0 | -1.7E308~+1.7E308 |
앞서 다루었던 System.out.println("내용");은 내용을 출력하고 줄바꾸기의 기능을 수행한다.
출력을 다음과 같이 정리할 수 있다.
System.out.print("내용"); : 내용만 출력한다.
System.out.println("내용"); : 내용을 출력하고 줄바꿈한다.
System.out.printf("내용%s\n",서식에 의한 출력방법); : 내용과 맞는 서식이 출력된다.
여기서 System은 클래스명, out은 객체명, println:메소드명이고, 메소드⊂객체⊂class
논리형 자료는 참/거짓을 따질 때 사용되며 true 또는 false를 상수로서 사용한다.
사용되는 출력서식에는 %b(소문자출력) 또는 %B(대문자출력)가 쓰이고, 변수를 정의할 때
키워드인 boolean이 사용된다.
정수형 자료는 소숫점이 없는 수(byte, short, int, long)이고, 사용되는 출력서식에는
%d(decimal, 10진수), %0(octal, 8진수), %x(hexa, 16진수)가 쓰인다.
변수를 정의할 때는 byte, short, int, long이 사용되고, 보통 int가 많이 사용된다.
*정수형 자료 맨 끝에 L을 붙이면 long형 상수가 되고, 4byte가 할당된다.
*8진수는 앞에 0(숫자)을 붙이고, 16진수는 앞에 0x(숫자+소문자x)를 붙인다.
실수형 자료는 소숫점이 있는 수(float, double)이고, 사용되는 출력서식에는
%f(소숫점 이하 6자리까지), %e(소숫점 이하 6자리까지), %g(자릿수가 적은 쪽으로)가 쓰인다.
*실수형 자료 맨 끝에 F를 붙이면 4byte가 할당된다
문자형 자료는 글자 1개('A', '한', '韓', 'お' 각각 글자 1개)이고, 자료형은 char, 사용되는 출력서식에는
%c(c는 character)가 쓰인다.
*아스키코드(ASCII Code)
0에서 127사이의 값을 가지며 0~31은 제어 및 통신문자, 32부터는 일반문자를 나타낸다.
문자 'A'의 아스키코드 값은 65, 'a'는 97, ''(공백)은 32, '0'은 48, '1'은 49이다.
문단의 흐름을 제어하는 문자는 \문자(\+알파벳)로 나타내고 사용되는 \문자는 다음과 같다.
\r: carrage return(맨 앞으로 이동)
\n: new line(줄바꾸기)
\t: tab
\b: arrow key left
여기서 \를 문자로 인식시키려면 \\를 입력하고, "를 문자로 인식시키려면 \"를 입력, %를 문자로 인식시키려면 %%를 입력한다.
문자열 자료는 1개 이상의 문자가 나열된 데이터("ABC"<='A'+'B'+'C', "홍길동"<='홍'+'길'+'동')이고,
자료형은 string, 사용되는 출력서식에는 %s(string)가 있다.
변수를 정의할 때 stack 메모리에 해당 자료형 크기 만큼의 공간을 할당한다.
예:
byte b1;
b1=1000;
위의 예는 변수 b1을 byte형으로써 정의하고, 그 값을 1000으로 정의했음을 나타낸 것이다.
위의 예를 다음과 같이 간단히 나타낼 수 있다.
byte b1=1000;
다음은 위 내용을 바탕으로 작성한 프로그램의 코드이다.
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
|
package mymain;
public class MaterialTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean b1=false;
boolean b2=(5==6-1);
int n=111;
double d=123.456;
float f1=1234.56789012F;
float f2=(float) 1234.56789012;
char ch='秦';
String name="진시황제(秦始皇帝)";
//논리형
System.out.printf("%B\n",b1);//대문자 출력
System.out.println(b2);//소문자 출력
//정수형
System.out.printf("%d\n", n);//10진수로 출력
System.out.printf("%o\n", n);//8진수로 출력
System.out.printf("%x\n", n);//16진수로 출력
System.out.println(Integer.toBinaryString(n));//2진수로 출력
System.out.printf("%d\n", 0144); //8진수 144를 10진수로 출력
System.out.printf("%d\n", 0x64); //16진수 64를 10진수로 출력
System.out.println(Integer.valueOf("10100111",2));//2진수 10100111을 10진수로 출력
//실수형
System.out.printf("%f\n", d);//소숫점 이하 6자리까지 표기
System.out.printf("%e\n", d);//소숫점 이하 6자리표기+과학적표기
System.out.printf("%E\n", d);//소숫점 이하 6자리표기+과학적표기+e를 대문자로 표기
System.out.printf("%g\n", d);//자릿수가 적은 쪽으로 표기
System.out.println(f1);
System.out.println(f2);
//문자형
System.out.println(ch);
System.out.printf("%c\n",0xd5cc);
System.out.printf("%c\n",101);
// \=>문자로 인식시키려면 : \\
System.out.println("A\\B\\C");
// "=>문자로 인식시키려면 : \"
System.out.println("안녕 \"너무\" 반가워");
// %=>문자로 인식시키려면 : %%
System.out.printf("노트북 할인율 %d(%%)\n", 30);
//문자열자료형
System.out.printf("%s\n",name);
}
}
|
cs |
실행결과:
FALSEtrue1111576f1101111100100167123.4560001.234560e+021.234560E+02123.4561234.56791234.5679秦헌eA\B\C안녕 "너무" 반가워노트북 할인율 30(%)진시황제(秦始皇帝) |
정렬해서 출력하기, 자료형 범위출력
정수값 n에 대해 출력공간을 m칸 확보하고 값을 오른쪽 정렬해서 출력하려면 System.out.printf("[%md]",n)으로 입력하고, 왼쪽 정렬해서 출력하려면 System.out.printf("[%-md]",n), 빈 공간을 0으로 채우려면 System.out.printf("[%0md]",n)을 입력한다.
복합적으로 서식을 여러개 사용하려면 서식의 개수에 맞추어 입력값을 적으면 된다.
1부터 100까지를 출력하려면 다음과 같이 적으면 된다.
System.out.printf("%d부터 %d까지",1,100);
실수형에서 double형 실수 d에 대해 자릿수를 m으로 지정해서 소수 n자리까지 출력하려면 System.out.printf("[%m.nf]",d);를 입력한다.
왼쪽정렬을 하려면 정수의 경우처럼 System.out.printf("[%-m.nf]",d);(앞에 -부호 붙임)를 입력한다.
문자열자료형에서 문자열 str에 대해 m칸 확보하고, 출력문자수를 n개로 하겠다면 System.out.printf("[%m.ns]",str);을 입력한다(왼쪽정렬을 하려면 -부호를 붙인다).
다음은 위 내용을 바탕으로 작성한 프로그램의 코드이다.
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
|
package mymain;
public class OrderingandOthers {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n=123;
double d=123.4567890123456789;
float f=123.4567890123456789F;
String name="홍길동";
String str="대한민국은 민주공화국이다";
// %10d => 출력 공간을 10칸 확보하고 값을 오른쪽 정렬해서 출력
System.out.printf("[%10d]\n", n);
// %010d => 빈 공간을 0으로 채워라
System.out.printf("[%010d]\n", n);
// %-10d => 왼쪽 정렬해서 출력
System.out.printf("[%-10d]\n", n);
// 확보한공간<출력해야될 개수 => 확보공간은 무시됨
System.out.printf("[%2d]\n", n);
//자릿수 지정해서 출력 : %m.nf
//m:전체 자릿수, n:소숫점 이하 자릿수
System.out.printf("[%10.2f]\n", d); // m=10, n=2 align=right
//빈 공간은 0으로 채워라
System.out.printf("[%010.2f]\n", d); // m=010, n=2
System.out.printf("[%-10.2f]\n", d); // m=-10, n=2 align=left
//소수점 이하 20자리까지 출력
System.out.printf("[%10.20f]\n", d); // 10은 무의미한 값(없어도 됨)
System.out.printf("[%.20f]\n", f);
System.out.printf("[%10s]\n",name); //10칸 확보 후 "홍길동" 출력, align=right
System.out.printf("[%-10s]\n",name); //align=left
System.out.printf("[%10.6s]\n", str); //10칸 확보, 4s: 출력문자수는 4개
}
}
|
cs |
실행결과:
[ 123][0000000123][123 ][123][ 123.46][0000123.46][123.46 ][123.45678901234568000000][123.45678710937500000000][ 홍길동][홍길동 ][ 대한민국은 ] |
반응형
'Coding(Java) > Java(이론)' 카테고리의 다른 글
[Java] 6. 시프트, 관계, 이진논리, 일반논리, 3항, 대입연산자 (0) | 2021.08.20 |
---|---|
[Java] 5. 단항연산자, 산술연산자 (0) | 2021.08.20 |
[Java] 4. 자료의 입출력 (0) | 2021.08.18 |
[Java] 2. 식별자와 예약어, 사용자 정의 명칭 (0) | 2021.08.15 |
[Java] 1. 기본적인 출력 (0) | 2021.08.13 |