java 72

[Java]배열과 List컬렉션 객체 정렬하기

이번 포스팅에서는 배열이나 컬렉션(List계열만)에 저장된 객체(데이타) 정렬하는 법을 알아보자 우선 배열과 컬렉션(List계열만)에서의 각각의 오름차순과 내림차순을 사용하는 법은 아래와 같다. 주의사항은 배열의 타입 혹은 List계열 컬렉션에 저장된 객체의 타입은 반드시 Comparable인터페이스를 상속받고 compare()를 오버라이딩 해야한다는 것이다! 참조형클래스들은 기본적으로 Comparable인터페이스를 상속받고있다. 예제를 직접보는것이 이해하는데 훨씬 도움이 될 것이다. 먼저 배열 예제부터 보자. ▲ String타입의 배열을 생성하고 초기화도 하였다. 방법1)은 아주 심플한 방법이다. 방법2)는 현재 String타입의 배열이기 때문에 Comparable인터페이스를 자동상속 받은 상태이다. ..

Java 2022.03.17

[Java]Collection - Set계열(HashSet)

Collection이란? : : 메모리 기반의 객체 저장소이다. Collection의 특성 컬렉션은 heap영역에 생성된 여러 객체들의 주소값을 컬렉션 메모리에 담는다. 컬렉션은 인스턴스화된 객체를 저장하는 자료구조이다. 컬렉션은 객체의 주소값을 저장해 해당 객체를 저장, 삭제, 검색, 수정 등이 가능하다. 컬렉션은 곧 인터페이스이다. 따라서 컬렉션을 상속받은 클래스를 컬렉션 클래스라고 한다 Collection의 주요 메소드 int size() collection에 저장된 객체의 갯수 리턴 boolean isEmpty() collection 객체가 비어있으면 true, 아니면 false반환 boolean add(Object obj) 객체 추가. 성공시 true반환 boolean remove(Object ..

Java 2022.03.16

[Java]인터페이스(Interface)

인터페이스(Interface)란? : 클래스가 객체의 설계도라면 인터페이스는 클래스의 설계도라 할 수 있다. 인터페이스의 성질 자바는 단일상속이 원칙이나 인터페이스를 이용해서 하나의 클래스에 다중상속을 구현할 수 있다. 추상클래스처럼 상속이 목적으로 상속받은 클래스는 추상메소드를 오버라이딩해야 하기 때문에 동일한 API를 사용할 수 있다. 인터페이스의 맴버로는 추상메소드와 상수로만 구성된다. 인터페이스의 접근지정자는 public과 default만 가질 수 있다. modifier는 가질 수 없다. 인터페이스에 있는 추상메소드는 public과 abstract키워드를 생략한다.(붙여도 되긴 된다) 인터페이스의 상수 또한 public static final을 생략해도 컴파일러가 자동으로 붙여준다. 자식의 오버라..

Java 2022.03.16

[Java]추상클래스(Abstract Class)와 추상메소드(Abstract Method)

추상 메소드란? 메소드 앞에 abstract키워드가 붙은 것 메소드 원형만 있고 구현부가 없는 것 형식] 접근지정자 abstract 반환타입 메소드명(매개변수); - 여기서 매개변수는 선택사항이다. 추상메소드의 궁극적인 목표는 오버라이딩이다. 추상 클래스의 성질 class앞에 abstract (modifier)를 붙이면 그 클래스는 추상 클래스가 된다. 어떤 클래스가 추상메소드를 가지면 그 클래스를 반드시 추상 클래스로 만들어줘야 한다. 단, 추상 메소드가 없어도 class 앞에 abstract만 붙이면 추상 클래스가 될 수 있다. 추상 클래스는 인스턴스화 할 수 없다. 즉, 메모리에 객체를 생성할 수 없다 . 즉, new연산자로 메모리를 할당할 수 없다. 구현부가 없기 때문에 구현할 수 없기 때문이다...

Java 2022.03.16

[Java]Object Class

Java의 모든 클래스의 최상위 부모는 Object클래스이다. Object클래스의 toString()메소드는 객체의 주소를 String타입으로 반환해주는 메소드이다. => 패키지명.클래스명@주소(16진수) 형태로 주소를 반환한다. Object클래스의 equals()메소드는 두 객체간의 주소값을 비교해서 같으면 true 다르면 false를 반환한다. => 비교클래스의 인스턴스변수.equals(대상클래스의 인스턴스변수) 형태 예제를 보면서 알아보자. ▲ MyClass라는 클래스를 만들고 맴버로 data와 인자생성자 하나를 생성했다. ▲ Object클래스에서 주소값을 반환하던 toString()메소드와 주소값을 비교하던 equals()메소드를 오버라이딩하여 주소값이 아닌 실제 데이터값을 출력하고 비교하는 메소..

