Java 입문 과정에서 강의 들으며 빠른 학습 진도를 위해 추후에 집중해서 복습할 부분 메모하기
package chapter1.operator;
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 3;
이렇게 놓고 봤을 때의
산술 연산자
// 기본적인 사칙연산
int sum = a + b;
System.out.println("sum = " + sum);
int sub = a - b;
System.out.println("sub = " + sub);
int mul = a * b;
System.out.println("mul = " + mul);
// 나눗셈 소수점으로 나올 수 있도록
double div = a / 3.0;
System.out.println("div = " + div);
나눗셈에서 주의할 점
➡️ 정수끼리 나누게 되면 소수점이 버려진다
➡️ 소수점을 유지하려면 소수점과 연산을 시켜야 한다
모듈러 연산자
// 모듈러 연산자(나머지 연산) - %
int mod = 10 % 3;
System.out.println("mod = " + mod);
int mod2 = 15 % 4;
System.out.println("mod2 = " + mod2);
int mod3 = 20 % 7;
System.out.println("mod3 = " + mod3);
// 시간 연산
int mod4 = (10 + 5) % 12;
System.out.println("mod4 = " + mod4);
// 짝수 홀수 연산
int mod5 = 6 % 2;
System.out.println("mod5 = " + mod5);
int mod6 = 7 % 2;
System.out.println("mod6 = " + mod6);
대입 연산자
// 대입 연산자
int num = 5;
System.out.println("num = " + num);
// 복합 대입 연산자
num += 3;
// num = num + 3;
// num + 3 먼저 보고, 그 다음에 num = 이렇게 볼 것
System.out.println("num = " + num);
// 5 + 3 = 8;
num -= 2; // num = num - 2;
System.out.println("num = " + num);
// 8 - 2 = 6;
num *= 2; // num = num * 2;
System.out.println("num = " + num);
// 6 * 2 = 12;
num /= 3; // num = num / 3;
System.out.println("num = " + num);
// 12 / 3 = 4;
num %= 3; // num = num % 3;
System.out.println("num = " + num);
// 4 % 3 = 1;
증감 연산자
// 증감 연산자
num = 1;
num++; // + 1;
num++; // + 1;
num--; // - 1;
num--; // - 1;
System.out.println("num = " + num);
// 1 + 1 + 1 - 1 - 1 = 1;
// 전위 연산(++i) - 연산 후 값이 활용된다
int intBox = 5;
System.out.println("(++intBox) = " + (++intBox));
// 후위 연산
int intBox2 = 5;
System.out.println("(intBox2++) = " + (intBox2++));
System.out.println("intBox2 = " + intBox2);
비교 연산자
// 비교 연산자
// 같음 연산자(=) 같으면 true, 다르면 false
System.out.println("10 == 10:" + (10 == 10));
// 다름 연산자(!=) 다르면 true, 같으면 false
System.out.println("10 != 5:" + (10 != 5));
// 크기 비교 연산자
System.out.println("10 < 5:" + (10 < 5)); // false
System.out.println("10 >= 10:" + (10 >= 10)); // true
System.out.println("10 <= 5:" + (10 <= 5)); // false

논리 연산자
// 논리 연산자
// AND 연산(&&) - 두 조건이 모두 참일 때 true 반환
System.out.println("true && true: " + (true && true));
System.out.println("true && false: " + (true && false));
int age = 20;
boolean isStudent = true;
System.out.println("Student?: " + (age > 18 && isStudent));
// OR 연산자(||) - 두 조건 중 하나라도 참이라면 true 반환
System.out.println("false || true: " + (false || true));
// NOT 연산자(!) - true -> false, false -> true
System.out.println("!true: " + (!true));

