코드 세팅
public class w14 {
public static void main(String[] args) {
int month = 8;
String monthString = "";
//switch문
switch (피연산자 month) {
//case~~~ 연산
}
}
}
case 1: 은 month가 1이냐고 물어보는 것 → X month = 8
switch, 하나하나 변경해 가면서 비교를 한다
switch (month) {
//case~~~ 연산
case 1:
}
case가 1일 때는 monthString을 1월로 지정
case 1:
monthString = "1";
break;
줄 맞춤도 필수
case 1:
monthString = "1";
break;
case 2:
monthString = "2";
break;
아무것도 없는 경우
if문으로 치면 else → switch문에서 default
default도 case와 같이 :(콜론)으로 막아줌
default:
monthString = "알 수 없음";
완성 코드
public class w14 {
public static void main(String[] args) {
int month = 8;
String monthString = "";
//switch문
switch (month) {
//case~~~ 연산
case 1:
monthString = "1월";
break;
case 2:
monthString = "2월";
break;
case 3:
monthString = "3월";
break;
case 4:
monthString = "4월";
break;
case 5:
monthString = "5월";
break;
case 6:
monthString = "6월";
break;
case 7:
monthString = "7월";
break;
case 8:
monthString = "8월";
break;
case 9:
monthString = "9월";
break;
case 10:
monthString = "10월";
break;
case 11:
monthString = "11월";
break;
case 12:
monthString = "12월";
break;
default:
monthString = "알 수 없음";
}
System.out.println(monthString);
}
}

// if vs switch
// switch 문 실습코드를 if 문으로 바꿔보겠습니다.
// switch
int month = 8;
String monthString = "";
switch (month) {
case 1: monthString = "1월";
break;
case 2: monthString = "2월";
break;
case 3: monthString = "3월";
break;
case 4: monthString = "4월";
break;
case 5: monthString = "5월";
break;
case 6: monthString = "6월";
break;
case 7: monthString = "7월";
break;
case 8: monthString = "8월";
break;
case 9: monthString = "9월";
break;
case 10: monthString = "10월";
break;
case 11: monthString = "11월";
break;
case 12: monthString = "12월";
break;
default: monthString = "알수 없음";
}
System.out.println(monthString); // 8월 출력// if 로 변환
if (month == 1) {
monthString = "1월";
} else if (month == 2) {
monthString = "2월";
} else if (month == 3) {
monthString = "3월";
} else if (month == 4) {
monthString = "4월";
} else if (month == 5) {
monthString = "5월";
} else if (month == 6) {
monthString = "6월";
} else if (month == 7) {
monthString = "7월";
} else if (month == 8) {
monthString = "8월";
} else if (month == 9) {
monthString = "9월";
} else if (month == 10) {
monthString = "10월";
} else if (month == 11) {
monthString = "11월";
} else if (month == 12) {
monthString = "12월";
} else {
monthString = "알수 없음";
}
System.out.println(monthString); // 8월 출력// for 문
for(int i=0; i < 4; i++) { // 변수 i 값은 0 ~ 3 까지 반복
System.out.println(i + "번째 출력"); // i 변수와 문자열 합치기
}
// 출력
0번째 출력
1번째 출력
2번째 출력
3번째 출력for문은 3가지의 분할된 표현들이 나와야 함 → 세미콜론 ; 으로 구분됨
for문 예제 코드 해석
for (int i = 0; i < 4; i++) {
System.out.println(i + " 번재 출력!");
}

잠깐 배우는 배열 (심화는 나중에)
향상된 for문 코드 해석
int[] numbers = {3, 6, 9, 12, 15};
for (int number: numbers) {
System.out.print(number + " ");
}
numbers 배열이 하나 하나씩 빙글빙글 돌면서 for문 안 int number에서 1개 씩 쓰임
- 첫 번째 돌 때 3, 두 번째 6, 세 번째 9, 네 번째 12, 다섯 번째 15

number에 하나씩 3, 6, 9, 12, 15가 for문 안에서 하나하나씩 할당 된다는 뜻
실무에서 일반적인 for문을 쓰는 곳이 많음
int[] numbers = {3, 6, 9, 12, 15};
for (int i=0; i < numbers.length; i++) {
System.out.print(numbers[i]);
}
while ( ) { }// while 문
int number = 0;
while(number < 3) {
number++;
System.out.println(number + "출력");
}
// 출력
1출력
2출력
3출력while (number < 3) {
}
package week02;
public class w16 {
public static void main(String[] args) {
int number = 0;
while (number < 3) {
number++;
System.out.println(number);
}
}
}

int = 4;
do { //이 로직을 먼저 수행하겠다
System.out.println(number + "출력!");
} while (number < 3);

int number = 0;
while (number < 3) {
number++; //2
if (number == 2) {
break;
}
System.out.println(number + " 출력입니다");
}

for (int i = 0; i < 10; i++) {
System.out.println("i: " + i);
if (i == 2) {
break; //i가 2일 때, 가장 바깥 반복문이 종료된다
}
for (int j= 0; j < 10; j++) {
System.out.println("j: " + j);
if(j == 2) {
break; //j가 2일 때, 안쪽 반복문이 종료
}
}
}

