1. Java 이중 반복문
- 큰범위 와 작은범위로 나누어 구현
- 작은 범위를 먼저 수행하고 큰범위를 나중에 수행하기.
//구구단 이중 반복문 출력
public class Gugudan {
public static void main(String[] args) {
for (int i = 2; i < 10; i++) {
for (int j = 1; j < 10; j++) {
System.out.printf("%d * %d = %d%n", i, j, j * i);
}
System.out.println();
}
}
}
//별트리 찍기
public class Star {
public static void main(String[] args) {
int row;
int col;
for (row = 1; row <= 9; row++) {
for (col = 1; col <= row; col++) {
System.out.print("*");
}
System.out.println();
}
}
}
/*
*
**
***
****
*****
******
*******
********
*********
*/
2. Java 반복문 제어
- continue : 반복문 안에 조건문에서 조건을 만족하면 continue 실행 시 해당 반복을 실행하지 않고 다음 반복으로 넘어감
//continue를 사용해서 홀수만 더하기
public class OddNumberTotal {
public static void main(String[] args) {
int total = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) continue; //짝수일때 continue 실행하여 total에 더해지지 않음
total += i;
}
System.out.println(total);
}
}
- break : 반복문 안에 조건문에서 조건을 만족하면 break 실행 시 반복문 탈출
//1부터 100까지 더하다가 특정 조건에 만나면 반복문 탈출하기
public class Break {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i == 10) break; //i가 10이면 더하기 하지 않고 break
sum += i;
}
System.out.println(sum);
}
}
1. Java array
- 기존 변수 선언의 한계점 : 비슷한 내용을 저장하려는 경우 필요한 갯수만큼 변수 선언이 필요함. (ex. 30명의 학생정보를 저장하려면 변수 30개 선언했어야함.)
public class ArrayDeclaration {
public static void main(String[] args) {
int[] intArr = new int[5];
int[] intArr2 = new int[]{1, 2, 3, 4, 5};
int[] intArr3 = {1, 2, 3, 4, 5};
float[] floatArr = new float[5];
float[] floatArr2 = {1.5f, 2.5f, 3.5f, 4.5f, 5.5f};
boolean[] booleans = new boolean[5];
boolean[] booleans2 = {true, false, true, true, false};
char[] charArr = new char[5];
char[] charArr2 = {'a', 'b', 'c', 'd', 'e'};
String[] stringArr = new String[5];
String[] stringArr2 = {"abc", "bcd", "cde"};
/*
[0, 0, 0, 0, 0]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[0.0, 0.0, 0.0, 0.0, 0.0]
[1.5, 2.5, 3.5, 4.5, 5.5]
[false, false, false, false, false]
[true, false, true, true, false]
[, , , , ]
[a, b, c, d, e]
[null, null, null, null, null]
[abc, bcd, cde]
*/
}
}
2. array 사용하기
- index 는 0부터 시작
//배열 인덱스에 접근하기
public class ArrayIndex {
public static void main(String[] args) {
int[] studentScores = {90, 87, 88, 75, 99, 65};
int score1 = studentScores[0]; //첫번째 요소 가져오기
System.out.println(score1); //90
studentScores[2] = 93; //배열 요소 값 대입
System.out.println(Arrays.toString(studentScores)); //[90, 87, 93, 75, 99, 65]
int score6 = studentScores[6]; //배열 요소를 벗어난 범위
System.out.println(score6); //Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
}
}
- 배열과 반복문 사용
public class ArrayFor {
public static void main(String[] args) {
int[] studentScores = {90, 87, 88, 75, 99, 65};
for (int i = 0; i < studentScores.length; i++) {
System.out.println(studentScores[i]);
}
for (int score : studentScores) { //배열의 각 요소를 score에 담아서 반복문 사용
System.out.println(score);
}
}
}
1. 다차원 배열
public class TwoDimensionArray {
public static void main(String[] args) {
int[][] arr1 = new int[3][5]; //3row, 5col
int[][] arr2 = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};//3row, 4col
System.out.println(Arrays.deepToString(arr1)); //[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
System.out.println(Arrays.deepToString(arr2)); //[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
int myInt = arr2[0][2];
int myInt2 = arr2[2][3];
System.out.println(myInt); // 3
System.out.println(myInt2); // 12
arr2[2][3] = 20; //값 업데이트
System.out.println(Arrays.deepToString(arr2)); //[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 20]]
for (int row = 0; row < arr2.length; row++) {
for (int col = 0; col < arr2[row].length; col++) {
System.out.print(arr2[row][col] + " ");
}
System.out.println();
/*
1 2 3 4
5 6 7 8
9 10 11 20
* */
}
}
}
2. array 복사
- 얕은 복사 / 깊은 복사
- 얕은 복사 : 같은 물건에 여러 이름을 붙이는 것
int[] a = {1,2,3,4};
int[] b = a;
//a와 b가 같은 참조를 가리키고 있음, a의 값이 바뀌면 b의 값도 바뀜
- 깊은 복사 : 실제로 물건과 이름을 새로 만드는 것
- 리터럴과 객체 복사의 차이 : 리터럴은 유일한 상수여서 항상 값 자체가 복사됨(깊은 복사) // 객체는 새로 만들어낸 물건이다.
public class ArrayCopyTwo {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] arr1 = new int[arr.length];
for (int i = 0; i < arr.length; i++) { //배열 복사 방법 1
arr1[i] = arr[i];
} //깊은 복사. 배열 객체를 새로 만듦
int[] arr2 = Arrays.copyOf(arr, arr.length); //배열 복사 방법 2
int[] arr3 = arr.clone(); //배열 복사 방법 3
arr[0] = 100;
System.out.println(Arrays.toString(arr)); //[100, 2, 3, 4, 5, 6, 7, 8, 9, 10]
System.out.println(Arrays.toString(arr1)); //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
System.out.println(Arrays.toString(arr2)); //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
System.out.println(Arrays.toString(arr3)); //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
- 2차원 배열 복사
public class TwoDimensionArrayCopy {
public static void main(String[] args) {
int[][] arr = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
int[][] arr1 = arr.clone(); //얕은 복사
int[][] arr2 = new int[3][];
for (int row = 0; row < 3; row++) { //깊은 복사
arr2[row] = arr[row].clone();
}
arr[0][0] = 100;
System.out.println(Arrays.deepToString(arr)); // [[100, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
System.out.println(Arrays.deepToString(arr1));// [[100, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
System.out.println(Arrays.deepToString(arr2)); //[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
}
}
3. Program Args
- Command Line Arguments
public static void main(String[] args) // 무슨 의미일까?
Command에서 실행시 외부 변수를 입력하면 args로 받아와서 사용
java exercise.chapter_21.CmdLineArgs hello world
public class CmdLineArgs {
public static void main(String[] args) {
System.out.println(args.length); // 2 ->> [hello][world]
System.out.println(args[0]); // hello [hello]
System.out.println(Arrays.toString(args)); // [hello, world]
}
}
#슈퍼코딩, #1:1관리형부트캠프, #백엔드, #backend, #백엔드공부, #개발공부, #백엔드개발자 #취준일기, #취준기록, #취뽀, #빡공, #HTML/CSS, #javascript, #react , #java, #spring