1. 배열의 디폴트 초기화 방법은?
배열에 직접 값을 넣어서 초기화 시키는 방법이 있고, 배열 객체를 생성하고 아무 값도 집어넣지 않으면 자동으로 디폴드 값으로 초기화가 된다. 이 때 기본 자료형은 0으로, 인스턴스 배열 각각의 값은 null로 초기화 된다.
1. 디폴트 초기화
//기본 자료형 배열은 값을 안넣으면 모든 요소 0으로 초기화
int[] ar = new int[10]; //선언 객체생성
//인스턴스 배열(참조변수 배열)은 모든 요소 null로 초기화
String[] ar = new String[10];
2. 값을 넣어서 초기화
int[] ar = {1,2,4}
String course[] = {"Java", "C++", "HTML5"};
2. arraycopy 함수의 사용 방법은?
System.arraycopy(복사할 배열, 복사할 배열의 시작 index, 복사 될 배열, 복사될 배열의 시작 index, 복사할 개수);
System.arraycopy(ar1, 0, ar2, 3, 4);
/*
ar1 → 복사할 원본
0 → ar1의 index 0번부터 값을 ( = ar1[0] 부터의 값을 )
ar2 → 복사의 대상
3 → ar2의 index 3번 부터 ( = ar2[3]부터 )
4 → 4개 복사 해라. ar2[3]부터 [4],[5],[6]까지
*/
3. public static void main(String[] args) 에서 String[] args 의 사용법과 용도는?
String[] args 는 프로그램 실행시 매개변수를 보내서 실행할 수 있다는 것.
실행 하자마자 받아야 하는 인자(파라미터)가 있을 수 있어 그럴 때 활용한다.
띄어쓰기로 지정해서 뒤에 파라미터 부분을 하나씩 구분해서 읽어서 배열로 저장함.
4. enhenced for 문에 대하여 설명하시오.
int[] ar = {1, 2, 3, 4, 5};
//for(int i = 0; i < ar.length; i++) { -> 이 문장을 아래와 같이 변경
for(int e : ar) {
System.out.println(e);
}
5. 로또 프로그램을 작성하시오.
//로또번호 :랜덤번호 1-45, 6개, 중복없이
public class LottoMain {
public static void main(String[] args) {
Lotto lottoGame = new Lotto();
lottoGame.showLandomN();
}
}
public class Lotto {
private int[] lottoNum;
public Lotto() {
}
private int[] getLandomN () {
int[] ranNum = new int[6];
for(int i=0; i<ranNum.length;i++) {
ranNum[i] = (int)(Math.random()*45+1);
for(int j=0; j<i;j++) {
if(ranNum[i] == ranNum[j]) {
break;
}
}
}
return ranNum;
}
public void showLandomN() {
lottoNum = getLandomN();
for(int i=0; i<lottoNum.length;i++) {
System.out.print(lottoNum[i]+" ");
}
}
}
6. 아래의 프로그램을 참고 하여 Box class 를 짜시오.
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);
}
}
class Box{
int boxNum;
String contents;
public Box() {
}
public Box(int boxNum, String contens) {
this.boxNum = boxNum;
this.contents = contens;
}
public int getBoxNum() {
return boxNum;
}
public String toString() {
return contents;
}
}
7. 아래의 프로그램을 짜시오. (필수)
4 x 4의 2차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를 랜덤하게 생성하여 정수 16개를 배열에 저장하고, 2차원 배열을 화면에 출력하라.
8 6 1 1
7 3 6 9
4 5 3 7
9 6 3 1
Mani 에서 처리
public class TowDArry {
public static void main(String[] args) {
int[][] numArr = new int[4][4]; //선언하는 부분. 메모리에 2차원 배열 올림
for(int i=0; i<numArr.length; i++) {
for(int j=0; j<numArr[i].length; j++) {
numArr[i][j] = (int)(Math.random()*10)+1; //값 넣는 부분
}
}
for(int i=0; i<numArr.length; i++) {
for(int j=0; j<numArr[i].length; j++) {
System.out.print(numArr[i][j]+" "); //출력 하는 부분
}
System.out.println();
}
}
}
클래스 나눈 후 (encapsulation 은 안함)
class TwoArr{
final int ROWS = 4; //배열 크기가 바뀔 수 있기 때문에
final int COLS = 4; //다이렉트로 안하고 이렇게 함
int[][] numArr;
TwoArr(){
numArr = new int[ROWS][COLS];
}
public void input() {
for(int i=0; i<numArr.length; i++) {
for(int j=0; j<numArr[i].length; j++) {
numArr[i][j] = (int)(Math.random()*10)+1; //값 넣는 부분
}
}
}
public void output() {
for(int i=0; i<numArr.length; i++) {
for(int j=0; j<numArr[i].length; j++) {
System.out.print(numArr[i][j]+" "); //출력 하는 부분
}
System.out.println();
}
}
}
public class TowDArry {
public static void main(String[] args) {
TwoArr two = new TwoArr();
two.input();
two.output();
}
}
8.아래를 메모리 구조로 표현 하시오.
int[][] arr = new int[3][4]
-
arr[0], arr[1], arr[2]는 연속된 주소를 갖는다.
-
arr[0][0] ~ arr[0][3] arr[1][0] ~ arr[1][3] arr[2][0] ~ arr[2][3] 는 각각 연속된 주소를 갖는다.
'IT 면접족보 > 자바 면접족보' 카테고리의 다른 글
자바 수업 정리 - instanceof, Object class, final, @Override, interface (16일 차 ) (0) | 2020.12.16 |
---|---|
자바 면접 족보 정리(15일 차 ) (1) | 2020.12.14 |
자바 면접 족보 정리(13일 차 ) (0) | 2020.12.11 |
자바 면접 족보 정리(12일 차 ) (0) | 2020.12.10 |
자바 면접 족보 정리(11일 차 ) (0) | 2020.12.09 |