Day 11

ChangWoo·2023년 4월 14일
1

자바의 정석

목록 보기
11/71

ch 4-20~24 break문, continue문 이름 붙은 반복문

break문

자신이 포함된 하나의 반복문을 벗어난다.

  • while(true)에서 true는 생략불가

continue문

자신이 포함된 반복문의 끝으로 이동 - 다음 반복으로 넘어감
전체 반복 중에서 특정 조건시 반복을 건너뛸 때 유용

  • 3의 배수를 출력하지 않는다.

이름붙은 반복문

반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.

  • break문 = 하나의 반복문을 벗어난다.
    그래서, 중첩문의 반복을 벗어나기 위해 이름붙은 반복문을 사용한다.

ch 5-1~3 배열의 생성과 선언, 배열의 인덱스

배열이란?

배열은 같은 타입의 여러 변수를 하나의 묶으므로 다루는 것
Ex) int score1, score2, score3, score4, score5;
-> 저장공간에 이름을 붙여 사용하는 것

int[] score = new int[5];

  • 0(숫자)이 들어있는 공간을 배열의 인덱스라 한다.
  • 인덱스는 0번째부터 시작한다.
  • 배열은 서로 붙어있으며 연속적이다.

배열의 선언과 생성

배열의 선언 - 배열을 다루기 위한 참조변수의 선언

* 1. 타입[] 변수이름; // 배열을 선언(배열을 다루기 위한 참조변수 선언)
* 2. 변수이름 = new 타입[길이]; // 배열을 생성(실제 저장공간을 생성)
Ex) int[] score; // int타입의 배열울 다루기 위한 참조변수 score 선언
	score = new  int[5]; // int타입의 값 5개를 저장할 수 있는 배열 생성

배열의 인덱스

배열의 인덱스 - 각 요소(저장공간)에 자동으로 붙는 일련번호

Ch 5-4,5 배열의 길이, 배열의 초기화

배열의 길이

배열이름.length - 배열의 길이(int형 상수)
Ex) int[] arr = new int[5]; // 길이가 5인 int 배열
int tmp = arr.length; // arr.length의 값은 5이고 tmp에 5가 저장된다.
* 배열은 한 번 생성하면 실행하는 동안 그 길이를 바꿀 수 없다.
- 왜? - 메모리 공간 중 어떤 곳은 비어있고 어떤 곳은 채워져있으므로 길이를 바꿨을 때 그 공간이 비어져 있을지 모르므로 길이를 바꿀 수 없다.
- 부족하면? - 더 큰 거를 새로 만들어서 기존 것을 복사해서 추가한다.
Ex) int[] score new int[6];
for (int i=0; i < 6; i++)
System.out.println(score[i]); -> 에러/ 인덱스 범위가 넘었으므로
그래서
int[] score = new int[5]; // 배열의 길이를 6에서 5로 변경
for (int i=0; i < score.length; i++) // 조건식을 변경하지 않아도 됨
System.out.println(score[i]);

배열의 초기화

배열의 각 요소에 처음으로 값을 저장하는 것

  • 배열은 자동초기화를 한다.
    int[] score = new int[5]; // 길이가 5인 int형 배열을 생성한다.
    score[0] = 50; // 각 요소에 직접 값을 저장한다.
    score[1] = 60;
    score[2] = 70;
    score[3] = 80;
    score[4] = 90;
  • for문으로 배열을 초기화 하는 방법
  • 괄호를 이용한 배열의 초기화
    int[] score = new int[]{ 50, 60, 70, 80, 90};
    int[] score = { 50, 60, 70, 80, 90}; // new int[]를 생략할 수 있음
    int[] score;
    score = { 50, 60, 70, 80, 90} // 에러 new int[]를 생략할 수 없음
    score = new int[]{50, 60, 70, 80, 90}; // ok
  • 두 줄로 나눠쓰기 X!!!

ch 5-6,7 배열의 출력

배열의 출력

int[] iArr = { 100, 95, 80, 70, 60};
   // 배열을 가리키는 참조변수 iArr의 값을 출력한다.
   System.out.println(iArr); [I@14318bb와 같은 형식의 문자열이 출력된다.
   그러나, 예외적으로 char타입을 출력하면,
   char[] chArr = { 'a', 'b', 'c', 'd' };
   System.out.println(chArr); // abcd가 출력된다.

그래서 배열의 모든 요소를 출력하려면, for문을 사용해야 한다.

for(int i=0;i < Arr.length; i++) {  // 배열의 요소를 순서대로 하나씩 출력
	System.out.println(iArr[i[);
}

조금 더 편한 방법으로는 배열 iArr의 모든 요소를 출력하는 것이다.[100, 95, 80, 70, 60]이 출력된다.

System.out.println(Arrays.toString(iArr));

ch 5-8,9 배열의 활용(1)~(2)

배열의 활용

총합과 평균 (배열의 모든 요소를 더해서 총합과 평균을 구한다.)

최대값과 최소값 (배열의 요소 중에서 제일 큰 값과 제일 작은 값을 찾는다.)

ch 5-10,11 배열의 활용(3)~(4)

배열의 활용

섞기(shuffle) (배열의 요소의 순서를 반복해서 바꾼다.(숫자 섞기, 로또번호 생성))

ch 5-12,13 String 배열

String배열의 선언과 생성

String[] name = new String[3]; // 3개의 문자열을 담을 수 있는 배열을 생성한다.

*String은 참조형이기 때문에 참조형의 기본값인 null이 들어간다.

  • 각 타입의 기본 값

    name[0] = "Kim";
    name[1] = "Park";
    name[2] = "Yi"; 일 때,
    String[] name = {"Kim", "Park", "Yi}; 가 된다.
  • 문자가 들어가는 것이 아니라 주소값이 들어가는 것이다.

ch 5-14 String 클래스

  1. String 클래스는 char[]와 메서드(기능)를 결합한 것 (String클래스 = char[] + 메서드(기능))
  • String클래스가 char의 기능을 포함하기 때문에 String을 사용하는 것이 좋다.
  1. String 클래스는 내용을 변경할 수 없다. (read only)
    Ex) String a = "a";
    String b = "b";
    a = a + b; (결과는 "ab"가 된다.)

    * a와 b가 결합되는 것이 아니라 새로운 "ab"가 만들어지고 새로운 주소값이 지정된다.

ch 5-15 String 클래스의 주요 메서드


Ex) String str = "ABCDE";
char ch = str.charAt(3); // 문자열 str의 4번째 문자 'D'를 ch에 저장.

Ex2) String str = "012345";
String tmp = "str.substring(1,4); // str에서 index범위 1~4의 문자들을 반환
System.out.println(tmp); // "123"이 출력된다.

profile
한 걸음 한 걸음 나아가는 개발자

0개의 댓글