More actions
일시
- 오후 12시 15분 ~ 12시 45분
참가자
| 유재범 | 불참 |
| 최다인 | 참석 |
| 이지수 | 참석 |
| 김용준 | 불참 |
| 김정민 | 참석 |
진행 상황
- 김정민 학우의 발표
- Java의 정석 - Chapter 5
발표 내용
- C에서의 배열은 선언과 생성이 동시에 되나, Java에서는 선언과 생성이 다름.
int[] arr; : 선언
arr = new int[5]; : 생성
int[] arr = new int[5]; : 선언과 생성, 동시에.
자동으로 0으로 초기화
int[] arr = {1, 2, 3, 4, 5}; 이런 형식도 가능.
단, 이 경우에는 선언과 생성을 동시에 할 경우에만.
먼저 선언을 했을 경우에는 (int[] arr;) arr = new int[]{1, 2, 3, 4, 5};
- 생성 후 크기 변경도 가능.
int[] arr; arr = new int[3]; arr = new int[5]; → 문제없음.
- 함수의 return형이 배열인 것도 가능.
- public static int[] function() {...}
- arr.length : 배열의 길이값을 return하는 메서드
- 다차원 배열
선언 : int[][] arr; 생성 : arr = new int[3][]; → 열의 길이를 비워둘 수 있음 arr[0] = new int[3]; arr[1] = new int[2]; → 각 행의 배열 길이가 모두 달라도 됨 //다차원 배열에서의 length 메서드 arr.length == 3 arr[0].length == 3 arr[1].length == 2
- for-each 구문
int[] arr = {1, 2, 3, 4, 5};
for (int e : arr) {
System.out.print(e);
}
→ 출력값 : 12345
for (int e : arr) {
e++;
System.out.print(e);
}
→ 출력값 : 23456
//e는 index가 아니라, arr[index]의 값을 잠깐 받아놓는 역할.
- arraycopy 메소드
int[] arr1 = {1, 2, 3};
int[] arr2 = {11, 12, 13, 14};
System.arraycopy (arr1, 0, arr2, 1, 2);
→ arr2 = {11, 1, 2, 14};
// arr1[0]부터 2개의 값을, arr2[1]부터 2개의 값으로 복사.
- main함수의 String[] args ??
- command line에서 문자열들을 입력받을 수 있음.
java program abc 123 args[0] == abc args[1] == 123
다음 진행
- Chapter 6
- 객체지향 프로그래밍 1
- 발표 : 최다인
과제
- 임의의 n*n 행렬을 입력받아 (n+1)*(n+1) 행렬을 생성해, (n+1)번째 행과 열에 각 행과 열의 합을 계산하여 넣고 출력하는 프로그램을 작성하라.
- 행렬의 크기 n은 입력을 받으면 더 쉽다. 안 받고도 만들어보자.
- n*m으로도 만들어보자.
예시 input 1 2 3 4 5 6 7 8 9 output 1 2 3 6 4 5 6 15 7 8 9 24 12 15 18 45
유재범
최다인
이지수
김용준
김정민
후기
- for-each 구문은 다차원에서도 사용 가능한지 궁금하네요. 그리고 자바에서도 다차원 배열이 C와 같이 일차원 배열과 메모리값이 같은지도 알아보고 싶군요. - 유재범
- for-each를 활용한 2차 배열 출력입니다. - 이지수
int[][] array = new int[][]{{1, 2, 3}, {2, 3, 4}};
for(int[] row : array){
for(int col : row){
System.out.print(col);
}
}
- 아까 정민이가 배열을 선언하고 나서 그 크기를 바꾸는 것은 괜찮다고 했는데, 그렇게 할 경우 새로운 크기의 배열은 무조건 0으로 초기화가 되는군요...값 보존이 안 되네요.
int[] arr = new int[]{1,2,3,4};
arr = new int[3];
for(int n; arr){
System.out.print(n + " ");
}
이렇게 할 경우
0 0 0
이렇게 나와요. - 이지수
- new라는 것 자체가 메모리를 할당해주는건데, arr에 새로 new int[]를 해주는 순간 기존의 할당된 메모리와 관계없이 다른 메모리가 할당되는 거니까 라고 설명하면 되려나? - 최다인