일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백준 14888번
- 크롬설치파일꺼짐
- C++
- chromeSetup.exe 안됨
- 연산자 끼워넣기
- ChromeStandaloneSetup64안됨
- 크롬 설치 안됨
- 바로꺼짐
- 크롬설치
- chromeSetup.exe꺼짐
- 삼성 sw 역량테스트
- 로봇청소기
- 백준 14503번
- Today
- Total
공대생의 개발 일기장
ch05 배열 본문
https://github.com/SeoKyung0221/Java-study
GitHub - SeoKyung0221/Java-study
Contribute to SeoKyung0221/Java-study development by creating an account on GitHub.
github.com
ch05 배열파트의 예제와 연습 문제를 푼 코드를 업로드했다. CS관련 포스팅은 내일 올라갈 예정이다.
연습 문제를 풀면서 고민이 됐던 부분은 있지만 문법적인 부분에서 몰라서 풀지 못했던 부분은 없어서 연습 문제에 대한 피드백은 없이 꼭 기억했으면 좋겠거나 아직 미숙해서 바로바로 떠오르지 못하는 개념만 정리하겠다.
1.
int[] score = new int[5];
대입 연산자 '='에 의해 배열의 주소가 int형 배열 참조변수 score에 저장된다. 즉, score[0]의 주소 시작주소(?)가 저장된다.
2. 배열이름.length
- 확실히 숙지한 메소드지만 너무 중요해서 한번 더 강조!
3. 배열의 길이 변경하기
- 기존의 배열을 바꾸는 방법은 없다. 새로운 배열을 만들어서 그 배열로 내용을 옮겨야 한다. 보통 새로운 배열의 크기는 기존의 2배로 한다.
- 배열을 복사했을 때 기존 배열의 이름을 arr, 복사된 배열의 이름을 tmp라 하면
int[] arr = new int[5];
int[] tmp = new int[arr.length*2]; // 기존 배열보다 길이가 2배인 배열 생성
for(int i=0; i<arr.length; i++){
tmp[i] = arr[i]; // 값 복사
}
arr = tmp; // 참조변수 arr이 새로운 배열을 가리킴.
즉, arr과 tmp는 같은 배열을 가리킨다. 이름만 다른 동일한 배열이다. arr을 호출해도 tmp의 배열이 호출된다는 뜻이다.
4. new int[] 생략 가능
int[] score = new int[]{50, 60, 70, 80, 90} // 참고로 두번째 대괄호에는 숫자가 들어가면 안된다.
int[] score = {50, 60, 70, 80, 90}; // new int[] 생략 가능.
// 만약 대입연산자로 바로 연결되지 않을 경우
int[] score;
score = new int[]{50, 60, 70, 80, 90}; // OK
score = {50, 60, 70, 80, 90}; // 에러. new int[] 생략 불가능!
5. int[] score = new int[]{} 와 같이 괄호 {}안에 아무 것도 넣지 않으면, 길이가 0인 배열이 생성.
6. System.out.println(배열이름);
- '타입@주소'의 형식으로 출력. 단! char배열의 경우 구분자없이 그대로 출력 -> abcde로 출력.
7. System.out.println(Arrays.toString(배열이름)) -> [ 50, 60, 70, 80, 90]으로 출력. (char도 마찬가지)
8. System.arraycopy(num, 0, newNum, 0, num.length);
- 어떤 배열(num)의 몇 번째 요소에서(0) 어느 배열로(newNum) 몇 번째 요소로(0) 몇 개의 값을 복사할 건지(num.length)
9. 참조형 배열은 각 요소의 값이 null로 초기화 된다. (변수의 타입에 따라 기본값이 바뀐다. 가장 default로! 참조형의 경우 null이니까 배열에서도 null로 초기화)
10. 특별히 String클래스는 String[] name = new String[3]에 대해 name = "park" 허용
- 하지만 원래는 name[0] = new String("park")를 해주어야한다. 왜? String은 클래스니까! (Scanner클래스를 떠올리자)
11. 참조형 배열의 경우 배열에 저장되는 것은 객체의 주소이다.
12. String 클래스의 주요 메서드
- char charAt(int index) : 앞서 반복문에서 소개했던 메서드
- int length() : 위에서 설명한 메서드
- String substring(int from, int to) : 문자열에서 해당 범위 (from~to)에 있는 문자열을 반환한다. (to는 범위에 포함되지 않음)
- boolean equals(object obj) : 문자열 내용비교
- char[] toCharArray() : 문자열을 문자배열 char[]로 변환해서 반환한다. 말그대로 문자열의 각 원소가 문자가 되어 배열의 원소가 된다.
13. (char배열 -> String클래스) String str = new String(chArr);
14. 이차원 배열
int[][] arr = new int[][]{
{1, 2, 3}, // 1행
{4, 5, 6} // 2행
};
// 가변 배열
int[][] score = new int[5][]; // 두번째 차원의 길이는 지정하지 않는다.
score[0] = new int[3]; // 배열의 배열 형태. 두번째 차원의 길이 지정해주기
score[1] = new int[2]; // 두번째 대괄호가 그 행의 열의 개수라고 보면 될 것!
-arr[0].length가 묻는 것은 1행의 원소의 개수를 말한다. arr의 메모리가 어떤 형태로 만들어졌는지 생각해보자. 바로 배열의 배열 형태로 구성되어 있다.
'Java 공부' 카테고리의 다른 글
ch07 객체지향프로그래밍2 (0) | 2023.03.23 |
---|---|
ch06 객체지향프로그래밍1 (0) | 2023.03.12 |
ch04 조건문과 반복문 (1) | 2023.02.19 |
ch03 연산자 - 연습문제 풀이 (0) | 2023.02.08 |
ch03 연산자 - 복습 및 정리 (0) | 2023.02.08 |