Java
Java - comparable과 comparator에 대해
Java - comparable과 comparator에 대해
2023.03.07java에서 정렬을 할 때 빼고 이야기할 수 없는 객체가 Comparable과 Comparator입니다. 이 두 가지를 봤을 때 다른 점은 어렵지 않으나 java안에서 사용하고 구현하는 것이 쉽지 않고 당황스럽습니다. 저자는 백준 정렬 문제를 풀면서 한 번은 게시해야겠다고 느껴 Comparable과 Comparator에 대해 내가 공부하고 이해한 것을 최대한 쉽게 정리해서 올리려 합니다.. 보통 정렬 하면 어떤 것이 떠오르나요? 숫자로 된 배열을 정렬하는 방식이 떠오릅니다. 그리고 아래 코드는 제가 생각할 때 숫자를 정렬할 때 가장 많이 쓰이는 코드입니다. import java.util.Arrays; public class Main{ public static void main(String[] args) ..
Java로 구현한 Heap 자료구조(트리 구조)
Java로 구현한 Heap 자료구조(트리 구조)
2023.02.08이번 글에서는 Heap 자료구조에 대해 설명하겠습니다. 백준 알고리즘을 푸는 글이 많은데 알고리즘과 자료구조는 굉장히 깊은 관계가 있기 때문에 자료구조에 대한 공부 한 것을 종종 기록해 공유하도록 하겠습니다. 목차 더보기 1. Heap 자료구조란? 2. Heap 자료구조 자바 구현 1) Heap 자료구조의 생성자와 변수 2) Heap 자료구조의 인덱스 구하는 함수와 배열 길의 재정의 함수 3) Heap 자료구조의 노드 추가 함수 4) Heap 자료구조의 삭제 함수 3. Heap 자료구조 TEST 1. Heap 자료구조란? Heap 자료구조는 Heap 정렬에서 사용되는 자료구조입니다. 이번 글에서는 단순이 int형만 만들어지는 것이 아니라 객체도 만들 수 있도록 구현하도록 하겠습니다. 상당히 복잡한 부분도..
Java 기초 함수 - BigInteger(큰 정수)
Java 기초 함수 - BigInteger(큰 정수)
2022.03.23기본 환경 JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 목표 BigInteger를 사용해보고 관련 메서드를 이해한다. 코드 package One; import java.util.*; import java.math.*; public class Number1712 { public static void main(String[] args){ Scanner sc = new Scanner(System.in); BigInteger bigNum1 = sc.nextBigInteger(); BigInteger bigNum2 = sc.nextBigInteger(); System.out.println..
Java 기초 함수 - StringTokenizer
Java 기초 함수 - StringTokenizer
2022.03.09기본 환경 JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 목표 StringTokenizer의 대한 이해와 관련된 메소드를 사용한다. 코드 package pratice; import java.util.*; public class Algorithm { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); StringTokenizer stk = new StringTokenizer(s); while(stk.hasMoreTokens()) { System.out..
Java 기초 내부클래스(1)
Java 기초 내부클래스(1)
2020.12.17기본 환경 JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 목표 자바에서 제공하는 내부클래스를 이해한다. 코드 package ex14innerclass; /* 내부 정적 클래스 : 클래스 안에 정의하는 클래스로 static을 붙여준다. - 이와 같이 내부클래스를 static으로 선어하면 Nested 클래스라고 한다. - 정적 멤버변수 & 멤버메소드를 가질 수 있다. - 외부 클래스의 인스턴스형 멤버는 사용할 수 없다. - 외부 클래스명$내부클래스명.class 파일이 생성된다. ※원래 class 앞에는 static을 붙일수 없으나 내부 클래스에서는 허용된다. */ class Outer..
Java 기초 상속 - 연습문제(2)
Java 기초 상속 - 연습문제(2)
2020.12.14기본 환경 JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 시나리오 친구정보를 기록할 MyFriendInfo클래스를 상세정보를 기록할 MyFriendDetailInfo클래스에 상속하고 이름 나이는 MyFriendInfo클래스에 주소와 번호는 MyFriendDetailInfo에 입력할 수 있도록 구성하시오 다음과 같은 결과가 나와야 합니다. 정답 package ex12inheritance; //친구의 정보를 저장할 기본클래스 class MyFriendInfo { private String name; int age; public MyFriendInfo(String name, int ag..
Java 기초 상속 - 연습문제(1)
Java 기초 상속 - 연습문제(1)
2020.12.14기본 환경 JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 시나리오 Car클래스로 HybridCar 클래스를 상속해주고, HybirdCar클래스로 HybridWaterCar클래스를 상속해 주는 구조를 만드시오. (단, Car에는 gasoline변수를 생성자에서 초기화해주고 HybirdCar는 electric을 생성자에서 초기화해주고, HybridWaterCar클래스는 water변수를 생성자에 초기화 해주시오) 다음과 같은 결과가 나와야 합니다. 정답 package ex12inheritance; class Car { int gasoline; public Car(int gasoline)..
Java 기초 상속(8) - 다형성(이질화)
Java 기초 상속(8) - 다형성(이질화)
2020.11.30기본 환경 JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 목표 상속의 다형성(이질화)를 이해한다. 코드 package ex12inheritance; /* 다형성(Polymorphism) : 같은 타입의 참조변수를 통해 다양한 객체를 이요할 수 있는 특성을 말한다. 단, 객체간에는 상속관계가 있어야 한다. -부모의 참조 변수로 자식 객체를 참조 1. 이경우 부모타입의 참조변수는 부모로부터 상속받은 맴버까지만 접근가능하다. 2. 자식에게 오버라이딩한 메소드가 우선 호출된다. 3. 자식에게 새롭게 정의한 멤버에는 접근할 수 없다. -같은 타입의 클래스로 객체를 참조 1. 객체 전체를 접..
Java 기초 상속(7) - 전화번호부
Java 기초 상속(7) - 전화번호부
2020.11.30기본 환경 JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 목표 상속과 오버라이딩을 이용하여 효율적인 친구관리 프로그램을 만들어본다. 코드 package ex12inheritance; import java.util.Scanner; /* 친구를 표현한 최상위 클래스로 해당 프로그램에서는 Friend 클래스로 객체생성은 하지 않는다. 상속의 목적으로면 정의된 클래스이다. */ class Friend { // 멤버변수 String name; // 이름 String phone; // 번호 String addr; // 주소 // 생성자 public Friend(String name, Stri..
Java 기초 상속(6) - overriding
Java 기초 상속(6) - overriding
2020.11.26기본 환경 JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 목표 자바의 상속관계에서 사용하는 overriding에 대해 이해한다. 자바의 상속관계에서 사용하는 이질화에 대해 이해한다. 코드 package ex12inheritance; /* 오버라이딩(overriding) : 클래스가 상속관계에 있을때 하위 클래스에서 상위 클래스의 맴버메소드와 완전히 동일한 모양으로 제정의하는 것을 말한다. 오버로딩(Overloading)과 다른 점은 매개변수의 갯수, 반환타입 등이 완전히 똑같은 형태로 정의한다는 것이다. 하위 클래스에서 오버라이딩한 메소드는 상위클래스이 메소드를 가리게 되므로 항상..
Java 기초 상속(5) - 경찰과 총의 소유관계
Java 기초 상속(5) - 경찰과 총의 소유관계
2020.11.24기본 환경 JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 목표 경찰과 총의 관계를 이해하여 소유관계에 대해 이해한다. 이전 게시물과 비교하여 소유관계와 상속관계의 차이를 이해한다. 코드 package ex12inheritance; /* 구성관계로 표현하기에 적합한 Has-A관계 X has a Y => X과 Y를 소유(보유)하고 있다. - 경찰이 권총을 소유하고 있다. - 경찰이 수갑을 소유하고 있다. Has-A와 같이 소유의 관계를 상속으로 표현하면 클래스 간의 강한 연결고리가 형성되어 권총이 없는 경찰을 표현하기가 힘들어진다. 따라서 이 경우에는 구성관계로 표현하는 것이 적합한다..
Java 기초 상속(4) - 컴퓨터 상속 구조
Java 기초 상속(4) - 컴퓨터 상속 구조
2020.11.24기본 환경 JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 목표 컴퓨터와, 노트북, 테블릿피시로 상속으로 표현해보고 상속관계를 이해한다. 다음 게시물을 통해 상속과 소유 관계의 차이를 이해한다. 코드 package ex12inheritance; /* Is-A 관계 : X Is a Y => X는 Y의 일종이다로 표현가능 -노트북은 컴퓨터의 일종이다. -휴대폰은 전화기의 일종이다. 이와 같이 Is-A관계가 성립하는 객체를 상속으로 표현하기에 적합한다. */ /* 컴퓨터를 표현 : 기본적인 검퓨팅 환경을 제공하여 입력된 내용을 계산한다. */ class Computer{ String ow..