[Java]자바 기초 (변수, 연산자, 자료형, 자료형 변환, 스캐너, 입력, 출력)

클래스 만들기

실행 (shift + f10)

새 프로젝트

기본 틀

파일 및 코드 템플릿 설정

파일 및 코드 템플릿 포함에

밑에 코드 붙여넣기

/** 
* packageName : ${PACKAGE_NAME} 
* fileName : ${NAME} 
* author : ${USER} 
* date : ${DATE} 
* description : 
* 요약 :
*
* =========================================================== 
* DATE            AUTHOR             NOTE 
* ————————————————————————————— 
* ${DATE}         ${USER}          최초 생성 */

JavaApplication.java

import chap01.Sec0101;
import chap02.Sec0201;
import chap02.Sec0202;
import chap02.Sec0203;
import chap02.Sec0204;
import chap03.Sec0301;
import chap03.Verify03;

/**
 * packageName : PACKAGE_NAME
 * fileName : JavaApplication
 * author : GGG
 * date : 2023-09-18
 * description : 실행 클래스
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * —————————————————————————————
 * 2023-09-18         GGG          최초 생성
 */
public class JavaApplication {
    public static void main(String[] args) {
//        객체 생성
//      사용법: 클래스명 객체변수 = new 생성자함수();
        Sec0101 sec0101 = new Sec0101();
//        sec0101.exam01(); // Hello World
//        sec0101.exam02(); // 3
        
//        객체지향 코딩 : 객체 생성해서 함수/변수 호출하는 코딩
        Sec0201 sec0201 = new Sec0201();
//        sec0201.exam01(); // Hello World
//        sec0201.exam02(); // Hello World

//      Alt + Enter 눌러 import
        Sec0202 sec0202 = new Sec0202();
//        sec0202.exam01();
//        sec0202.exam03();
//        sec0202.exam04();
//        sec0202.exam05();
//        sec0202.exam06();
//        sec0202.exam07();

        Sec0203 sec0203 = new Sec0203();
//        sec0203.exam01();
//        sec0203.exam02();
//        sec0203.exam06();
//        sec0203.exam07();

        Sec0204 sec0204 = new Sec0204();
//        sec0204.exam05();

        Sec0301 sec0301 = new Sec0301();
//        sec0301.exam01();
//        sec0301.exam03();
//        sec0301.exam04();
//        sec0301.exam05();
//        sec0301.exam06();
//        sec0301.exam07();
//        sec0301.exam09();
//        sec0301.exam10();

        Verify03 verify03 = new Verify03();
        verify03.exam01();
        verify03.exam02();
        verify03.exam03();
    }
}

 

Sec0101.java

package chap01;

/**
 * packageName : chap01
 * fileName : Sec0101
 * author : GGG
 * date : 2023-09-18
 * description : 업무 로직 클래스
 * 요약 :
 *          환경 설정 : JavaApplication ( main 함수가 있는 클래스 : 실행클래스 )
 *                    클래스 (객체 정의) : 변수 /함수가 있는 파일(업무 로직이 들어 있는 클래스)
 *               툴 : 1) 파일 인코딩 (UTF-8)
 *                    2) 도움말 - 사용자 지정 vm 옵션
 *                       -Dfile.encoding=UTF-8
 *                       -Dconsole.encoding=UTF-8
 *                    3) 설정 - 플러그인 - 마켓플레이스
 *                       1) Atom ~
 *                       2) Korea ~
 *                       3) Rainbow ~
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * —————————————————————————————
 * 2023-09-18         GGG          최초 생성
 */
public class Sec0101 {
    /**
     * Hello World 출력 함수
     */
    public void exam01() {
//        출력 단축키 : sout
        System.out.println("Hello World");
    }

    public void exam02() {
//       예제 1) x, y 정수 변수를 만들어서 덧셈결과를 화면에 출력하세요
//        입력 : x=1, y=2
        int x = 1;
        int y = 2;
        int result = x + y;
        System.out.println(result);
    }
}

 

결과

Sec0201

package chap02;

