Day 27 (23.02.02)

Jane·2023년 2월 2일
0

IT 수업 정리

목록 보기
27/124

1. 배열의 초기화

1-1. 사용법

  • 배열 생성하는 방법
    int[] arr1 = new int[3];
  • 배열 생성 및 초기화
    • int[] arrInit1 = new int[] { 1, 2, 3 };
    • int[] arrInit2 = { 1, 2, 3 };
  • 배열 대상의 참조변수 선언 방법
    • int[] array = new int[3];
    • int array[] = new int[3];
      (이 방법은 C언어에서 지원했던 방법을 Java에서도 지원하는 형태)

1-2. [] 자료형의 함수에서의 활용 예시

  • 배열형을 매개변수로 들여오는 함수를 만들 수 있다.

public class JavaTest {

	public static void main(String[] args) {

		int[] ar = { 1, 2, 3, 4, 5, 6, 7 };
		int sum = sumOfAry(ar);
		System.out.println(sum);
	}

	static int sumOfAry(int[] ar) {
		int sum = 0;
		for (int i = 0; i < ar.length; i++) {
			sum += ar[i];
		}
		return sum;
	}

}

[Console]
28


  • 배열을 리턴(반환)하는 함수도 만들 수 있다!
static int[] makeNewIntAry(int len) {
		int[] ar = new int[len];
		return ar;
	}

1-3. 배열을 초기화했을 때의 default

class A{
	static int a;
	static double b;
	static char ch;
	static String str;
	static boolean flag;
	
}


public class JavaTest {
	public static void main(String[] args) {
		 A a = new A();
		 System.out.println(A.a);
		 System.out.println(A.b);
		 System.out.println(A.ch);
		 System.out.println(A.str);
		 System.out.println(A.flag);
	}
	
}

[Console]
0
0.0
'\u0000'
null
false



public class JavaPractice {

	public static void main(String[] args) {
		int[] ar = new int[10];
		for (int i = 0; i < ar.length; i++) {
			System.out.print(ar[i] + " ");
		}

		System.out.println();
		String[] ar2 = new String[3];
		for (int i = 0; i < ar2.length; i++) {
			System.out.print(ar2[i] + " ");
		}
	}

}

[Console]
0 0 0 0 0 0 0 0 0 0
null null null

2. 예제 코드를 초기화하는 형태로 바꾸기

2-1. String[] strArr 초기화

String[] strArr = {"abcdef", "abcdef", "abcdef"};
        
        /*
        String[] strArr = new String[3];
        strArr[0] = "";
        strArr[1] = "";
        strArr[2] = "";
        */

2-2. Circle[] circleArr 초기화

Circle[] circleArr = {new Circle(10), new Circle(10)};

		/*
        Circle[] circleArr = new Circle[2];
		circleArr[0] = new Circle(10);
		circleArr[1] = new Circle(10);
        */

2-3. Rectangle[] recArr 초기화

Rectangle[] recArr = { new Rectangle(10, 20), new Rectangle(10, 30) };

		/*
		Rectangle[] recArr = new Rectangle[2];
		recArr[0] = new Rectangle(10, 20);
		recArr[1] = new Rectangle(10, 30);
		*/

3. main(String[] args)

public class StringTest {
	public static void main(String[] args) {
		// main()의 매개변수 : String[]
		
		for (int i = 0; i < args.length; i++) {
			System.out.println(args[i]);
		}

	}  // end of main

}

  • 메인함수가 있는 파일을 (클래스이름).java로 저장한다
  • java 파일이 있는 곳에 cmd 창에 입력한다
    • javac ().java // 컴파일
    • java () "String1" "String2"

	for (int i = 0; i < args.length; i++) {
		System.out.println(args[i] + " : " + (args[i].length());
	}

4. enhanced for문

4-1. 개요

  • index로 접근했던 코드를 향상시킨(더 나은 코드로 바꾼) 반복문
  • OutOfIndexError가 나오지 않는다.
  • for문이 한바퀴 모두 도는 코드이므로, 안의 값을 바꿀 수 없다. (Read ONLY)

public class JavaTest {
	public static void main(String[] args) {

		int[] ar = { 1, 2, 3, 4, 5 };
		for (int e : ar) {
			System.out.println(e);
		}

		/*
		 for (int i = 0; i < ar.length; i++) {
         	System.out.println(ar[i]); 
         }
		 */
	}

}

4-2. for-each로 쓴 '합 구하기' 코드


public class JavaTest {
	public static void main(String[] args) {

		int[] ar = { 1, 2, 3, 4, 5 };
		int sum = 0;
		for (int e : ar) {
			sum += e;
		}
		System.out.println("sum : " + sum);
	}

}

[Console]
sum : 15

4-3. for-each로 쓴 '문자열의 길이 총합' 코드


public class JavaTest {
	public static void main(String[] args) {

		String[] ar = { "aaa", "bbbb", "c"};
		int sum = 0;
		for (String str : ar) {
			sum += str.length();
		}
		System.out.println("문자열의 길이의 합 : " + sum);
	}

}

[Console]
문자열의 길이의 합 : 8

4-4. Box 클래스 + 배열 사용하기

class Box{
	private int num;
	private String str;
	
	public Box(int num, String str){
		this.num = num;
		this.str = str;
	}
	
	public int getBoxNum() {
		return num;
	}
	
	public String getBoxStr() {
		return str;
	}
}


public class JavaTest {
	public static void main(String[] args) {
		Box[] ar = new Box[5];
		
		ar[0] = new Box(101, "Coffee");
		ar[1] = new Box(202, "Computer");
		ar[2] = new Box(303, "Apple");
		ar[3] = new Box(404, "Dress");
		ar[4] = new Box(505, "Fairy-tale book");
		
		
		for(Box e:ar) {
			if(e.getBoxNum() == 505) {
				System.out.println(e.getBoxStr());
                // System.out.println(e);
			}
		}
	}

}
  • Box 클래스에 String toString() 을 넣어주면, overriding이 적용되어 System.out.println(e); 에 주소값이 아닌 String이 그대로 출력된다.

Box 클래스에 toString() 없을 때 : Box@4926097b
(Box의 주소값)
Box 클래스에 toString() 있을 때 : Fairy-tale book
(라이브러리에 있는 String 클래스가 overriding되면서 String 출력)

profile
velog, GitHub, Notion 등에 작업물을 정리하고 있습니다.

0개의 댓글