연산자 우선순위
// 연산자 우선순위
boolean flag = 10 + 5 > 12 && true;
System.out.println("flag: " + flag);
// 실행 순서: (10 + 5) > 12 && true : 산술
// → 15 > 12 && true : 비교
// → true && true : 논리
// → flag = true 대입
// () 활용하기 -> boolean flag = ((10 + 5) > 12) && true;
// 논리 연산자 우선순위
boolean result = true || (false && false);
System.out.println("result: " + result);
boolean result2 = true || false && !false;
System.out.println("result2: " + result2);
boolean result3 = 10 / 2 + 3 * 2 > 10 || false;
System.out.println("result3: " + result3);
// 실행 순서: ((10 / 2) + (3 * 2)) > 10 || false
// → (5 + 6) > 10 || false
// → 11 > 10 || false
// → true || false
// → true
boolean result4 = 5 + 3 > 2 * 4 && 10 % 3 == 1;
System.out.println("result4: " + result4);
// 실행 순서: (5 + 3) > (2 * 4) && (10 % 3) == 1
// → 8 > 8 && 1 == 1
// → false && true
// → false
문자열 비교
// 문자열 비교_equals() 를 활용한다
String text = "hello";
String text2 = "Hello";
// 나쁜 예: (text == text2)
boolean isEqual = text.equals(text2);
System.out.println("isEqual: " + isEqual);
➡️ 실무에서 문자열을 비교할 때 == 를 사용하는 경우는 거의 없다
➡️ 문자열 비교는 항상 .equals() 를 활용 (동등성/동일성 문제)
package chapter1.operator;
import java.util.Scanner;
public class MainAssignment {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = 15;
int b = 4;
// 1. 더하기
int sum = a + b;
System.out.println("sum: " + sum);
// 2. 빼기
int sub = a - b;
System.out.println("sub: " + sub);
// 3. 곱셈
int mul = a * b;
System.out.println("mul: " + mul);
// 4. 나눗셈
int div = a / b;
System.out.println("div: " + div);
// 5. 나머지 결과
int mod = a % b;
System.out.println("mod: " + mod);
// 예상 출력
// 1. 덧셈 결과: 19
// 2. 뺄셈 결과: 11
// 3. 곱셈 결과: 60
// 4. 나눗셈 결과: 3
// 5. 나머지 결과: 3
int x = 5;
int y = 10;
// 두 개의 정수 x와 y가 주어졌을 때
// 각각의 결과를 변수에 저장하고 출력하는 프로그램을 작성
// 1. x가 y보다 큰지(>)
boolean big = x > y;
System.out.println("big?: " + big);
// 2. x가 y보다 작은지(<)
boolean small = x < y;
System.out.println("small?: " + small);
// 3. x와 y가 같은지(==)
boolean same = x == y;
System.out.println("same?: " + same);
// 4. x와 y가 다르면(!=)
boolean diff = x != y;
System.out.println("diff?: " + diff);
// 예상 출력
// 1. x가 y보다 큰가? false
// 2. x가 y보다 작은가? true
// 3. x와 y가 같은가? false
// 4. x와 y가 다른가? true
// TODO: 사용자로부터 첫 번째 문자열 입력받기
System.out.println("첫 번째 문자열을 입력하세요: ");
String str1 = scanner.next();
// TODO: 사용자로부터 두 번째 문자열 입력받기
System.out.println("두 번째 문자열을 입력하세요: ");
String str2 = scanner.next();
// TODO: 문자열 비교 결과를 변수 result 에 저장
boolean result = str1.equals(str2);
// TODO: 결과 출력
System.out.println("두 문자열이 같은가요? " + result);
// 예상 출력:
// 첫 번째 문자열을 입력하세요: Java
// 두 번째 문자열을 입력하세요: Java
// 두 문자열이 같은가요? true
}
}

package chapter1.condition;
public class Main {
public static void main(String[] args) {
if (조건수식) {
System.out.println("실행됩니다.");
}
System.out.println("...");
}
}
이렇게 놓고 봤을 때
// true -> 명령문 실행
if (1 < 2) {
System.out.println("실행됩니다.");
}
System.out.println("...");

// false -> 명령문 실행 X
if (2 < 1) {
System.out.println("실행됩니다.");
}
System.out.println("...");

// true -> 명령문 실행
String light = "초록불";
if (light.equals("초록불")) {
System.out.println("건너세요!");
} else {
System.out.println("멈추세요!");
}
System.out.println("...");

String light = "빨간불";
if (light.equals("초록불")) {
System.out.println("건너세요!");
} else {
System.out.println("멈추세요!");
}
System.out.println("...");

