Coding/언어-JAVA

JAVA Q&A

꿀딴지- 2023. 8. 17. 14:06

공부하며 궁금했던 내용 정리.

 

Q. 이터레이터 사용 시 장점? for문으로도 가능한데, 객체를 만들어가면서 쓰는게 더 좋은지?

A. 이터레이터 사용 시 생성되는 객체는 작은 수준이라 프로그램 성능 등에 영향을 미치지 않는 정도이고, for 문으로도 가능하지만 이터레이터를 사용하게되면 사용상 편리해짐. 내부적으로 iterator의 동작 속도가 훨씬 빠름.

 

Q. List 에서 중복된 데이터는 삭제 시 한개만 삭제되는지?

A. 중복된 값이 있더라도, 제일 먼저 조회되는 값만 삭제 됨

 

Q. LinkedList 에 들어간 값이 숫자면 삭제 시 파라미터 어떻게 인식하는지?

A. 숫자는 int이고, LinkedList에 들어가는 값은 Integer 객체 이므로 값인 <Integer>를 삭제하려면 Integer.valueOf로 변경해서 삭제하면 됨.

LinkedList<Integer> list = new LinkedList<>(Arrays.asList(1,2,3,4,5));
list.get(3); //4; Object get(int index)
list.contains(3); //true; boolean contains(Object o)

list.remove(3); //true- 4가 삭제됨; Object remove(int index)
list.remove(Integer.valueOf(3)); //3, Integer 3이 삭제됨; boolean remove(Object o)
for(Integer i : list) System.out.print(i +" "); // 1 2 5

Q. HashSet 순서보장안됨 > 출력할때마다 매번 달라지나?

값을 추가하지 않고 조회하면 동일한 순서로 출력 됨

//HashSet<Integer> hashSet = new HashSet<Integer>(Arrays.asList(14,5,6,1,2,2,3,4,5,6,7,8,9));
HashSet<Integer> hashSet = new HashSet<Integer>(){{add(90); add(2); add(3);}};

for(Integer i : hashSet) System.out.print(i +" ");
System.out.println();

//값 추가
hashSet.add(10);
hashSet.add(1);
hashSet.add(100);
hashSet.add(189);
System.out.println("for1-----------------");
for(Integer i : hashSet) System.out.print(i +" ");
System.out.println();

System.out.println("it2-----------------");
Iterator<Integer> it = hashSet.iterator();
while(it.hasNext()) System.out.print(it.next() +" "); //값을 추가하지 않고 조회하면 동일한 결과
System.out.println();

hashSet.add(171);
hashSet.add(189);

System.out.println("it2-----------------");
it = hashSet.iterator();
while(it.hasNext()) System.out.print(it.next() +" ");
System.out.println();

Q. isInstaceof 뒤에 입력 String으로 받을 수 있는지

A. 불가. 이미 프로그램이 실행되는 시점에 인스턴스화 된 것과 런타임 시 입력받은 String 은 다른 값으로 처리됨

 

Q. 예외에서 제대로 처리못하면 다시 비정상 종료가 되는지???

A. 처리해야 하는 예외를 전부 처리하지 못하면 비정상 종료됨.

checked 예외는 throws 를 통해서 어떤 예외가 발생할지 확인할 수 있음.

이미 class로 적절한 예외를 분류되어 있고, 예외가 발생하면 예외를 처리하면 됨

 

Q. 강제 종료할 때 exit 1을 사용해도 되는지?

A. OS가 java프로그램을 실행시킬 때 main 메서드를 찾는 것처럼, 프로세스가 종료될 때 인터럽트 신호 (exit 0, 1 )를 os에게 넘기는 것. 런타임 상에 문제는 없는데, 프로그램이 종료된 이후에 OS가 로그 분석을 하게 될때 영향이 있음(System.exit 레퍼런스 참고)

 

Q. if else로 예외처리를 하는 것과 차이는?

'Coding > 언어-JAVA' 카테고리의 다른 글

JAVA 미니 프로젝트 : BurgerQueen  (0) 2023.08.17
JAVA 메서드 활용  (0) 2023.08.17
JAVA 스레드(Thread) #Day10  (0) 2023.08.17
JAVA 파일입출력(File I/O) #Day9  (0) 2023.08.17
JAVA 사용자 입출력(Scanner, Printf)  (0) 2023.08.17