/**
 * packageName : chap02
 * fileName : Sec0201
 * author : GGG
 * date : 2023-09-18
 * description :
 * 요약 :
 *      변수          : 값을 저장할 수 있는 메모리 공간
 *      변수 사용 범위 : {} 안에서만 사용가능
 *          만약에 {} 안에 {} 있다
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * —————————————————————————————
 * 2023-09-18         GGG          최초 생성
 */
public class Sec0201 {
    public void exam01() {
//        변수 선언
        int value = 20;
        
//        변수 연산
//        예제 2) 변수 value에 값을 10을 더하는 연수를 한 후 화면에 출력하세요
        int result = value + 10;
        System.out.println(result);
    }

    public void exam02(){
//        예제 3) x=3, y=5 가 있습니다. x와 y 값을 바꾸어서 출력하세요
//        결과 출력은 아래와 같이 출력하세요
//        결과 : x = 5 , y = 3
        int x=3;
        int y=5;

//        swap 코딩
        int temp = x;
        x = y;
        y = temp;

        System.out.println("x=" + x + ",y=" + y);
    }
    /**
     * 변수의 허용 범위 예제
     */
    public void exam04() {
        int v1 = 15;
        if(v1> 10) {
            int v2;
            v2 = v1 - 10;
        }
//        int v3 = v1 + v2 + 5; // v2 변수 사용불가라서 에러가 발생함
    }
}

결과

30

x=5,y=3

 

Sec0202

package chap02;

/**
 * packageName : chap02
 * fileName : Sec0202
 * author : GGG
 * date : 2023-09-18
 * description : 기본 자료형(Type)
 * 요약 :
 *      정수 : byte(1), short(2), int(4, ***), long(8, **)
 *      char : 2byte 자료형, 문자 1개를 의미, 홑따옴표('') 표시
 *      (저장시 유니코드(숫자)로 저장되고 출력시는 문자로 출력됨)
 *      String(***) : 쌍따옴표("") 로 감싼 문자열을 의미
 *      실수 : float(4), double(8,***)
 *      boolean : 참/거짓 자료형 , true/false
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * —————————————————————————————
 * 2023-09-18         GGG          최초 생성
 */
public class Sec0202 {
    public void exam01() {
//        1bit : 최소 단위 , 8bit = 1byte, 1024byte = 1KB
//        1024KB = 1MB, 1024MB = 1GB, 1024GB = 1TB, 1024TB = 1HB
//        2진수 표현 : 0b 붙이면 2진수(0, 1 로 표현하는 수)
        int var1 = 0b1011; // 2진수(0b 붙이면 2진수)
        int var2 = 0206;   // 8진수(0 붙이면 8진수)
        int var3 = 365;    // 10진수
        int var4 = 0xB3;   // 16진수(0x 붙이면 16진수)
//      결과 : sout (단축키) , 줄복사 : ctrl + d
        System.out.println("var1 :" + var1);
        System.out.println("var2 :" + var2);
        System.out.println("var3 :" + var3);
        System.out.println("var4 :" + var4);
    }

    public void exam03() {
        long var1 = 10; // 정수 8byte
        long var2 = 20L; // L 붙여면 long 자료형
//      결과 : sout , 줄복사 : ctrl + d
        System.out.println(var1);
        System.out.println(var2);
    }

    public void exam04() {
//        아스키 코드
        char c1 = 'A';    // 문자를 직접 저장
        char c2 = 65;     // 십진수 저장 => 'A'
//      결과 : sout , 줄복사 : ctrl + d
        System.out.println(c1);
        System.out.println(c2);
    }

    public void exam05() {
        String name = "홍길동";
        String job = "프로그래머";
//      결과 : sout , 줄복사 : ctrl + d
        System.out.println(name);
        System.out.println(job);
    }

    /**
     * 특수기호 : /n, /t, ", \(이스케이프문자)
     */
    public void exam06() {
        System.out.println("번호\t이름\t직업"); // 탭문자
        System.out.print("행 단위 출력\n");     // 줄바꿈 문자
        System.out.println("우리는 \"개발자\" 입니다."); // \" 사용
        System.out.println("봄\\여름\\가을\\겨울");     // \\ 사용
    }

