본문 바로가기

자바4

[Java] 11. 예외처리(Exception) 상속구조, finally, throws 등장 배경 C언어 시절에는 예외처리를 if문(if, else if, else)으로 처리했다. 단점은 실행코드와 예외처리 코드가 지나치게 반복되고, 실행코드보다 예외처리코드가 훨씬 더 많아지게 되었다. 그러므로 코드의 가독성이 낮아지는 결과도 생겼다. 그래서 C++은 실행코드 영역과 예외처리 영역을 분리하는 예외처리 문법을 도입하였다. 자바는 C++을 모태로 탄생되었고, C++에 비해서 예외처리를 훨씬 더 강화해 설계하였다. 상속 구조 예외(Exception)와 에러(Error)는 모두 Throwable의 상속을 받는다. 예외는 내(프로그래머)가 짠 코드 상의 문제가 있는 것으로 코드를 수정하면 해결되고, 에러는 시스템 상에서 발생한 비정상적인 상황으로 프로그래머의 통제를 받지 않는다. Finally tr.. 2019. 3. 29.
[Java] 02. 배열의 복사(Arrays.copy) 배열 복사하는 방법 1. HashCode값 복사 (얕은 복사) scores의 해시코드 값이 scores1, scores2에 복사된다. 스택의 같은 공간에 접근함으로 힙에 담겨있는 값을 가져오게 된다. 따라서 기존 배열인 scores가 변경되었을때 이를 복사한 scores1, scores2에서도 변경된 값을 참조하게 된다. int[] scores = {100,85,95,65,75}; int[] scores1 = scores;// 해시코드 값이 복사됨(같은 공간을 참조) int[] scores2 = scores1;// 해시코드 값이 복사됨(같은 공간을 참조) for(int i=0;i 2019. 3. 15.
[Java] 01. nextInt(), nextDouble() 뒤에 nextLine() 사용 nextLine() 사용시 주의사항 nextInt(), nextDouble() 같은 메서드를 사용한 이후 String을 입력받기 위해 nextLine()을 사용하면 버퍼에 남아있는 \n(Enter값)을 읽어들이기 때문에 nextLine() 메서드가 바로 리턴해버린다.그러므로 nextLine()을 호출하기 전에 nextLine()을 한번 써주면버퍼에 있는 \n 읽어버리므로 그 다음 문자열이 잘 읽힌다. 수정 전 op = sc.nextLine(); 에서 \n을 읽어들여 연산자가 입력되지 않고 바로 리턴함. Scanner sc = new Scanner(System.in); double num0=0, num1=0, result=0; String op=""; System.out.print("1번째 숫자 입력: ".. 2019. 3. 13.
[Java] 00. 조건문, 랜덤 - 다이스게임 import java.util.Random; import java.util.Scanner; public class _03_diceGame { public static void main(String[] args) { System.out.print("1~6 정수를 입력하세요: "); Scanner sc = new Scanner(System.in); int userNum = sc.nextInt(); Random rd = new Random(); int comNum = rd.nextInt(6)+1; //0~5에서 1~6으로 구간조정 String result=""; if(userNum>comNum) result = "You Win"; else if(userNum==comNum) result = "Draw"; el.. 2019. 3. 13.