Post

java 공부 2024.04.18

설치

  • jdk 설치
  • path 등록
  • javac –version을 cmd에 입력시 버전이 출력되어야 정상동작.

단축키

  • syso 하고 컨트롤 + 스페이스 바 : 자동완성
  • 컨트롤 + n : 생성
  • 컨트롤 + f11 : 실행

시작

테스트

  • new > 자바 프로젝트 > 프로젝트 생성 후 그 안에 new class > 대문자로

  • 파일명과 class 명이 같아야함

C:\Users\user123\eclipse-workspace\learnJava\src\learnJava   
  • 워크 스페이스에 가서

  • 클래스안에 가서

  • 실행

javac JAVALEARN.java  
  • 일케 하면 실행이 됨 근데 한글이 깨짐 (영어면 괜찮)

클래스

Untitled-34

주석

// 한줄 /**/ 주석은 여러줄

변수, 타입, 연산자

Untitled

  • str은 문자열 가능하지만 char에는 문자열이 안들어감
1
char letter = 'A'; // '' 안에 넣어야함
1
2
javaCopy code
String text = "sahfaguka"; // ""안에 넣어야함

변수선언시 초기값

  • str일 때 null값이 초기값으로 들어감

  • int나 float은 0값이 초기값으로 들어감

변수선언

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 패키지 선언 부분: 이 코드가 learnJava라는 패키지에 속해 있음을 나타냅니다.
package learnJava;

// JAVALEARN 클래스 선언
public class JAVALEARN {
    // main 메소드 선언: Java 프로그램의 진입점입니다. 프로그램 실행 시 이 메소드가 먼저 호출됩니다.
    public static void main(String[] args) {
        // String 타입의 변수 name을 선언합니다.
        String name;
        // 변수 name에 "jiwoon"이라는 문자열을 할당합니다.
        name = "jiwoon";
        
        // 콘솔에 "안녕하세요~ 반갑습니다!제 이름은," 문자열을 출력합니다.
        System.out.println("안녕하세요~ 반갑습니다!제 이름은,");
        // 콘솔에 변수 name의 값, 즉 "jiwoon"을 출력합니다.
        System.out.println(name);
        // 콘솔에 "입니다. 잘 부탁드립니다~" 문자열을 출력합니다.
        System.out.println("입니다. 잘 부탁드립니다~");
    }
}

변수이름

Untitled-1

Untitled-2

상수 변수

상수 : const, final 값 변경이 불가능

산술 연산자

1
2
3
4
5
6
7
8
9
package learnJava;

public class JAVALEARN {
	public static void main(String[] args) {
		int res ;
		res = 3 + 8 * (3 - 1);
		System.out.println(res);
	}
}

정수 / 정수 = 정수

실수 / 정수 = 실수

정수 / 실수 = 실수

출력형식

문자열 연결

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
// 패키지 선언 부분: 이 코드가 learnJava라는 패키지에 속해 있음을 나타냅니다.
package learnJava;

// JAVALEARN 클래스 선언
public class JAVALEARN {
    // main 메소드 선언: Java 프로그램의 진입점입니다. 프로그램 실행 시 이 메소드가 먼저 호출됩니다.
    public static void main(String[] args) {
        // int 타입의 변수 month를 선언하고, 8을 초기값으로 지정합니다. (월을 나타냅니다)
        int month = 8;
        // int 타입의 변수 day를 선언하고, 23을 초기값으로 지정합니다. (일자를 나타냅니다)
        int day = 23;
        // int 타입의 변수 n을 선언하고, 1을 초기값으로 지정합니다. (식사 횟수를 나타냅니다)
        int n = 1;
        // double 타입의 변수 weight를 선언하고, 5.4를 초기값으로 지정합니다. (몸무게를 나타냅니다)
        double weight = 5.4;
        // String 타입의 변수 deco를 선언하고, "------------------"를 초기값으로 지정합니다. (구분선을 나타냅니다)
        String deco = "------------------";
        // 콘솔에 변수 deco의 값을 출력합니다. (구분선 출력)
        System.out.println(deco);
        // 콘솔에 문자열 "고양이의 "와 변수 month, day 값을 이용하여 "고양이의 8월 23일 다이어트 일지"를 출력하고 구분선 다시 표시.
        System.out.println("고양이의 " + month + "월 " + day + "일 다이어트 일지\n" + deco);
        // 콘솔에 "식사 횟수: "와 변수 n의 값을 이용하여 "식사 횟수: 1회"를 출력합니다.
        System.out.println("식사 횟수: " + n + "회");
        // 콘솔에 "몸무게: "와 변수 weight의 값을 이용하여 "몸무게: 5.4kg"을 출력합니다.
        System.out.println("몸무게: " + weight + "kg");
    }
}

포맷팅(형식 문자)

  • 덧셈 연산으로 문자열 만드는것은 불편해서 System.out.printf() 메소드 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 패키지 선언 부분: 이 코드가 learnJava라는 패키지에 속해 있음을 나타냅니다.