    /**
     * 실수 : float(4), double(8, ***)
     */
    public void exam07() {
        float var2 = 3.14f; // float 사용시 끝에 f 붙임
        double var3 = 3.14f; // double
//      결고ㅓ : sout, 줄복사 : ctrl + d
        System.out.println(var2);
        System.out.println(var3);
//        e : 지수 표현식
        double var6 = 3e6; // 3000000.0
        double var7 = 2e-3; // 0.002
        System.out.println(var6);
        System.out.println(var7);

    }
}

결과

Sec0203

package chap02;

/**
 * packageName : chap02
 * fileName : Sec0203
 * author : GGG
 * date : 2023-09-18
 * description : 자료형 변환
 * 요약 :
 *      자동 타입 변환 : 자동으로 자료형이 변환되는것 : 작은(byte) 자료형 -> 큰 자료형
 *      강제 타입 변환 : 강제로 자료형 변환 : 사용법 : (자료형)변수명 , 큰자료형->작은자료형
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * —————————————————————————————
 * 2023-09-18         GGG          최초 생성
 */
public class Sec0203 {
    /**
     * 자동 형변환 예제
     */
    public void exam01() {
        byte byteValue = 10; // 1byte 정수형
//        자동 자료형 변환 : int(4byte)
        int intValue = byteValue;
//        결과 : sout, 줄복사 : ctrl + d
        System.out.println("intValue : " + intValue);

//        실수 자동 형변환 : double(8byte) <- float(4byte)
        float floatValue = 100.5F;
        double doubleValue = floatValue;
        //        결과 : sout, 줄복사 : ctrl + d
        System.out.println("doubleValue : " + doubleValue);
    }

    /**
     * 강제 형변환 예제
     * 참고) 아스키 코드 변환 : char 변수 <- int 값 : 아스키코드 -> 문자로 변환
     *                       int 변수 <- char   : 아스키코드 변환 <- 문자
     */
    public void exam02() {
//        int(4) -> char(2) 강제 형변환
        int intValue = 44032; // int(4byte), char(2byte)
        char charValue = (char)intValue; // 강제 형변환

//        TODO: 아스키 코드(숫자) 변환 : 아스키코드(숫자) -> 문자로 변환
        char alpha = 65; // A
//        TODO: 문자 -> 아스키코드로 변환
        int beta = 'A';  // 65

        //        결과 : sout, 줄복사 : ctrl + d
        System.out.println(charValue);

//        double(8) -> int(4) 강제 형변환
        double doubleValue = 3.14;
        int intValue2 = (int)doubleValue;
        System.out.println(intValue2);
    }

    /**
     * 문자열 + 숫자 = 문자열
     */
    public void exam06() {
//        결합 연산
        String str1 = 10 + 2 + "8";
        System.out.println(str1);    // 128

        String str2 = 10 + "2" + 8;
        System.out.println(str2);    // 1028

        String str3 = "10" + (2 + 8); // 1010
        System.out.println(str3);
    }

    /**
     * 문자열 -> int 자료형 변경 : Integer.parseInt("값")
     * int -> 문자열 변경 :
     */
    public void exam07() {
//        문자열 -> int 자료형 변경
        int value1 = Integer.parseInt("10");          // 문자열 -> 정수
        double value2 = Double.parseDouble("3.14");   // 문자열 -> 실수
        boolean value3 = Boolean.parseBoolean("true");// 문자열 -> 참/거짓

        System.out.println(value1);
        System.out.println(value2);
        System.out.println(value3);

//        int -> 문자열 변경 :
        String str1 = String.valueOf(10); // 속도 빠름
        String str2 = "" + 10;
        String str3 = String.valueOf(3.14);
        String str4 = String.valueOf(true);

        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);
        System.out.println(str4);
    }


}

결과

intValue : 10
doubleValue : 100.5

3
128
1028
1010
10
3.14
true
10
10
3.14
true

Sec0204

package chap02;

import java.util.Date;
import java.util.Scanner;

/**
 * packageName : chap02
 * fileName : Sec0204
 * author : GGG
 * date : 2023-09-18
 * description :
 * 요약 : sout
 * System.out.println() : 화면에 출력하고 줄바꿈 함수
 * System.out.print() : 화면에 출력하는 함수
 * System.out.printf("$d %s %f", 정수변수, 문자열변수, 실수변수)
 * scanner : 콘솔 입력을 받기 위한 클래스(객체 정의)
 * 한라인 입력 받기 함수  : .nextLine();
 * 공백까지 받기 함수  : .next;
 * 참고) nextInt(), nextDouble() 등
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * —————————————————————————————
 * 2023-09-18         GGG          최초 생성
 */
