레퍼런스 형변환 - 레퍼런스 타입끼리의 형변환(상속 관계에서만 사용 가능) - 레퍼런스(변수)를 사용하여 다른 타입의 인스턴스(객체)를 참조하기 위해 변환 업캐스팅 서브클래스의 인스턴스를 슈퍼클래스 타입으로 변환, 자동형변환이 일어난다 다운캐스팅 슈퍼클래스의 인스턴스를 서브클래스 타입으로 변환, 명시적(강제)형변환을 해야한다. 실행시점에서 오류 발생할 수 있음. 사실상 업캐스팅이 이전에 되어야만 가능하다. public class 연습 { public static void main(String[] args) { A a = new A(); B2 b2 = new C4();// 업캐스팅 a = b2;// 업캐스팅 b2 = (B2)a;// 다운캐스팅 } } class A {} class B1 extends A{}..
super 인스턴스의 주소를 저장하는 참조변수 - this는 자신의 인스턴스 주소 저장, super는 부모의 인스턴스 저장 - 서브클래스에서 슈퍼클래스의 은닉된 멤버에 접근할 수 있다. 1. 변수명만 지정했을 경우 현재 선언된 메서드 내에서 먼저 탐색 > 자신의 멤버변수에서 탐색 > 부모의 멤버변수에서 탐색 2. this.변수명을 지정했을 경우 자신의 멤버변수에서 탐색 > 부모의 멤버변수에서 탐색 3. super.변수명을 지정했을 경우 부모의 멤버변수에서 탐색 class 할아버지 { String name2 = "할아버지"; } class 아버지 extends 할아버지 { String name = "아버지"; } class 나 extends 아버지 { String name = "나"; public void..
상속 class 서브클래스명 extends 슈퍼클래스명 {} 슈퍼 클래스의 멤버(멤버변수, 메서드)를 서브 클래스가 물려 받는 것! - 중복 코드 사용 방지, 유지보수에 용이 - private 접근제한자 적용 시 상속 대상에서 제외된다. - 생성자는 상속되지 않는다. - 자바는 단일 상속만 지원한다. 메서드 오버라이딩 상속받은 메서드를 서브클래스에스 재정의하는 것! - 서브클래스에서 오버라이딩 수행 후에는 슈퍼클래스의 메서드는 은닉된다. public class Px1 { public static void main(String[] args) { Dog a1 = new Dog(); a1.name = "바둑"; a1.age = 3; a1.Cry();// 멍!, 바둑 : 3 Ham a2 = new Ham(); ..
콘솔 창에 직접 값을 입력할 수 있고 출력이 가능하다. import java.util.Scanner; public class scan1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String name; int score; name = sc.next(); score = sc.nextInt(); System.out.println(name +" : "+ score); } }
싱글톤 static으로 객체의 인스턴스가 한 개만 생성되는 디자인 패턴 인스턴스(객체) 가 절대적으로 한 개만 존재하는 것을 보장하고 싶을 때 사용 장점 메모리 방지 낭비 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터 공유하기 쉬움 안드로이드의 경우 주요 클래스들을 전달하기 번거로운데 싱클톤 클래스로 어디서나 접근하도록 설계 문제점 너무 많은 데이터를 공유시키면 유지보수와 테스트가 어려움(결합도가 높아지기 때문) 멀티쓰레드 환경에서 동기화처리를 안하면 인스턴스가 두 개 생성될 수 있음 public class Px6 { public static void main(String[] args) { Normal n1 = new Normal(); Normal n2 = new Normal(); Syste..
static은 클래스가 로딩될 때 메모리에 로딩 Heap 공간이 아닌 Method area란 공유영역에 변수가 생성되어 모든 인스턴스가 하나의 변수를 공유 public class Qx1 { public static void main(String[] args) { EmployeeNo e1 = new EmployeeNo("김"); EmployeeNo e2 = new EmployeeNo("이"); EmployeeNo e3 = new EmployeeNo("박"); EmployeeNo e4 = new EmployeeNo("조"); e1.empInfo();// 103. 김 e2.empInfo();// 106. 이 e3.empInfo();// 109. 박 e4.empInfo();// 112. 조 } } class E..
int[] arr = {1, 2, 3, 4, 5}; int min = Integer.MAX_VALUE; for(int i = 0; i min ? min : arr[i]; } System.out.println(min);// 1 min에 넣어둘 값을 임의로 정하기보다는 정수형 int 의 가장 큰 값을 나타내는 Inteager.MAX_VALUE 사용 Math.abs 절대값 메서드 int a = 3; int b = 6; System.out.println(a-b);// -3 System.out.println(Math.abs(a-b));// 3
자바 자료형 HashSet 중복된 원소를 허용하지 않는 집합(Set)의 성질을 가진 클래스 순서 중요치 않음 ArrayList 크기가 가변적으로 변하는 선형리스트의 성질을 가진 클래스 순서가 중요(인덱스를 통해 접근 가능) LinkedList 데이터를 저장하는 노드가 이전 노드와 다음 노드의 상태를 알고 있는 링크드 리스트 자료구조를 구현한 클래스 HashMap 키와 값으로 구성된 객체를 저장하는 구조로 되어있는 자료구조를 구현한 클래스 ArrayList - 크기가 고정인 배열에 반해 조절 가능하다(가변적으로 변하는 선형리스트) - 순서가 중요(인덱스를 통해 접근이 가능) - 데이터타입 생략 가능 - length => size List 변수명 = new ArrayList(); ArrayList 변수명 =..