

문자열을 누적하여 추가하거나 하면 객체를 새로 생성하게 된다.StringBuffer 혹은 StringBuilder 를 사용한다.StringBuffer , StringBuilder 는 수정하는 만큼 줄어들고 늘어나기 때문에 용량이 변화하여 새로운 객체를 생성하지 않는다.

다수유저 동시 접근은 쓰레드에서 배우게 된다.
에러(Error) : 문법을 실수하거나 메모리 사용 문제로 실행에 문제가 생겨 발생하는 오류 -> 실행 자체가 안됨예외(Exception) : 사용자가 실수하여 조작을 잘못하거나 외부 환경이 받혀주지 못하는 등의 외부 문제로 인해 발생하는 오류

일반예외 : 자바에서 미리 알려줌 (Exception)실행예외 : 실행해봐야 알 수 있는 예외. (Runtime Exception)
NullPointerException : null 이 담긴 데이터에 메소드를 호출하려는 등 무언가 하려고 했을 때 발생하는 예외.ArrayIndexOutOfBoundsException : 배열의 크기보다 더 많은 갯수의 값이 들어와 수용할 수 있는 범위를 벗어났을 때 발생하는 예외NumberFormatException : 숫자 형태가 아닌 문자열을 숫자로 변환 하려고 할 때 발생하는 예외ClassCastException : 예를 들어 다형성에 의해 부모클래스 타입의 변수에 자식객체를 할당한 뒤 다시 자식객체 타입으로 돌아가려고 할 경우try-catch 와 throws 가 있다.


예외는 여러개 발생 할 수 있다.
이 때 한개씩 catch 문을 쓸 수도 있지만, 한번에 catch 로 받을 수 있는 multi catch 가 JDK 1.7 부터 지원이 된다.

이외에도 매개변수의 다형성을 이용하여 부모클래스인 Exception e 를 넣어 각각의 예외 타입을 받을 수도 있다.

책임을 떠넘기는 것이다.프로그램 시작점까지 throws 를 할 경우 , JVM 에서 처리하여 예외 내용을 콘솔로 출력하게 된다.기존 예외 이외에도 새로운 예외를 만들 수 있다.
반드시 일반예외는 Exception 을 상속하고
실행예외는 RuntimeException 클래스를 상속받아야 한다.



throw new 만든 예외(); 를 사용하면 예외를 강제로 발생시킨다.
여기서는 입력한 아이디가 설정해둔 예약어와 동일하면 작성한 예외를 발생시켰고,
나이가 20 미만으로 체크할 경우에는 작성한 성인예외를 발생시키고
throws 를 통해 던졌다.

예외를 발생시키는 JoinModel 객체를 생성하여 reservedCheck 메서드를 실행한다.
이때 예악어예외가 발생 시 e.printStackTrace() 로 에러를 자세히 추적해주는 메서드를 사용한다. ( 개발 시에만 사용하고 완료되면 지워주기 )
또 입력한 아이디는 예악어라는 경고 메세지도 보내준다.
일반 예외인 성인 예외도 JoinModel 객체의 adultCheck 메서드를 실행한다.
이때 throws를 통해 던진 NumberFormatException 발생 하면 숫자 입력하라는 경고 메세지를 보내준다.
만들어진 예외인 AdultException 이 발생할 경우엔 마찬가지로 e.printStackTrace() 로 에러를 추적해주고 경고 메세지를 보내준다.