public class Sec0204 {
    public void exam05() {
//        입력 받기 : System.in (키보드 입력)
        Scanner scanner = new Scanner(System.in);
        String inputData; // 입력 문자열
        while (true) {
            inputData = scanner.nextLine(); // 1라인 입력받기
            System.out.println("입력된 문자열: " + inputData);
//            TODO: 코드를 완성하세요
//                ( 입력된 문자열이 q 가 들어오면 반복문 종료하게 코딩하세요 )
//            TODO: 자바의 문자열비교
//                문자열.equals("문자열2") : 같으면 true, 아니면 false
            if (inputData.equals("q") == true) {
                break;
            }
        }
    }
}

결과
d
입력된 문자열: d
f
입력된 문자열: f
q
입력된 문자열: q

종료 코드 0(으)로 완료된 프로세스

Sec0301

package chap03;

import java.util.Scanner;

/**
 * packageName : chap03
 * fileName : Sec0301
 * author : GGG
 * date : 2023-09-18
 * description : 연산자
 * 요약 :
 *          산술 : +, -, *, /, %(나머지 연산자)
 *          부호 : +, -
 *          문자열 붙이기 : +
 *          대입 : =, +=, -=, *=, /=, %=
 *          증감 : ++, --
 *          비교 : ==, !=, >, <, >=, <=,(1문자 비교, 숫자비교) instanaceof
 *          TODO: 문자열 비교 : 문자열.equals(문자열2)
 *          논리 : !(not), &, |,(비트연산자) &&,(논리곱) ||(논리합)
 *          삼항 : (조건식)? A : B
 *          우선순위 필요하면 () 쓸것 : () 최고 우선순위
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * —————————————————————————————
 * 2023-09-18         GGG          최초 생성
 */
public class Sec0301 {
    public void exam01() {
        int x = -100;
        int result1 = +x; // 부호 연산자 이용
        int result2 = -x;
        System.out.println(result1);
        System.out.println(result2);
    }

    public void exam03() {
        boolean play = true;
//        결과 : sout , 줄복사 : ctrl + d
        System.out.println(play);
        play = !play; // 반대값(!) : false
        System.out.println(play);
    }

    /**
     * 사칙연산 예제 : /(나눗셈) 조심
     */
    public void exam04() {
        int v1 = 5;
        int v2 = 2;

        int result = v1 + v2;
        System.out.println(result); // sout

//        나눗셈
        int result2 = v1 / v2;
        System.out.println(result2); // 정수/정수 => 실수 부분이 잘림

//       TODO: 나눗셈 개선 코딩 : 강제 형변환 후 계산 해야함
        double result3 = (double)v1 /(double) v2;
//        double result3 = (double)v1 / v2; // 같은 결과
        System.out.println(result3);
    }

    //    연습문제 : 1010 : 정수 1개를 입력받아 그대로 출력하기
//    입력 : 5
    public void exam05() {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        System.out.println("정수를 입력해주세요");
        System.out.println(x);
    }

    //    연습문제 : 1014 : 문자 2개 입력받아 순서 바꿔 출력하기(설명)
//    입력 : a b
//    출력 : b a
    public void exam06() {
        Scanner scanner = new Scanner(System.in);
        String x = scanner.next();
        String y = scanner.next();
        System.out.println(y +" " + x);
    }

