
Box 클래스 class Box //T도 String,int처럼 자료형이다. 메인절의 속에 있는 Integer처럼 위의 T로 올라가 자료형을 T에서 Integer로 바꾼다. b1.set 괄호속 10은 int 정수이기 때문에 stack영역인 int가 heap영역인 Integer로 간다. 즉, auto-boxing이다. 기본 타입이 wrapper클래스 변환된다 밑의 b1.get();은 Integer이므로 다시 int에 들어가는 auto-unboxing이 된다. Exception try - catch문을 통해 에러가 나와도 감추는 예외 처리를 할 수 있다. try { 조건문 } catch (Exception e) { System.out.println(e.toString()); } finally { 출력문} t..

ArrayList ArrayList 역시 List 인터페이스를 구현한 것이다. 값을 더하기 위해 lists.add("한국") 이런 식으로 값을 더할 수 있다. ListIterator Iterator 인터페이스를 상속받은 인터페이스 양방향으로 이동 가능하다 hasNext는 순서대로 나오지만 hasPrevious는 역순으로 출력된다. Map Map은 인터페이스이며 Hashtable, HashMap 클래스가 구현한다. Hashtable은 Vector처럼 동기화를 지원하기 때문에 속도가 느리며 HashMap은 ArrayList와 같이 동기화 지원하지 않아 빠르다. Iterator가 없기 때문에 Key의 Set에서 가져온다. Key Key는 중복값을 가질 수 없다 (중복을 허용하지 않는 인터페이스 Set때문) 중..

내부클래스 내부클래스는 총 4가지이다. 1. 클래스 안에 클래스를 두는 이너클래스 2. 메소드 안에 클래스를 두는 로컬클래스 3. static으로 만드는 클래스(중첩) 4. 익명의 클래스인 anonymous 클래스 로 표현할 수 있다. 이너클래스 class Outer { class Inner{ 이에 따라 outer클래스 내 메소드에서 inner클래스의 객체 생성을 할 수 있다. 메인절에서 이너클래스를 나타낼 때에는 먼저 outer의 객체 먼저 생성한 뒤, -> Outer out = new Outer(); 1. out.print(); //외부클래스가 갖고 있는 메소드 통해서 2. Outer.Inner in = out.new Inner(); //다이렉트로 이너클래스 부르는 2가지 방법으로 할 수 있다. Lo..

형변환 자료형, 상속관계 등의 형변환과 달리 클래스간에는 불가능하다 여기에서 b=a;를 했을 시, 각각의 데이터 타입이 다르기 때문에 불가능한 것이다. Upcast 자식인 ob1이 부모인 ob2에 들어가는 것이므로 upcast이다 SuperTest의 변수b는 20, SubTest의 b는 100일 경우, upcast를 기준으로 b의 변수가 달라지는 것을 알 수 있다 특히 메소드 영역은 upcast로 ob1이 ob2로 들어갔어도 자식것으로 출력된다 ob2.hap의 경우, 자식인 ob1이 들어갔기 때문에 자식 기준으로 값이 출력된다. downcast) ob2.print(); -> 부모의 메소드가 출력된다. 하지만 밑의 경우는 downcast로 자식의 메소드가 출력된다. ((SubTest)ob2).print()..

Wrapper 클래스 기본 자료형을 클래스화하여 사용하게 함 자료형은 메소드가 없다=명령어가 없다. 클래스만 메소드 지님 boolean, byte, char, short,int,long,float,double : 자료형 => Boolean,Byte,Character,Short,Integer,Long,Float,Double : 클래스 Auto-Boxing : 자료형 -> 클래스 변환(stack->heap) Auto-unBoxing : 클래스 -> 자료형 변환(heap->stack) num2는 new니까 heap영역에 생성된다 UP/DOWNCAST 상속관계의 형변환 부모 = 자식; -> UPCAST (CAST는 형변환을 의미한다) 자식 = 부모;(X) -> 자식=(자식i)부모; : DOWNCAST (자료형의..

상속 두 클래스는 부모가 서로 같아도 남남관계 -> 단일상속이므로 super는 생성자 내 선두에 위치해야 함(자신보다 부모가 더 먼저니까). 한번만 작성 override 어노테이션 반드시 ★상속관계★ 내에서 같은 역할을 하는 메소드명을 동일하게 하는 작업 메소드명은 부모 메소드명과 똑같아야 함 부모 클래스를 재정의해서 사용함 내용은 다르지만 출력 기능이 같으므로 메소드명을 write로 통일 -> 서로 다른 결과 (부모와 자식이 같은 것을 가지고 있으면 자식 자신 것을 사용) cf) 오버로딩 : 하나의 class 오버라이드: 상속관계 마우스로 오버라이드 기능 사용 : 오른쪽 마우스 -> Source -> override/~ 클릭 자식 클래스에서 하단에 추가로 super.write(); 는 부모의 메소드 출..
Call by value 데이터가 stack영역에서 Heap영역으로 넘어가는 것 Call by reference 같은 주소를 공유하는 변수 값을 넘길 때 객체의 시작하는 주소가 넘어감 상속 부모 생성자가 지닌 것은 자신도 지닐 수 있음 private 선언된 것은 상속 불가 protected 선언은 상속 가능 부모와 자식 클래스가 모두 같은 객체를 갖고 있으면 자신 것을 씀 class Test { private String str; private int area; public void set(String str, int area) { this.str = str; this.area = area; } class Circle extends Test { private int w,h; public void Circ..
private private int r; 책에서 주로 '정보의 은닉화'라고 부른다. public과 정반대인 의미 외부에서 다이렉트로 변수에 접근을 못하도록 -> 메소드를 통해 일명 우회도로를 만듦 public void set(int r) // set 혹은 setData 가능 //앞에 public을 해줘야 연결 가능. 값 바꿀 수 있도록 this private int r; public void set(int r) r = r; //이라고 하면 오류! r이 다 똑같이 인식되므로 --> this.r = r; //해줘야 함. this는 클래스 자기 자신을 지칭함. 변수가 같아서 혼란일 때 활용(주로 우회도로 시 사용) static 'new'를 사용하지 않아도 자동으로 메모리 할당된다. 객체가 1000개여도 메모리..
SubClass Class SubClass 로 시작하거나 메인 Class 하위로 놓을 수 있음 변수 a SubClass oj1 = new SubClass(); SubClass oj2 = new SubClass(); new에 의해 메모리 할당 객체 생성 100개 하면 메모리 할당도 100번 oj1.a = 10; System.out.println("oj1.a : " + oj1.a); --> 값인 10나옴 System.out.println("oj2.a : " + oj2.a); --> 0나옴(초기화 안해도 위의 'new'통해서 o) --> 변수는 메모리 공간 다름 return 메소드의 타입과 똑같아야 함 Class 클래스는 자료형 Public class Record { String 변수1; int[] 변수2 =..