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
- 일케 하면 실행이 됨 근데 한글이 깨짐 (영어면 괜찮)
클래스
주석
// 한줄 /**/ 주석은 여러줄
변수, 타입, 연산자
- 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("입니다. 잘 부탁드립니다~");
}
}
변수이름
상수 변수
상수 : 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);
}
}
타입변환, 캐스팅
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 는 반환 할 타입이 없다는것
문제풀기
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.