package learnJava;

// JAVALEARN 클래스 선언
public class JAVALEARN {
    // main 메소드 선언: Java 프로그램의 진입점입니다. 프로그램 실행 시 이 메소드가 먼저 호출됩니다.
    public static void main(String[] args) {
        // String 타입의 변수 item을 선언하고, "라면"을 초기값으로 지정합니다. (상품 이름을 나타냅니다)
        String item = "라면";
        // int 타입의 변수 price를 선언하고, 800을 초기값으로 지정합니다. (상품 가격을 나타냅니다)
        int price = 800;
        // double 타입의 변수 weight를 선언하고, 0.12를 초기값으로 지정합니다. (상품의 무게를 나타냅니다)
        double weight = 0.12;
        // boolean 타입의 변수 discounted를 선언하고, false를 초기값으로 지정합니다. (할인 여부를 나타냅니다)
        boolean discounted = false;
        // System.out.printf를 사용하여 변수들의 값을 형식에 맞추어 콘솔에 출력합니다.
        // 출력 형식: "상품-%s 가격-%d원 무게-%fkg 할인여부-%b"로 설정하였습니다.
        System.out.printf("상품-%s 가격-%d원 무게-%fkg 할인여부-%b", item, price, weight, discounted);
    }
}

Untitled-3

타입변환, 캐스팅

Untitled-4

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
// 패키지 선언 부분: 이 코드가 learnJava라는 패키지에 속해 있음을 나타냅니다.
package learnJava;

// JAVALEARN 클래스 선언
public class JAVALEARN {
    // main 메소드 선언: Java 프로그램의 진입점입니다. 프로그램 실행 시 이 메소드가 먼저 호출됩니다.
    public static void main(String[] args) {
        // String 타입의 변수 strSeven을 선언하고, "7"을 초기값으로 지정합니다. (문자열 형태의 숫자)
        String strSeven = "7";
        // String 타입의 변수 strPi를 선언하고, "3.14"를 초기값으로 지정합니다. (문자열 형태의 실수)
        String strPi = "3.14";
        
        // String 변수 strSeven을 int 타입으로 변환하고, 이를 int 타입의 변수 a에 저장합니다.
        int a = Integer.parseInt(strSeven);
        // String 변수 strPi를 double 타입으로 변환하고, 이를 double 타입의 변수 b에 저장합니다.
        double b = Double.parseDouble(strPi);
        
        // int 타입의 a와 double 타입의 b를 더하고ㅁ, 결과를 double 타입의 변수 c에 저장합니다.
        double c = a + b;
        
        // System.out.printf를 사용하여 a, b, c의 값을 형식에 맞추어 콘솔에 출력합니다.
        // 출력 형식: "%d + %.2f = %.2f"로 설정하였습니다.
        System.out.printf("%d + %.2f = %.2f", a, b, c);
    }
}
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
// 패키지 선언 부분: 이 코드가 learnJava라는 패키지에 속해 있음을 나타냅니다.
package learnJava;

// JAVALEARN 클래스 선언
public class JAVALEARN {
    // main 메소드 선언: Java 프로그램의 진입점입니다. 프로그램 실행 시 이 메소드가 먼저 호출됩니다.
    public static void main(String[] args) {
        // char 타입의 변수 charSeven을 선언하고, '7'을 초기값으로 지정합니다. 
        // '7'은 숫자 7을 나타내는 문자입니다.
        char charSeven = '7';  
        
        // String 타입의 변수 strPi를 선언하고, "3.14"를 초기값으로 지정합니다. 
        // 이 변수는 실수를 나타내는 문자열입니다.
        String strPi = "3.14";
        
        // char 타입의 charSeven을 정수로 변환합니다. '0'을 빼서 ASCII 코드 값을 활용한 숫자 변환을 수행합니다.
        // 예를 들어, '7'의 ASCII 코드 값에서 '0'의 ASCII 코드 값을 빼면 실제 숫자 7이 됩니다.
        int a = charSeven - '0';
        
        // String 변수 strPi를 double 타입으로 변환합니다. Double.parseDouble 메소드를 사용하여 실수로 파싱합니다.
        double b = Double.parseDouble(strPi);
        
        // 변수 a와 b를 더한 값을 double 타입의 변수 c에 저장합니다.
        double c = a + b;
        
        // System.out.printf를 사용하여 a, b, c의 값을 형식에 맞추어 콘솔에 출력합니다.
        // 출력 형식: "%d + %.2f = %.2f"로 설정하였습니다. 여기서 %d는 정수, %.2f는 소수점 둘째 자리까지의 실수를 의미합니다.
        System.out.printf("%d + %.2f = %.2f", a, b, c);
    }
}

메소드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// learnJava 패키지를 선언합니다.
package learnJava;