Java 2022.03.15

[Java]Heterogenious(이질화) & Homogenious(동질화)

Homogenious(동질화)란? 같은 타입의 인스턴스 변수에 같은 타입의 메모리 주소를 저장 예) Student st = new Student(); Heterogenious(이질화)란? 부모타입의 인스턴스 변수에 자식타입의 메모리 할당해서 그 주소를 저장 [전제조건] 두 클래스 사이에 상속관계가 존재해야한다. 예) Person person = new Student(); 부모타입의 인스턴스 변수가 접근 할 수 있는 범위 1. 부모로부터 상속받는 맴버 2. 자식에서 오버라이딩한 메소드가 우선 호출된다. ※ 자식에서 새롭게 정의한 맴버는 접근불가하다! (오버로딩한 메소드도 포함!) 헤테로 지니어스의 장점 메소드의 매개변수를 부모타입으로 정의시 모든 자식타입을 저장할 수 있음으로 자식클래스 수만큼 메소드를 오..

Java 2022.03.15

[Java]InstanceOf

InstanceOf 연산자란? 두 클래스간의 형변환이 가능한지 판단하는 연산자 해당 인스턴스 변수가 어떤 타입의 변수인지 판단하는 연산자 두 클래스간의 상속관계가 있어야 한다. 즉, is a 관계가 성립한다. 해당 인스턴스변수가 해당 타입이면 true, 아니면 false를 반환한다. [형식] 1) 두 클래스 간 상속관계가 존재 하지 않을 때 ▲ String과 StringBuffer는 서로 아무 관계도 아니기 때문에 상속관계도 아니다. 따라서 서로 형변환이 불가하다. 하지만 두 클래스 모두 Object클래스를 상속받고 있기 때문에 Object클래스와는 상속관계에 있다. ▲호모 지니어스 방식에서 Object타입인 obj는 String클래스의 부모클래스이다. 부모 즉, 큰 그릇의 내용물을 자식 즉, 작은그릇의..

Java 2022.03.15

[Java]오버라이드(Override)

오버라이딩(Overriding)이란? : 상속시에 적용되는 개념 즉, 부모로부터 상속 받은 메소드를 재정의해서 사용하는 것을 말한다. 오버라이딩 규칙 메소드명이 동일해야 한다. 메소드의 매개변수 갯수, 데이터타입, 순서 및 반환타입이 모두 같아야 한다. 부모 메소드의 접근 지정자가 public이거나 protected인 경우에만 오버라이딩이 된다. 부모메소드가 default 지정자나 private지정자를 가진 메소드를 오버라이딩 한 경우 자식 고유의 메소드로 처리된다. 오버라이딩의 개념을 예제로 알아보기위해 부모와 자식클래스를 각각 만들어보자. ▲ Parent메소드의 맴버변수와 기본생성자, 인자생성자를 만들자. ▲ 각각의 메소드를 만들면서 접근지정자를 모두 다르게 설정해서 만들었으며, static메소드와 ..

Java 2022.03.15

[Java]Super() - 부모의 기본생성자

super키워드란? 부모클래스를 지칭한다. 즉, 부모 클래스의 맴버(인스턴스형, 메소드)에 접근할 때 사용한다. 자식클래스와 부모클래스의 맴버명이 동일할 때 구분해주기 위한 키워드(this와 동일) 정적메소드안에서 사용불가하다(this와 동일) super() 부모의 생성자 호출 자식의 생성자 안에서만 호출가능하다 this()와 super() 동시호출 불가하며 자식의 생성자(기본, 인자)에서는 super()로 명시하지 않으면 무조건 먼저 부모의 기본 생성자를 호출한다. super()역시 항상 첫문장으로 기술 super() 를 사용해보기 위해 동물로 예제를 들어보겠다. ▲ 부모클래스가 될 Animal을 추상화 해주었다. ▲ Animal을 상속받을 Dog클래스를 만들었다. 기본생성자와 인자생성자를 만들어 주었..

Java 2022.03.14