💻 Java Data Type - 자바의 자료형
📌 1. Primitive Type - 기본 자료형(8개)
- Boolean Type(논리형)
- *boolean (참과 거짓 | 크기: 1바이트 | 표현 가능 범위 : true, false )
- Integer Type(정수형)
- byte (정수 | 크기: 1 | 표현 가능 범위 : -128~127)
- short (정수 | 크기: 2 | 표현 가능 범위 : -32, 768~32, 767)
- *int (정수 | 크기: 4)
- long (정수 | 크기: 8 )
- Floating Point Type(실수형)
- float (실수 | 크기: 4)
- *double (실수 | 크기: 8)
- *정수 자료형 기본: int / 실수 자료형 기본: double
- Character Type(문자형)
- char (문자 | 크기: 2바이트 | 표현 가능 범위 : 유니코드 문자)
- char 타입은 문자를 저장할 수 았다. 이 때 저장할 문자는 반드시 홀따옴표로 감싼다.
📌 2. Reference Type - 참조 자료형(무한대)
- Class Type(클래스형)
- Interface Type(인터페이스형)
- Array Type(배열형)
- Enum Type(열거형)
- etc.
💻 연산자
- +, - *, / : 산술연산자
- % : 모드(mod)연산자. 나눗셈의 나머지를 구하는 연산
int num1 = 10 % 3;
- <, >, >=, <=, ==(같다), !=(같지 않다) * =기호는 우측에 위치
- ! : 부정연산자. 결과값의 반대 결과를 나타냄
System.out.println(!true);
System.out.println(!(5 == 5));
- && : and 연산자(그리고)
- || : or 연산자(이거나)
System.out.println(5 > 3 && 3 > 1);
System.out.println(3 >= 2 || 10 > 11);
- 예제
public class 연산자_2 {
public static void main(String[] args) {
//대입연산자
//=, +=, -=, *=, /=, %=
int result1 = 0;
//resolt1 = result1 + 1 -> 값을 1 증가
result1 += 1;
//num -= 3; num = num - 3;
//a *= 5; -> a = a * 5;
//증감연산자
//증감연산자는 단독으로 사용할 때와
//다른 코드와 함께 사용할 때 증감하는 시기가 달라진다.
//단독 사용: 한 줄에 증감연산자만 사용한 경우 ★ num++;
int num = 5;
num++; //기존의 값에서 +1 / num = num + 1, num += 1;
System.out.println(num);
++num; //num--, --num -> 기존의 값에서 -1
System.out.println(num);
int x1 = 5;
int y1 = ++x1;
System.out.println("y1 = " + y1);
System.out.println("x1 = " + x1);
int x2 = 5;
int y2 = x2++;
System.out.println("y2 = " + y2);
System.out.println("x2 = " + x2);
int z = 3;
System.out.println(z++); //3(증감없음)
System.out.println(z);
// = -> 제일 마지막에 해석.
//단, 후위 증감 연산자와 함게 쓰일 때는 주의 필요!
//&&(그리고)가 우선순위가 높음.
}
}
📌 타입 변환 / 형 변환
- 타입/형 변환: 정수 ➡ 실수, 실수 ➡ 정수
- 자동 형변환(promotion)
int num1 = 10;
double num2 = num1;
System.out.println("num2 = " + num2);```
- 명시적 형변환(casting)
double num3 = 10.9;
int num4 = (int)num3; //명시적 형 변환 시 소수점 자리 수는 절삭함
System.out.println("num4 = " + num4);
📌 조건문(if)
- If문의 문법:
if(참 또는 거짓을 판단할 수 있는 조건){
조건이 참일 때 실행할 코드들
}
- 예제
public class If_01 {
public static void main(String[] args) {
System.out.println("프로그램 시작");
if(10 > 5){
System.out.println("if문 실행");
}
System.out.println("프로그램 시작");
}
}
public class If_02 {
public static void main(String[] args) {
//정수를 저장할 수 있는 num을 선언하고
//해당 변수에 임의의 정수를 저장
//변수에 저장된 값이 짝수일 때만
//'참'이라는 글자를 출력하는 코드
int num = 3;
if(num % 2 == 0){
System.out.println("참");
}
else {
System.out.println("거짓");
}
📌 조건문(if) - 예제 풀이
문제 1.
- 정수를 담을 수 있는 변수 두 개를 선언하고, 각각의 변수에 임의의 정수를 초기화하여라. 그리고 두 수의 합이 50보다 클 경우에는 ‘두 수의 합이 50보다 큽니다.’를 출력하고, 두 수의 합이 50 이하일 경우에는 ‘두 수의 합이 50이하 입니다.’를 출력해보세요.
- 풀이 및 결과

public class If_q1 {
public static void main(String[] args) {
int num1, num2;
num1 = 50;
num2 = 2;
if((num1 + num2) > 50){
System.out.println("두 수의 합이 50보다 큽니다.");
}
else {
System.out.println("두 수의 합이 50 이하입니다.");
}
}
}
문제 2.
- 정수형 변수 a, b를 선언하고 각각을 임의의 정수로 초기화하자. 그 후 a의 값이 크다면 ‘a가 큽니다.’를, b의 값이 크면 ‘b가 큽니다’를, 두 변수의 값이 같다면 ‘같습니다.’를 출력해보자.
- 풀이 및 결과

public static void main(String[] args) {
int a, b;
a = 1;
b = 2;
if(a > b){
System.out.println("a가 큽니다.");
}
else if (a < b) {
System.out.println("b가 큽니다.");
}
else {
System.out.println("같습니다.");
}
}
}
문제 3.
- 정수형 변수 하나를 선언하고 임의의 정수로 초기화하자. 그리고 변수의 값이 3의 배수이면 ‘3의 배수입니다’를 출력해보자.
- 문제 및 풀이

public static void main(String[] args) {
int num = 6;
if(num % 3 == 0){
System.out.println("3의 배수입니다.");
}
}
}
문제 4.
- 정수형 변수 하나를 선언하고 0 ~ 100까지의(0,100 포함) 숫자 중 임의의 값으로 초기화하자. 그 후 변수의 값이 90보다 크고 100보다 작거나 같으면 ‘학점은 A입니다.’를 출력하고, 80보다 크고 90보다 작거나 같으면 ‘학점은 B입니다.’를 출력하고, 80점 이하라면 ‘학점은 C입니다.’를 출력해보자.
- 풀이 및 결과

public class If_q5 {
public static void main(String[] args) {
int num = 50;
if (num > 90 && num <= 100){
System.out.println("학점은 A입니다.");
} else if (num > 80 && num <= 90) {
System.out.println("학점은 B입니다.");
}
else {
System.out.println("학점은 C입니다.");
}
}
}
문제 5.
- 정수형 변수 하나를 선언하고 임의의 숫자로 초기화하자. 그 후, 입력한 숫자가 5의 배수가 아닐 경우에만 ‘5의 배수를 입력하세요.’라고 출력되게 프로그램을 만드시오.
- 풀이 및 결과

public static void main(String[] args) {
int num = 4;
if(num % 5 != 0){
System.out.println("5의 배수를 입력하세요.");
}
}
}
📌 Scanner(스캐너) - 입력받기 예제 풀이
public class 정수입력받기_2 {
public static void main(String[] args) {
//키보드로 두 정수를 입력받아
//두 정수의 합을 출력
Scanner sc = new Scanner(System.in);
System.out.println("첫번째 수 : ");
int num1 = sc.nextInt();
System.out.println("두번째 수 : ");
int num2 = sc.nextInt();
System.out.println("입력받은 두 수의 합은 " + (num1 + num2));
}
}
📌 If(Scanner 포함) - 예제 풀이
문제 1.
- 세 정수를 선언하고 scanner로 값을 입력받는다. 그리고 세 수를 큰 순서대로 출력하여보라.(난이도 높음)
-출력예시-
첫번째 수 : 10
두번째 수 : 30
세 번째 수 : 20
30 > 20 > 10
- 풀이 및 결과

public class If_scanner_q6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("첫번째 수 : ");
int num1 = sc.nextInt();
System.out.print("두번째 수 : ");
int num2 = sc.nextInt();
System.out.print("세번째 수 : ");
int num3 = sc.nextInt();
if (num1 > num2 && num2 > num3){
System.out.println(num1 + " > " + num2 + " > " + num3);
}
else if (num1 > num3 && num3 > num2) {
System.out.println(num1 + " > " + num3 + " > " + num2);
}
else if (num2 > num1 && num1 > num3) {
System.out.println(num2 + " > " + num1 + " > " + num3);
}
else if (num2 > num3 && num3 > num1) {
System.out.println(num2 + " > " + num3 + " > " + num1);
}
else if (num3 > num2 && num2 > num1) {
System.out.println(num3 + " > " + num2 + " > " + num1);
}
else if (num3 > num1 && num1 > num2) {
System.out.println(num3 + " > " + num1 + " > " + num2);
}
}
}
public static void main(String[] args) {
//세 수를 키보드로 입력받아 큰 수부터 출력
Scanner sc = new Scanner(System.in);
//키보드로 입력받은 수를 저장할 변수
int num1, num2, num3;
//입력받은 세 수의 크기를 비교하여 저장할 변수
int max, mid, min;
System.out.print("첫번째 수 : ");
num1 = sc.nextInt();
System.out.print("두번째 수 : ");
num2 = sc.nextInt();
System.out.print("세번째 수 : ");
num3 = sc.nextInt();
//num1이 가장 큰 수일 때
if(num1 > num2 && num1 > num3){
max = num1;
if(num2 > num3){
mid = num2;
min = num3;
}
else{
mid = num3;
min = num2;
}
}
//num2이 가장 큰 수일 때
else if(num2 > num1 && num2 > num3){
max = num2;
if(num1 > num3){
mid = num1;
min = num3;
}
else{
mid = num3;
min = num1;
}
}
//num3이 가장 큰 수일 때 num1, num2
else{
max = num3;
if (num1 > num2){
mid = num1;
min = num2;
}
else {
mid = num1;
min = num2;
}
}
System.out.println(max + " > " + mid + " > " + min);
}
}
문제 2.
- Scanner를 이용하여 정수를 3개 입력받고, 이 세 개의 수로 삼각형을 만들 수 있는지를 판별하라. 삼각형이 가능하려면 두 변의 합이 다른 한 변의 합보다 반드시 커야 한다.
- 풀이 및 결과

- public class If_심화_1 {
public static void main(String[] args) {
//1.
Scanner sc = new Scanner(System.in);
int num1, num2, num3;
System.out.println("세 개의 정수를 입력하시오.");
System.out.print("첫번째 수 : ");
num1 = sc.nextInt();
System.out.print("두번째 수 : ");
num2 = sc.nextInt();
System.out.print("세번째 수 : ");
num3 = sc.nextInt();
if(num1 + num2 > num3 && num1 + num3 > num2 && num2 + num3 > num1){
System.out.println("가능");
}
else {
System.out.println("불가능");
}
}
}
public class If_scanner_q6해설 {
public static void main(String[] args) {
//세 수를 키보드로 입력받아 큰 수부터 출력
Scanner sc = new Scanner(System.in);
//키보드로 입력받은 수를 저장할 변수
int num1, num2, num3;
//입력받은 세 수의 크기를 비교하여 저장할 변수
int max, mid, min;
System.out.print("첫번째 수 : ");
num1 = sc.nextInt();
System.out.print("두번째 수 : ");
num2 = sc.nextInt();
System.out.print("세번째 수 : ");
num3 = sc.nextInt();
//num1이 가장 큰 수일 때
if(num1 > num2 && num1 > num3){
max = num1;
if(num2 > num3){
mid = num2;
min = num3;
}
else{
mid = num3;
min = num2;
}
}
//num2이 가장 큰 수일 때
else if(num2 > num1 && num2 > num3){
max = num2;
if(num1 > num3){
mid = num1;
min = num3;
}
else{
mid = num3;
min = num1;
}
}
//num3이 가장 큰 수일 때 num1, num2
else{
max = num3;
if (num1 > num2){
mid = num1;
min = num2;
}
else {
mid = num1;
min = num2;
}
}
System.out.println(max + " > " + mid + " > " + min);
}
}
문제 3.
- 369 게임을 간단히 작성해보자. 1~99까지의 정수를 키보드로부터 입력받고 정수에 3, 6, 9 중 하나가 있는 경우는 "박수짝"을 출력하고 두 개 이상 있는 경우는 "박수짝짝"을 출력하는 프로그램을 작성하라. 예를들면, 키보드로 입력된 수가 13인 경우 "박수짝"을 36인 경우 "박수짝짝"을 출력하면 된다.
- 풀이 및 결과

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("1~99까지의 정수를 입력하시오.");
int cnt = 0; //박수의 개수를 저장
int num = sc.nextInt();
//입력받은 숫자를 일의자리, 십의자리 숫자로 분리
int tens = num / 10; //일의자리
int ones = num % 10; //십의자리
if(tens == 3 || tens == 6 || tens == 9){
cnt = cnt + 1;
}
if (ones == 3 || ones == 6 || ones == 9 ) {
cnt = cnt + 1;
}
//박수 두번
if(cnt == 1){
System.out.println("박수짝");
}
else if(cnt == 2){
System.out.println("박수짝짝");
}
}
}
🍀 회고
- 지난 주 선행학습 때 if는 너무 어려웠는데, 다시 복습도 하고 이해하지 못하고 넘어갔던 문제를 다시 풀어보면서 else까지 이해할 수 있었다.
- 마지막 문제는 어려워서 다 이해하지 못했지만, 다양한 예제를 내 방식대로 풀어보고 선생님의 깔끔한 풀이와 어떤 차이가 있는지 비교해보면서 코드를 더 잘 이해할 수 있게 됐다.