    /**
     * char : 내부적으로 정수로 저장됨(유니코드 : 아스키코드 확장판(한글, 중국어 등을 표시))
     */
    public void exam07() {
        char c1 = 'A' + 1; // char(정수) : 'B' ('A' 아스키코드(65) 65 + 1 = 66)
        char c2 = 'A';
        char c3 = 97;
//        출력 : sout
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
    }
//    연습문제 3) char 이용하는 문제
//    값이 'A' 로 주여져 있습니다. 'A' 대문자이면 대문자이군요 라고 출력하고
//                                 소문자이면 소문자이군요 라고 출력하고
//                                 숫자이면 숫자이군요 라고 출력하세요
    public void exam09() {

        Scanner scanner = new Scanner(System.in);
        int charCode = 'A'; // 값이 주어져 있음 (65)
//        TODO: 아래 코딩을 완성하세요
        if (charCode>=65 && charCode<=90){
            System.out.println("대문자이군요 " + charCode);
        } else if (charCode >= 97 && charCode <= 122) {
            System.out.println("소문자이군요 " + charCode);
        }else if ((charCode >=48) && (charCode<=57)) {
            System.out.println("숫자이군요" + charCode);
        } else {
            System.out.println("다른 문자군요");
        }
    }

    /**
     * 연습문제 : 정수 1개가 주어진다. 2와 3의 배수이면 2 또는 3의 배수이군요
     *                             아니면         2 또는 3의 배수가 아니군요
     */
    public void exam10() {
        int value = 8;
//        TODO: 아래 코딩을 완성하세요
        if ((value % 2 == 0) || (value % 3 == 0)){
            System.out.println("2 또는 3의 배수이군요");
        }else {
            System.out.println("2 또는 3의 배수가 아니군요");
        }
    }
}

결과


-100
100
true
false
7
2
2.5

Verify03

package chap03;

import java.util.Scanner;

/**
 * packageName : chap03
 * fileName : Verify03
 * author : GGG
 * date : 2023-09-18
 * description : 연습문제 자바 파일
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * —————————————————————————————
 * 2023-09-18         GGG          최초 생성
 */
public class Verify03 {
//    속성(멤버 변수)
//    생성자 함수
//    함수(멤버 메소드)

    /**
     * 문제 : 두 실수를 입력받아서 나눗셈을 결과를 출력하세요.
     * 단, 두번째 수가 0일 경우 "무한대" 로 출력하세요
     * 입력 : 9
     *       3
     * 출력 : 3.0
     */
    public void exam01() {
        Scanner scanner = new Scanner(System.in);

        System.out.println("첫번째 수 :");
//        scanner.nextLine() : 문자열 입력 -> 실수로 변환
        double num1 = Double.parseDouble(scanner.nextLine()); // 1st 줄

        System.out.println("두번째 수 :");
//        scanner.nextLine() : 문자열 입력 -> 실수로 변환
        double num2 = Double.parseDouble(scanner.nextLine()); // 2nd 줄

        if(num2 != 0.0) {
            System.out.println("결과 : " + (num1/num2));
        } else {
            System.out.println("결과 : 무한대");
        }
    }

    /**
     * 문제 : 원의 넓이를 구하시요. ( 반지름 * 반지름 * 3.14 )
     */
    public void exam02() {
        int var1 = 10; // 반지름

        double var2 = (double) var1 * var1 * 3.14;
        System.out.println("원의 넓이 : " + var2);
    }

    /**
     * 문제 : 1) 아이디와 패스워드를 각각 입력받아 아이디가 "java"가 아니면
     *   "로그인 실패:아이디가 존재하지 않음"을 출력하세요.
     *   2) 아이디가 "java" 이면, 패스워드를 체크해서 패스워드가 12345이면 "로그인 성공" 출력하고,
     *   패스워드가 12345가 아니면 "로그인 실패:패스워드가 틀림"을 출력하세요.
     *   힌트 : 중첩 if문 쓰기
     */
    public void exam03() {
        Scanner scanner = new Scanner(System.in);

//        아이디 입력
        System.out.println("아이디 : ");
        String name = scanner.nextLine();

//      패스워드 입력
        System.out.println("패스워드 : ");
        String password = scanner.nextLine(); // 숫자로 들어온다고 가정
        int iPassword = Integer.parseInt(password);  // 숫자 패스워드

        if(name.equals("java")) {
            if(iPassword == 12345) {
                System.out.println("로그인 성공");
            } else {
                System.out.println("로그인 실패:패스워드가 틀림");
            }
        } else {
            System.out.println("로그인 실패:아이디가 존재하지 않음");
        }
    }
}

결과

첫번째 수 :
9
두번째 수 :
3
결과 : 3.0
원의 넓이 : 314.0
아이디 : 
java
패스워드 : 
12345
로그인 성공