int number = 0;
while (number < 3) {
number++; //1 //2 //3
if (number == 2) {
continue;
}
System.out.println(number + " 출력입니다");
}

질문
해결
for (int i = 0; i < 4; i++) {
System.out.println(i + " 번재 출력!");
}int number = 0;
while (number < 3) {
number++;
if (number == 2) {
continue;
}
System.out.println(number + " 출력입니다");
}구구단 만들기
구구단은 두 개의 숫자가 곱해서 나오는 것, for문이 두 번 나와야 함(중복 for문)
package week02;
public class w17 {
public static void main(String[] args) {
//구구단
for (int i = 2; i <= 9; i++) //구구단의 첫 번째 수
for (int j = 2; j <= 9; j++) { //구구단의 두 번째 수
System.out.println(i + "곱하기" + j + "는" + (i*j) + "입니다");
}
}
}
2곱하기2는4입니다
2곱하기3는6입니다
2곱하기4는8입니다
2곱하기5는10입니다
2곱하기6는12입니다
2곱하기7는14입니다
2곱하기8는16입니다
2곱하기9는18입니다
3곱하기2는6입니다
3곱하기3는9입니다
3곱하기4는12입니다
3곱하기5는15입니다
3곱하기6는18입니다
3곱하기7는21입니다
3곱하기8는24입니다
3곱하기9는27입니다
4곱하기2는8입니다
4곱하기3는12입니다
4곱하기4는16입니다
4곱하기5는20입니다
4곱하기6는24입니다
4곱하기7는28입니다
4곱하기8는32입니다
4곱하기9는36입니다
5곱하기2는10입니다
5곱하기3는15입니다
5곱하기4는20입니다
5곱하기5는25입니다
5곱하기6는30입니다
5곱하기7는35입니다
5곱하기8는40입니다
5곱하기9는45입니다
6곱하기2는12입니다
6곱하기3는18입니다
6곱하기4는24입니다
6곱하기5는30입니다
6곱하기6는36입니다
6곱하기7는42입니다
6곱하기8는48입니다
6곱하기9는54입니다
7곱하기2는14입니다
7곱하기3는21입니다
7곱하기4는28입니다
7곱하기5는35입니다
7곱하기6는42입니다
7곱하기7는49입니다
7곱하기8는56입니다
7곱하기9는63입니다
8곱하기2는16입니다
8곱하기3는24입니다
8곱하기4는32입니다
8곱하기5는40입니다
8곱하기6는48입니다
8곱하기7는56입니다
8곱하기8는64입니다
8곱하기9는72입니다
9곱하기2는18입니다
9곱하기3는27입니다
9곱하기4는36입니다
9곱하기5는45입니다
9곱하기6는54입니다
9곱하기7는63입니다
9곱하기8는72입니다
9곱하기9는81입니다
입력 받는 단을 제외하고 출력
Scanner sc = new Scanner(System.in);
int passNum = sc.nextInt();
//public class 위(밖)에 있는 import java.util.Scanner; 확인하기
package week02;
import java.util.Scanner;
public class w17 {
public static void main(String[] args) {
//입력 받는 단을 제외하고 출력
Scanner sc = new Scanner(System.in);
int passNum = sc.nextInt(); //출력을 제외 할 구구단 수 값
//구구단
for (int i = 2; i <= 9; i++) {//구구단의 첫 번째 수
if (i == passNum) {
continue;
}
for (int j = 2; j <= 9; j++) { //구구단의 두 번째 수
System.out.println(i + "곱하기" + j + "는" + (i * j) + "입니다");
}
}
}
}


1. `타입` `[]` `변수`;
ex. `int[] intArray;` //일반적인 배열형 변수
2. `타입` `변수[]`;
ex. `int intArray[];`
//배열 생성
int[] intArray = new int[3]; //초기값0 {0, 0, 0}
boolean[] boolArray = new boolean[3]; //초기값false {false, false, false}
String[] stringArray = new String[3]; //초기값null(없음) {"", "", ""}
//배열 선언 먼저 -> 나중에 초기화
int[] intArray2 //선언만 먼저함
intArray2 = new int[3]; //{0, 0, 0} //변수를 생성할 때, 변수를 선언할 때와 동일
생성한 배열을 '순회' -> 배열의 값을 하나씩 뽑아서 조회한다
(1) 단건 조회
int[] intArray = new int[3]; //초기값0 {0, 0, 0}
System.out.println(intArray[1]);
(2) 다건 조회(important!)
intArray2를 for문으로 접근해서 순회 도는 방법
for (int i=0; i<intArray2.length; i++) {
System.out.println(intArray2[i]);
}

