1. 데이터 타입, 자료형, type
1) 자바의 데이터타입(자료형)에 대해서 각 타입의 사이즈와 함께 설명
(1) 크게 봤을 때 기본형 타입과 참조형 타입으로 분류
(2) 기본형 타입(Primitive Data Type) 8개
- 정수형: byte(1byte), short(2), int(4), long(8)
- 실수형: float(4), double(8)
- 문자형: char(2byte). 문자 1개. 참고로 문자열을 다루는 타입은 없다.
- 불린형: boolean(1byte). true or false.
(3) 참조형 타입(Reference Data Type)
- 위 기본형에 속하지 않는 데이터형들.
- 클래스(class), 배열(array), 인터페이스(interface), 문자열(String/immutable)
- 참조형 변수의 특징: 데이터가 저장된 메모리의 주소값을 저장하는 변수이다.
2. primitive type, 기본형, 바이트, 비트
1) Primitive Data Type의 바이트 크기와 비트 크기를 출력하는 코드 구현(정수형, 문자형만/최댓값, 최솟값도 출력)
public class Java100_variable_003{
public static void main(String[] args){
System.out.println("-------------------정수형-------------------");
System.out.println("byte: "+Byte.BYTES+"바이트"+" --> "+Byte.SIZE+"비트");
System.out.println("최솟값: " + Byte.MIN_VALUE);
System.out.println("최댓값: " + Byte.MAX_VALUE);
System.out.println("short: "+Short.BYTES+"바이트"+" --> "+Short.SIZE+"비트");
System.out.println("최솟값: " + Short.MIN_VALUE);
System.out.println("최댓값: " + Short.MAX_VALUE);
System.out.println("int: "+Integer.BYTES+"바이트"+" --> "+Integer.SIZE+"비트");
System.out.println("최솟값: " + Integer.MIN_VALUE);
System.out.println("최댓값: " + Integer.MAX_VALUE);
System.out.println("long: "+Long.BYTES+"바이트"+" --> "+Long.SIZE+"비트");
System.out.println("최솟값: " + Long.MIN_VALUE);
System.out.println("최댓값: " + Long.MAX_VALUE);
System.out.println();
System.out.println("-------------------문자형------------------");
System.out.println("char: "+Character.BYTES+"바이트"+" --> "+Character.SIZE+"비트");
System.out.println("최솟값: " + (int)Character.MIN_VALUE);
System.out.println("최댓값: " + (int)Character.MAX_VALUE);
}
}
-------------------정수형-------------------
byte: 1바이트 --> 8비트
최솟값: -128
최댓값: 127
short: 2바이트 --> 16비트
최솟값: -32768
최댓값: 32767
int: 4바이트 --> 32비트
최솟값: -2147483648
최댓값: 2147483647
long: 8바이트 --> 64비트
최솟값: -9223372036854775808
최댓값: 9223372036854775807
-------------------문자형------------------
char: 2바이트 --> 16비트
최솟값: 0
최댓값: 65535
(1) 함수
- 데이터타입.BYTES: 바이트 크기 계산
- 데이터타입.SIZE: 비트 크기 계산
- 데이터타입.MIN_VALUE: 최솟값
- 데이터타입.MAX_VALUE: 최댓값
(2) 여기서 int는 Integer, char는 Character로 표기해야 함.
(3) short와 char는 2바이트로 크기는 같으나 char는 숫자가 아닌 문자형이기 때문에 음수가 될 수 없음 -> 0~65535
3. 정수, 실수, 문자형, 변수
1) 정수, 실수, 문자형 타입의 변수 사용에서 틀린 곳을 찾아서 모두 수정하시오.
//문제
public class Java100_variable_DataType1{
public static void main(String[] args){
int a;
int b; int c = 90;
double d;
char e;
a = 10;
d = 10;
e = "A";
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
}
}
//풀이
public class Java100_variable_DataType1{
public static void main(String[] args){
int a;
int b; int c = 90;
double d;
char e;
a = 10;
b = 20;
d = 10.0;
e = 'A';
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
}
}
(1) 변수 선언
int a; //정수가 저장될 변수 이름을 a로 만들어라
int b; int c = 90;
double d; //실수가 저장될 변수 이름을 d로 만들어라
char e; //문자가 저장될 변수 이름을 e로 만들어라
(2) 선언된 변수에 값을 대입
a = 10;
d = 10; //정수 10을 입력하면 10.0으로 출력
e="A"; //쌍따옴표하면 에러
(3) 출력
System.out.println(a); //10
System.out.println(b); //Err -> b=20; 초기화 필요
System.out.println(c); //90
System.out.println(d); //10.0
System.out.println(e); //Err -> 'A'로 바꾸면 A 출력
(4) 여러 개 변수 선언 및 초기화 -> 선언 후 값을 세팅
public class Java100_variable_DataType1{
public static void main(String[] args){
int x,y,z=900;
// System.out.println(x);
// System.out.println(y);
System.out.println(z);
//z만 초기화 되고 x,y는 초기화 안됨.
//각각 초기화
int x1,y1,z1;
x1 = 700;
y1 = 800;
z1 = 900;
System.out.println(x1+","+ y1 + "," + z1);
//한꺼번에 초기화
int x2=700,y2=800,z2=900;
System.out.println(x1+","+ y1 + "," + z1);
//문자형 같은 값으로 한꺼번에 초기화
String str1, str2, str3;
str1 = str2 = str3 = "korea";
System.out.println(str1 + "," + str2 + "," + str3);
//정수형 같은 값으로 한꺼번에 초기화
int i, j, k;
i = j = k = 100;
System.out.println(i + "," + j + "," + k);
}
}
(5) 결론
- 선언했으면 초기화하기(최초 값 할당)
- 자료형에 맞춰 값 설정
- 문자 하나는 작은따옴표로 감싸기
4. 기본형, 타입, 초기화
1) 기본형 타입의 값을 초기화한 아래의 코드에서 틀린 곳을 찾아 수정하시오.
//문제
public class Java100_variable_DataType2{
public static void main(String[] args){
byte b = 100;
short s = 30000;
int i = 2100000000;
long l = 7000000000;
float f = 9.8;
double d = 3.14;
char c = 'A';
boolean bl = false;
}
}
//풀이
public class Java100_variable_DataType2{
public static void main(String[] args){
byte b = 100;
short s = 30000;
int i = 2100000000;
long l = 7000000000L;
float f = 9.8F;
double d = 3.14;
char c = 'A';
boolean bl = false;
System.out.println( b + " byte 최댓값 --> " + Byte.MAX_VALUE );
System.out.println( s + " short 최댓값 --> " + Short.MAX_VALUE );
System.out.println( i + " int 최댓값 --> " + Integer.MAX_VALUE );
System.out.println( l );
System.out.println( f );
System.out.println( d );
System.out.println( c );
System.out.println( bl );
}
}
2) 정수형 변수를 문자형으로 형 변환시켜서 출력하면 어떤 결과가 나오는지 말해보시오.
public class Java100_variable_DataType3 {
public static void main(String[] args) {
// [1]
short a = 'A';
System.out.println( a ); //--- A(65) + (26-1) = Z(90)
// [2]
short b = 90;
System.out.println( (char)b ); //--- Z
// [3]
char c = 'z';
System.out.println( (short)c ); //--- a(97) + (26-1) = z(122)
}
}
5. System.out.print, println, printf
1) System.out.print(), println(), printf() 등에 대해 예제를 통해 설명. 이 때 10진수 10에 대해 8진수, 16진수로 각각 출력
public class Java100_variable_DataType4 {
public static void main(String[] args) {
System.out.print("안녕하세요~");
System.out.println("안녕하세요~");
//안녕하세요~안녕하세요~
//%d(정수), %f(소숫점 형식), %c(문자), %s(문자열), %b(부울), %n(줄바꿈), %e(지수), %o(8진수), %x(16진수)
System.out.printf("나는 %d살의 대학생입니다. %d, %d, %d, 소숫점 형식-->%.1f, %.2f, 문자-->%c, %b", b, s, i, l, f, d, c, bl);
//나는 21살의 대학생입니다. 32767, 2100000000, 7000000000, 소숫점 형식-->9.8, 3.14, 문자-->A, false
System.out.println();
int z = 10;
System.out.printf("10진수 10은 8진수로는 %o이고, 16진수로는 %x이다.", z, z);
}
}
6. 정수형, 문자열, int, String, 자릿수
1) 정수형(int)을 문자열(String)로 변환하여 정수의 자릿수를 구하는 코드를 구현
public class Java100_type_IntString {
public static void main(String[] args) {
//[1]: 정수 선언
int a = 12345;
String str = "12345";
System.out.println(a.length()); //Err
System.out.println(str.length()); //5
//[2]: 정수-->문자열로 변환-->자릿수 구하기
String stra = String.valueOf(a);
System.out.println(stra); //12345
System.out.println(stra.length()); //5
//[3]: 문자열 + 정수형 = ?
System.out.println(12345+1); //12346
System.out.println(str + 1); //123451
//[4]: 문자열-->정수로 변환
int b = Integer.valueOf(str);
System.out.println("[4]-->" + (b + 1)); //12346
//String 섞였을 때 괄호 해주어야 원하는 결과 나옴.
}
}
7. 수치, 연산자, 축약
1) 수치 연산자에 대해 설명해보시오.
public class Java100_operator_ArithmeticOperators {
public static void main(String[] args) {
//[1]: 수치 연산자--> +, -, *, /(몫), %(나머지 연산자)
int a, b, c, d;
a=60; b=8; c=300; d=400;
System.out.println(a+b); //68
System.out.println("a+b="+a+b); //a+b=608
System.out.println("a+b="+(a+b)); //a+b=68
System.out.println("a-b="+(a-b)); //a-b=52
System.out.println("a*b="+(a*b)); //a*b=480
System.out.println("a/b="+(a/b)); //a/b=7 --> 몫
System.out.println("a%b="+(a%b)); //a%b=4 --> 나머지
}
}
2) 축약된 형태의 연산자를 사용하여 변수 a의 값을 증가시켜보시오.
public class Java100_operator_ArithmeticOperators3 {
public static void main(String[] args) {
//[1]: 축약된 형태
int a=0,b=100;
a = a + 1;
System.out.println(a); //1
a += 1;
System.out.println(a); //2
a -= 1;
System.out.println(a); //1
b++;
System.out.println(b); //101
b++;
System.out.println(b); //102
b--;
System.out.println(b); //101
}
}
8. 수치, 소수점, 연산자
1) 수치 연산자를 사용한 연산에서 소숫점 결과가 예상과 다르게 나오는 것에 대해서 설명해보시오.
public class Java100_operator_ArithmeticOperators2 {
public static void main(String[] args) {
//[1]: 연산의 결과-->정수끼리라도 나누기의 경우 소숫점 형태가 나올 수 있음.
int a=60,b=8;
int rst1; double rst2, rst3, rst4;
rst1 = a / b;
System.out.println(rst1); //7.5가 아니라 7이 출력 --> 타입이 정수형이므로 --> 실수형으로 변환.
System.out.println((double)rst1); //이러면 7.5가 아니라 7.0 --> 리턴 받는 변수를 실수형으로 하더라도 원하는 결과를 얻지는 못한다.
rst2 = a / (double)b; //어느 한쪽의 값을 double 타입으로 변환.
System.out.println(rst2); //7.5
rst3 = 100/3;
System.out.println(rst3); //33.0
rst3 = 100 / (double)3;
System.out.println(rst3); //33.3333333333..
rst4 = 100 / 3.0;
System.out.println(rst4); //33.3333333333..
}
}
9.관계, 논리, 연산자
1) 관계 연산자에 대해서 설명해보시오.
public class Java100_operator_RelationalOperators {
public static void main(String[] args) {
//[1]: 관계 연산자--> ==, !=, >, >=, <, <=
//관계 연산자를 사용해서 연산을 수행하면 그 결과는 참(true), 거짓(false)이 된다.
//--> 따라서 그 결과를 받는 타입은 boolean.
int kor=70, eng=40, math=70;
boolean rst1, rst2, rst3, rst4, rst5, rst6;
rst1 = kor == eng;
rst2 = kor != eng;
rst3 = kor > eng;
rst4 = kor >= math;
rst5 = kor < eng;
rst6 = kor <= math;
System.out.println(rst1); //false
System.out.println(rst1); //true
System.out.println(rst1); //true
System.out.println(rst1); //true
System.out.println(rst1); //false
System.out.println(rst1); //true
}
}
2) 논리 연산자에 대해서 설명해보시오.
public class Java100_operator_LogicalOperators {
public static void main(String[] args) {
//[1]: 논리 연산자 --> &&, ||(이항 연산자) !(단항 연산자)
//&&(and) ||(or) !(not)
//관계 연산자와 마찬가지로 결과로써 나오는 값을 참(true), 거짓(false)으로 나오므로 결과를 받는 타입은 boolean.
//A && B --> A 그리고 B가 모두 참이어야만 참.
//A || B --> A 또는 B가 하나라도 참이면 참.
//!A --> 반대로..A가 참이면 거짓으로, 거짓이면 참으로.
int a=10,b=20,c=30;
boolean rst1 = a<b && c>b;
System.out.println(rst1); //true
boolean rst2 = a<b || c<b;
System.out.println(rst2); //true
boolean rst3 = a>c || b!=c;
System.out.println(rst3); //true
boolean rst4 = !rst3;
System.out.println(rst4); //false
System.out.println(!rst4); //true
}
}
'Java > 예제로 공부하는 Java 100 문제풀이' 카테고리의 다른 글
[예제로 공부하는 Java 100 문제풀이 Part.3] 섹션0 - 함수 (0) | 2023.01.18 |
---|---|
[예제로 공부하는 Java 100 문제풀이 Part.2] 섹션1 - 배열 (0) | 2023.01.04 |
[예제로 공부하는 Java 100 문제풀이 Part.2] 섹션0 - 조건문, 반복문 (0) | 2022.12.22 |
[예제로 공부하는 Java 100 문제풀이 Part.1] ] 섹션1 - 환경설정, 변수 (0) | 2022.12.12 |
[예제로 공부하는 Java 100 문제풀이 Part.1] 섹션0 - 개요 (1) | 2022.12.12 |