String light = "노란불";
if (light.equals("초록불")) {
System.out.println("건너세요!");
} else if (light.equals("노란불")) {
System.out.println("주의하세요!");
} else {
System.out.println("멈추세요!");
}
System.out.println("...");

// switch 문
int number = 7;
switch (number) {
case 1:
System.out.println("1입니다");
break;
case 2:
System.out.println("2입니다");
break;
default:
System.out.println("1도 아니고 2도 아닙니다");
package chapter1.condition;
import java.util.Scanner;
public class TrafficLight {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("신호등 색상을 입력하세요 (초록불, 노란불, 빨간불): ");
String light = scanner.nextLine();
if (light.equals("초록불")) {
System.out.println("건너세요!");
} else if (light.equals("노란불")) {
System.out.println("주의하세요!");
} else if (light.equals("빨간불")) {
System.out.println("멈추세요!");
} else {
System.out.println("잘못된 입력입니다.");
}
// 예상 출력:
// 신호등 색상을 입력하세요 (초록불, 노란불, 빨간불): 초록불
// 건너세요!
// 신호등 색상을 입력하세요 (초록불, 노란불, 빨간불): 노란불
// 주의하세요!
// 신호등 색상을 입력하세요 (초록불, 노란불, 빨간불): 빨간불
// 멈추세요!
// 신호등 색상을 입력하세요 (초록불, 노란불, 빨간불): 파란불
// 잘못된 입력입니다.
}
}




