
비교연산자는 두 연산자의 타입이 다를경우 더 큰타입으로 타입을 통일시킴
비교연산은 주소값을 비교하기에 참조형의 경우 .equals()메서드 사용
(비교연산부분 참조)
증감연산자는 항상 순서에 주위하여 계산해야함.

삼항 연산자
int x = 1;
int y = 9;
boolean b = (x == y) ? true : false;
System.out.println(b); // false
<< = 2의배수로 곱셈, >> = 2의배수로 나눗셈// 조건문
boolean flag = true;
if (flag) {
System.out.println("flag 값은 true 입니다."); // flag 값은 true 입니다. 출력
}
// 조건문 with else
boolean flag = false;
if (flag) {
System.out.println("flag 값은 true 입니다."); // 미출력
} else {
System.out.println("flag 값은 false 입니다."); // flag 값은 false 입니다. 출력
}
// 조건문 with else if
int number = 2;
if (number == 1) {
System.out.println("number 값은 1 입니다."); // 미출력
} else if (number == 2) {
System.out.println("number 값은 2 입니다."); // number 값은 2 입니다. 출력
} else {
System.out.println("number 값은 모르는 값입니다."); // 미출력
}
switch(피연산자) { case(조건): (연산) } 이러한 형태로 쓰임switch 피연산자가 case 조건을 만족하면 case: 뒤에 명시되어 있는 연산을 수행.// switch/case 문
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월 출력
for(int i=0; i < 4; i++) { // 변수 i 값은 0 ~ 3 까지 반복
System.out.println(i + "번째 출력"); // i 변수와 문자열 합치기
}
// 향상된 for 문
int[] numbers = {3,6,9,12,15};
for(int number: numbers) {
System.out.print(number + " ");
}
// 출력
3 6 9 12 15
// while 문
int number = 0;
while(number < 3) {
number++;
System.out.println(number + "출력");
}
// 출력
1출력
2출력
3출력
// do-while 문
int number = 4;
do {
System.out.println(number + "출력");
} while(number < 3); // 연산을 한번 수행 후 조건문 체크
// 출력
4출력
// break 명령
int number = 0;
while(number < 3) {
number++;
if (number == 2) {
break; // 2일때 반복 중단
}
System.out.println(number + "출력");
}
// 출력
1출력
// continue 명령
int number = 0;
while(number < 3) {
number++;
if (number == 2) {
continue; // 2일때 반복 패스
}
System.out.println(number + "출력");
}
// 출력
1출력
3출력
// 배열 생성
//배열 생성후 초기화하면 배열의 주소가 할당된다.
int[] intArray = new int[3]; // 초기값 {0,0,0}
boolean[] boolArray = new boolean[3]; // 초기값 {false, false, false}
String[] stringArray = new String[3]; // 초기값 {"","",""}
//배열 선언만 해놓고 나중에 초기화를 시킬수도 있다.
int[] intArray2;
intArray2 = new int[3]; // 초기값 {0,0,0}
//배열에 특정값 대입하며 선언
int[] intArray = {1, 2, 3, 4, 5};
String[] stringArray = {"a", "b", "c", "d"};
배열의 주소를 모두 같은값으로 초기화
Arrays.fill(intArray, 1);//배열의 모든 값을 1로 초기화
깊은복사 : 실제 값(복사할 값)을 새로운 메모리영역에 복사 /
원본값이 변경되지않음.

얕은복사 : 주소값을 복사하여 값을 공유사용. / 원본값이 변경됌.

참조 : https://bcp0109.tistory.com/360

// 중괄호를 사용해 초기화
int[][] array = {
{1, 2, 3},
{4, 5, 6}
};
// 가변 배열
// 선언 및 초기화
int[][] array = new int[3][];
// 배열 원소마다 각기다른 크기로 지정 가능합니다.
array[0] = new int[2];
array[1] = new int[4];
array[2] = new int[1];
// 중괄호 초기화할때도 원소배열들의 크기를 각기 다르게 생성 가능합니다.
int[][] array2 = {
{10, 20},
{10, 20, 30, 40},
{10}
};
답안 :
package week02;
import java.util.*;
public class W01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String collect = sc.nextLine();
String recipe = "";
String foodname = "";
int cnt = 0;
ArrayList<String> arr = new ArrayList<>();
Set<String> set = new LinkedHashSet<>();
Map<Integer, String> map = new HashMap<>();
foodname = sc.nextLine();
switch (collect) {
case "List":
while (true) {
recipe = sc.nextLine();
if (recipe.equals("끝")) {
break;
} else {
arr.add(recipe);
}
}
System.out.println("[ " + collect + " 로 저장된 " + foodname + " ]");
for (String reciperead : arr) {
System.out.println(++cnt + ". " + reciperead);
}
break;
case "Set":
while (true) {
recipe = sc.nextLine();
if (recipe.equals("끝")) {
break;
} else {
set.add(recipe);
}
}
System.out.println("[ " + collect + " 로 저장된 " + foodname + " ]");
Iterator<String> it = set.iterator();
for (int i = 0; i < set.size(); i++) {
System.out.println(i + 1 + ". " + it.next());
}
break;
case "Map":
while (true) {
recipe = sc.nextLine();
if (recipe.equals("끝")) {
break;
} else {
map.put(cnt++, recipe);
}
}
System.out.println("[ " + collect + " 로 저장된 " + foodname + " ]");
for (int i = 0; i < map.size(); i++) {
System.out.println(i + 1 + ". " + map.get(i));
}
break;
}
}
}