i<intArray2.length;
length : 길이를 구하는 메소드
0번째일 때, 1번째일 때, 2번째일 때 3번 돌아감
배열에 특정값 대입해서 선언하는 방식으로 초기화 지정
int[] intArr ={1, 2, 3, 4, 5};
String[] stringArray = {"a", "b", "c", "d"};
선언해 놓은 변수를 이용, 값을 하나하나씩 for문으로 돌리면서 대입
for(int i=0; i<intArr.length; i++)
intArr[i] = i;
intArr의 i값을 i로 바꾸면 i는 0, 1, 2, 3, 4로 돌게 됨
for(int i=0; i<intArr.length; i++) {
System.out.println(intArr[i]);
}1, 2, 3, 4, 5가 들어가 있지만 for문을 통해서 0, 1, 2, 3, 4를 대입함

for (int i: intArr) {
System.out.println(i);
}int[] intArr ={10, 20, 30, 40, 50};
for (int item: intArr) {
System.out.println(item);
}int[] intArr = {10, 20, 30, 40, 50};
Arrays.*fill*(intArr, 1);
//Arrays.fill(배열, 초기화 할 값);
for (int item : intArr) {
System.out.println(item);
} 
int[] arr1 = {a, b, c}
int[] arr2 = arr1
- 공간 자체를 가져오는 것이 아닌 “add1” 라는 주소값만 가져오게 됨
- 즉, arr2의 값을 바꾸더라도 ‘공간’에 접근해서 바꾸기 때문에 arr1도 영향이 있음 → 바람직하지 않은 상황!

package week02.array;
public class arr03 {
public static void main(String[] args) {
//얕은 복사
int[] a = {1, 2, 3, 4};
int[] b = a; //얕은복사
b[0] = 3; //b 배역의 0번째 순번값을 3으로 수정했습니다 (1 -> 3)
System.out.println(a[0]); //출력 3 <- a 배열의 0번째 순번값도 3으로 조회됩니다
}
}
배열에서 얕은 복사를 피하고 깊은 복사를 사용해야 함
(1) for문을 통해서 하나하나씩 다 꺼내서 복사를 해주는 방법
→ 하나하나씩 새로운 배열을 만들어 주는 방법
- 깊은 복사 코드
```java
// 깊은 복사
int[] a = { 1, 2, 3, 4 };
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++) {
b[i] = a[i]; // 깊은 복사
}
b[0] = 3; // b 배열의 0번째 순번값을 3으로 수정했습니다. (1 -> 3)
System.out.println(a[0]); // 출력 1 <- 깊은 복사를 했기때문에 a 배열은 그대로 입니다.
```
a를 참조해서 별도의 b를 만들었다
a가 가지고 있는 별도의 영역과 b가 가지고 있는 별도의 영역은 다른 것

(2) 깊은 복사 메소드
clone()
// 깊은 복사 메서드
// 1. clone() 메서드
int[] a = { 1, 2, 3, 4 };
int[] b = a.clone(); // 가장 간단한 방법입니다.
// 하지만, clone() 메서드는 2차원이상 배열에서는 얕은 복사로 동작합니다!!
최종적으로 사용해야하는 깊은 복사 메소드 arr04
// 깊은 복사 메서드
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// 2. Arrays.copyOf() 메서드
int[] a = { 1, 2, 3, 4 };
int[] b = Arrays.copyOf(a, a.length); // 배열과 함께 length값도 같이 넣어줍니다.
}
}
a와 b다른 배열 만들기
package week02.array;
import java.util.Arrays;
public class arr04 {
public static void main(String[] args) {
// 2. Arrays.copyOf() 메서드
int[] a = { 1, 2, 3, 4 };
int[] b = Arrays.copyOf(a, a.length); // 배열과 함께 length값도 같이 넣어줍니다.
a[3] = 0;
System.out.println(a[3]);
System.out.println(b[3]);
}
}

String str = "ABCD";
//(1) length
int strLength = str.length();
System.out.println(strLength);//(2) charAt(int index)
char strChar = str.charAt(1);
System.out.println(strChar);//(3) substring(int fromIdx, int toIdx)
String strSub = str.substring(0, 3);
System.out.println(strSub);equals는 어떠한 String이 입력으로 받은 이 String과 같니?
//(4) equals(String str)
String newStr = "ABCD";
boolean strEqual = newStr.equals(str);
System.out.println(strEqual);
output은 true 또는 false = boolean
우리가 가지고 있었던 str과 일치하니?
String str = "ABCD"; 우리가 가지고 있는 동일한 String 입력
결과 값 = true
String str = "ABCE"; 우리가 가지고 있는 다른 String 입력
//(4) equals(String str)
String newStr = "ABCE";
boolean strEqual = newStr.equals(str);
System.out.println(strEqual);
결과 값 = false
//(5) toCharArray() : String -> char[]
//String을 char로 이루어진 Array로 변환하는 메소드
char[] strCharArray = str.toCharArray();//(6) 반대로 char[] -> String -> char
char[] charArray = {'A', 'B', 'C'};
String charArrayString = new String(charArray);
System.out.println(charArrayString);진도 따라잡기 위해 2-13 부터 청강 위주로 습득하고 정리해보기
3주차 강의 진입하기
5.31(수) 국취제 상담으로 인해 과제할 시간 부족 -> 주말+휴일에 과제 진입하기
WIL작성하기