package chapter1.loop;
public class Main {
public static void main(String[] args) {
// for (시작조건; 종결조건; 조건변화수식) {}
for (int i = 1; i <= 5; i++) {
// i가 1일 때부터 반복을 시작; 조건이 TRUE 경우 반복/ FALSE 경우 반복X; 반복할 때마다 조건 변화시키는 수식)
System.out.println("안녕하세요!");
}
int customers = 5;
for ( int k = 1; k <= customers; k++ ) {
if (k == 4) {
break;
}
if (k == 2) {
continue;
}
System.out.println(k + "번째 손님 안녕하세요!");
}

➡️ break는 loop를 끝내는 기능
➡️ continue는 skip 기능
// 반복문 while
int j = 1;
while (j <= 3) {
System.out.println("26번: 안녕하세요!");
j++;
}
// 반복문 do-while
int p = 1;
do {
System.out.println("33번 안녕하세요!");
p++;
} while(p <= 3);

구구단 입력받고 출력하기
package chapter1.loop;
import java.util.Scanner;
public class Gugudan {
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
System.out.println("출력할 구구단 단수를 입력하세요 (2~9): ");
int dan = scanner.nextInt();
if (dan >= 2 && dan <= 9) {
System.out.println("==== " + dan + "단 ====");
int i = 1;
while (i <= 9) {
System.out.println(dan + " x " + i + " = " + (dan * i++));
}
} else {
System.out.println("2 ~ 9 사이의 숫자를 입력해주세요!");
}
}
}
// 출력예시:
// 출력할 구구단 단수를 입력하세요 (2~9): 3
// ==== 3단 ====
// 3 x 1 = 3
// 3 x 2 = 6
// 3 x 3 = 9
// 3 x 4 = 12
// 3 x 5 = 15
// 3 x 6 = 18
// 3 x 7 = 21
// 3 x 8 = 24
// 3 x 9 = 27


구구단 연속으로 모두 출력하기
package chapter1.loop;
public class Gugudan2 {
public static void main(String[] args) {
for (int dan = 2; dan <= 9; dan++) {
System.out.println("==== " + dan + " ====");
for (int i = 1; i <= 9; i++) {
System.out.println(dan + " x " + i + " = " + (dan * i));
}
System.out.println(); // 간격 띄우기
}
}
}


package chapter1.array;
public class Main {
public static void main(String[] args) {
// 모험가 명단을 관리하는 법
String name1 = "gygim";
String name2 = "Steve";
// ...
String[] adventureList = {"gygim", "Steve", "..."};
// 1. 배열 선언
int[] arr;
// 2. 배열 길이 할당
arr = new int[5];
// arr = [] [] [] [] []
// 3. 배열 선언과 길이 동시에 할당
int[] arr2 = new int[5];
// arr2 = [] [] [] [] [] <- 빈공간
// 4. 배열 선언과 동시에 배열의 요소 할당
int[] arr3 = {10, 20, 30, 40, 50};
// [10] [20] [30] [40] [50]
// 배열의 길이
int arr3Length = arr3.length;
System.out.println("arr3Langth = " + arr3Length);
// 문자열 배열 선언
String[] starArr = new String[5];
// [""] [""] [""] [""] [""]
// 논리형 배열 선언
boolean[] boolArr = new boolean[3];
// [true] [false] [true]
// 배열의 요소에 접근: 인덱스 활용 방법
int[] arr4 = {10, 20, 30, 40, 50};
// [0] [1] [2] [3] [4]
System.out.println("배열의 1 번째 요소 접근: " + arr4[0]);
System.out.println("배열의 2 번째 요소 접근: " + arr4[1]);
System.out.println("배열의 3 번째 요소 접근: " + arr4[2]);
System.out.println("배열의 4 번째 요소 접근: " + arr4[3]);
System.out.println("배열의 5 번째 요소 접근: " + arr4[4]);
arr4[0] = 100;
arr4[1] = 200;
arr4[2] = 300;
arr4[3] = 400;
arr4[4] = 500;
System.out.println("배열의 1 번째 요소 접근: " + arr4[0]);
System.out.println("배열의 2 번째 요소 접근: " + arr4[1]);
System.out.println("배열의 3 번째 요소 접근: " + arr4[2]);
System.out.println("배열의 4 번째 요소 접근: " + arr4[3]);
System.out.println("배열의 5 번째 요소 접근: " + arr4[4]);
// 0 1 2 3 4
// [100] [200] [300] [400] [500]
// 인덱스 사용시 순서 주의. 0부터 시작. 범위 벗어나면 오류남
// 배열 탐색
int arr4Length = arr4.length;
System.out.println("arr4Langth = " + arr4Length);
for (int i = 0; i < arr4.length; i++) {
System.out.println("인덱스: " + i + ", 값: " + arr4[i]);
}
// 향상된 for 문
// arr4 [100] [200] [300] [400] [500]
for (int a : arr4) {
System.out.println("값: " + a);
}
// boolean[][] board = new boolean[2][3];
// [] [] []
// [] [] []
// boolean[][] board = new boolean[1][4];
// [] [] [] []
boolean[][] board = {
{true, false},
{false, true}
};
System.out.println(board[0][0]);
System.out.println(board[0][1]);

아래의 정수 배열이 주어졌을 때 짝수만 출력하세요
배열 예시: {3, 4, 7, 10, 15, 20}
아래의 정수 배열의 누적합을 구하세요
배열 예시: {2, 5, 8}
2차원 배열에서 검은돌(true)의 좌표(x, y) 찾기
package chapter1.array;
public class EvenNumberFinder {
public static void main(String[] args) {
int[] num = {3, 4, 7, 10 ,15, 20};
System.out.println("짝수: ");
for (int i = 0; i < num.length; i++) {
if (num[i] % 2 == 0) { // i 를 2로 나눈 나머지가 0이면 짝수라는 뜻
System.out.println(num[i] + "");
}
}
System.out.println();
int[] num2 = {2, 5, 8};
int sum = 0;
for (int f = 0; f < num2.length; f++) {
sum += num2[f];
}
System.out.println("누적합: " + sum);
System.out.println();
boolean[][] board = {
{true, false},
{false, true}
};
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
if (board[i][j]) {
System.out.println("검은돌(●) 위치: " + "(" + i + "," + j + ")");
}
}
}
}
}
➡️ System.out.println("검은돌(●) 위치: " + "(" + i + "," + j + ")");
➡️ System.out.println("검은돌(●) 위치: (" + i + "," + j + ")"); 이렇게 수정 가능

package chapter1.method;
public class Calculator {
// 매서드 선언 - 두 수를 더합니다.
int sum(int value1, int value2) {
int result = value1 + value2;
return result;
}
}
package chapter1.method;
public class Main {
public static void main(String[] args) {
// 1. 객페를 인스턴스화(소환/객체화)
Calculator calculator = new Calculator();
// 1. 매서드(함수)를 호출
int result = calculator.sum(1, 2);
System.out.println("result = " + result);
}
}