// JAVALEARN 클래스를 선언합니다.
public class JAVALEARN {
    // Java 프로그램의 시작점인 main 메소드를 선언합니다.
    public static void main(String[] args) {
        // 정사각형의 한 변의 길이를 나타내는 int 타입의 변수 n을 선언하고 4를 초기값으로 할당합니다.
        int n = 4;
        // square 메소드를 호출하여 변수 n을 인자로 넘겨주고, 결과값을 int 타입의 변수 s에 저장합니다.
        // 이때 s는 정사각형의 넓이를 나타냅니다.
        int s = square(n);
        // 계산된 정사각형의 넓이를 포맷에 맞추어 출력합니다. %d는 정수를 표현하는 형식 지정자입니다.
        System.out.printf("한 번의 길이가 %d인 정사각형의 넓이: %d", n, s );
    }

    // 정사각형의 넓이를 계산하는 square 메소드를 정의합니다. 
    // 이 메소드는 int 타입의 매개변수 length를 받아서 정사각형의 넓이를 계산하여 반환합니다.
    public static int square(int length) {
        // 매개변수로 받은 length (한 변의 길이)의 제곱을 반환합니다. 이 값은 정사각형의 넓이를 나타냅니다.
        return length * length;
    }
}

void 는 반환 할 타입이 없다는것

문제풀기

Untitled-5

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
// learnJava 패키지를 선언합니다.
package learnJava;

// JAVALEARN 클래스를 선언합니다.
public class JAVALEARN {
    // Java 프로그램의 시작점인 main 메소드를 선언합니다.
    public static void main(String[] args) {
        // 8번 문제 시작 -------------------
        
        // int 타입의 변수 num을 선언하고 374를 할당합니다.
        int num = 374;
        // num의 백의 자리 수를 계산하여 변수 hundreds에 저장합니다.
        int hundreds = num / 100;          
        // num의 십의 자리 수를 계산하여 변수 tens에 저장합니다.
        int tens = (num / 10) % 10;       
        // num의 일의 자리 수를 계산하여 변수 units에 저장합니다.
        int units = num % 10;
        // 백의 자리, 십의 자리, 일의 자리를 모두 더한 결과를 변수 res에 저장합니다.
        int res = hundreds + tens + units;
        // 계산된 각 자리 수의 총합을 출력합니다.
        System.out.printf("정수 %d의 각 자리 숫자의 총합:  %d", num, res );
        System.out.println();  // 줄바꿈을 위한 출력
        
        // 9번 문제 시작 -------------------
        
        // double 타입의 변수 time을 선언하고 5.00을 할당합니다.
        double time = 5.00;
        // 자유낙하 운동에서 물체의 위치를 계산하기 위한 변수 position을 선언합니다.
        double position;
        // 자유낙하 공식을 사용하여 5초 후의 물체의 위치를 계산하고 position에 저장합니다.
        position = 1000.0 + ((1.0/2.0) * -9.81 * time *time);
        // 계산된 위치를 출력합니다.
        System.out.printf("자유낙하 물체의 %.2f초 후 위치는 %.2f입니다.",time, position);
    }
}

변화량을 더해줘야함 그래서

position = 1000.0 - ((1.0/2.0) * 9.81 * time *time);

이 아니라

position = 1000.0 + ((1.0/2.0) * -9.81 * time *time); 이 되어야함

  • 책의 코드
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
// learnJava 패키지를 선언합니다.
package learnJava;

// JAVALEARN 클래스를 선언합니다.
public class JAVALEARN {
    // Java 프로그램의 시작점인 main 메소드를 선언합니다.
    public static void main(String[] args) {
        // 시간을 나타내는 변수 time을 선언하고, 5.0초를 초기값으로 지정합니다.
        double time = 5.0;
        // 중력가속도를 나타내는 변수 gravity를 선언하고, -9.81m/s^2를 초기값으로 지정합니다.
        double gravity = -9.81;
        // 초기 속도를 나타내는 변수 initialVelocity를 선언하고, 0.0m/s를 초기값으로 지정합니다.
        double initialVelocity = 0.0;
        // 초기 위치를 나타내는 변수 initialPosition을 선언하고, 1000.0m를 초기값으로 지정합니다.
        double initialPosition = 1000.0;
        
        // 자유낙하 공식에 따라 최종 위치를 계산합니다.
        // x(t) = 0.5 * a * t^2 + v0 * t + x0
        // a는 중력가속도, v0는 초기속도, x0는 초기위치, t는 시간입니다.
        double finalPosition = 0.5 * gravity * time * time; // 0.5 * a * t^2 계산
        finalPosition += initialVelocity * time;            // v0 * t 계산 결과를 더합니다.
        finalPosition += initialPosition;                   // x0 계산 결과를 더합니다.
        
        // 계산된 최종 위치를 콘솔에 출력합니다.
        System.out.printf("%.2f초 후 위치: %.2fm\n", time, finalPosition);
        
    }
}
This post is licensed under CC BY 4.0 by the author.