public static void main(String[] args){
int[] data= {1,2,3,4,5,6,7,8,9,10};
for( ) {
if(v%3==0) {
System.out.print(v+" ");
}
}
}
[ Console 화면 ]
3 6 9
➀ int i=0;i<data.length;i++ 변수 i 가 사용되는 곳이 없기 때문에 답이 될 수 없다.
➁ int v=0;v<data.length;v++ data.length는 10이기 때문에 v가 0에서 9번까지 if문을 실행하는데 그 경우 0,3,6,9 출력
➂ int v=0;v<10;v++ 2번과 같음
➃ int v:data
4번은 for each 문을 사용하였는데 for(변수타입 변수이름: 배열이름)으로 구성되어 있다. : 뒤에 들어갈 수 있는 것은 루프를 돌릴 수 있는 배열이나 ArrayList 등만 가능하다. 배열의 항목을 순서대로 변수에 대입하여 배열의 길이만큼 자동으로 실행하여 준다. 배열의 값만을 가져다가 사용할 수 있고 횟수 등을 수정할 수 없기 때문에 순차적으로 반복할 때에만 사용 가능하다.
static int func(String str){
System.out.print(str);
return 10;
}
public static void main(String[] args){
System.out.print(“10”+func(“banana”)+10);
}
main 함수 안의 syso는 String형을 받고 있어 fubc()의 banana가 먼저 출력된 후 문자열 10, 리턴 값 10, 마지막 10 순서로 출력된다. banana101010
class A{
protected void func(){
System.out.println("apple");
}
}
class B extends A{
private void func() {
System.out.println("banana");
}
private void func(String str) {
System.out.println(str);
}
}
public static void main(String[] args) {
B b=new B();
b.func();
b.func("아메리카노");
}
클래스 B는 A를 상속받고 있는데 공개범위가 부모보다 더 좁게 설정되어있다. 자식 클래스 함수의 공개범위를 부모와 같거나 더 넓게 설정해주면 문제를 해결할 수 있다.
ArrayList al=new ArrayList(2);
al.add(1);
al.add(2);
al.add(0);
al.add(-1);
al.add(-2);
try {
System.out.print(al.size());
for(Object obj:al) {
System.out.print(10/obj+" ");
}
}
catch(Exception e) {
System.out.print("HELLO");
}
finally {
System.out.print("JAVA");
}
System.out.print("WORLD");
ArrayList의 제네릭이 설정되어 있지 않아 아웃풋 값이 오브젝트 객체로 되어있다. 코드가 잘 실행되기 위해서는
ArrayList <Integer> al = new ArrayList <Integer>(); 와 같이 아웃풋 값이 정수형으로 나올 수 있도록 제네릭을 이용하여 자료형을 강제하여 주면 해결된다.
'Java > question' 카테고리의 다른 글
| 문제풀이(07) 상속 (0) | 2022.06.20 |
|---|---|
| 문제풀이(6) 랜덤수 생성(함수이용) (0) | 2022.06.17 |
| 문제풀이(5) 퀵정렬 (0) | 2022.06.17 |
| 문제풀이04(별찍기) (0) | 2022.06.10 |
| 문제풀이03(반복문과 제어문) (0) | 2022.06.09 |