language
21 posts
🌿 [JAVA] PriorityQueue 정렬 왜 안돼?

PriorityQueue 정렬 왜 안돼? PriorityQueue 내림차순 정렬하는 법 근데 정렬 왜 안돼…? 위의 방법으로 정렬이 되긴하지만 정렬 결과를 보장하지는 않는다. 오로지 연산을 수행할 때 최솟값을 반환하는 것만을 보장할뿐! PriorityQueue 정렬 왜 안돼? PriorityQueue 내림차순 정렬하는 법 근데 정렬 왜 안돼…?

January 21, 2022
java
language
☕️ [JAVA] 전달인자(Argument)와 매개변수(Parameter), 그리고 자바의 Call by Value

Argument vs Parameter 전달인자와 매개변수 전달인자(Argument) 부모 함수에서 자식 함수를 호출할 때 자식 함수에게 전달하고자 하는 값 매개변수(Parameter) 부모 함수에서 자식 함수를 호출할 때 전달되는 값을 받기 위해 선언된 변수 💡 전달인자와 매개변수의 가장 큰 차이점은 전달인자는 값(value) 을 의미하고, 매개변수는 변수(variable)를 의미한다는 것! 일부는 “인자”라는 표현이 잘못되었고 “인수”라는 표현이 더 알맞다고 하는데 사실 인자냐 인수냐가 중요한 것이 아니라 “전달인자”와 “매개변수”의 차이를 아는 것이 더 중요하다. 예제 출력 결과 부모 함수인 메서드에서 자식 함…

October 03, 2021
java
language
☕️ [JAVA] Comparable과 Comparator 인터페이스

객체 크기를 비교해 정렬하기 - Comparable과 Comparator 인터페이스 Primitive Type(기본형 데이터 타입) : 더 이상 쪼개질 수 없는 원자성의 데이터이므로 그 자체로 크고 작음을 비교할 수 있음 Reference Type(참조형 데이터 타입) : 대상을 나타내는 복합체로 크고 작음을 비교하기 어려움 따라서 객체를 비교 가능한 타입으로 만들어줘야 함! Comparable 인터페이스 객체를 비교 가능한 타입으로 만들기 위해 인터페이스 타입으로 형변환 () Comparable 인터페이스의 메서드를 오버라이드하여 객체에 맞게 구현한 뒤 이 메서드를 호출하여 정렬 compareTo() compar…

August 11, 2021
java
language
☕️ [JAVA] 난수 생성하기

자바 난수 생성 1) Math.random() 방법 1 - Math 클래스의 클래스 메서드(static method)인 random() 이용하기 : 0.0 <= ? < 1.0 : 0.0 <= ? < N.0 : 0 <= ? <= N-1 : 1 <= ? <= N 2) Random 방법 2 - Random 클래스의 객체를 생성하여 Random 클래스의 인스턴스 메서드 이용하기 : 0 <= ? < N : 1 <= ? <= N 자바 난수 생성 1) Math.random() 2) Random

July 25, 2021
java
language
☕️ [JAVA] 동적 바인딩(Dynamic Binding)과 정적 바인딩(Static Binding)

상속과 다형성 - 동적 바인딩과 정적 바인딩 동적 바인딩과 정적 바인딩 정적 바인딩(Static Binding) 컴파일타임(Compile Time)에 선언된 객체의 타입에 따라 호출될 메서드를 인식 자바의 멤버 변수는 정적 바인딩이 적용되므로 다형성 특징을 이용하지 못함. 선언된 타입의 멤버 변수 접근 자바의 클래스 메서드(static method) 역시 정적 바인딩이 적용되므로 다형성 특징을 이용하지 못함. 오버라이딩된 자식의 메서드를 호출하는 것이 아니라 각각의 클래스에 별개의 메서드가 존재하는 것 동적 바인딩(Dynamic Binding) 런타임(Run Time)에 실제 생성된 객체 타입에 따라 호출될 메서드를 …

July 23, 2021
java
language
☕️ [JAVA] 다형성(Polymorphism)

다형성 정의 하나의 객체가 여러개의 형(타입)을 가질 수 있는 특징 상속을 전제로 함 상속 관계에 있을때 부모의 타입으로 자식 타입 객체를 참조(레퍼런스)할 수 있음 메서드 다중 정의(오버로딩), 메서드 재정의(오버라이딩)은 자바의 다형성 특징으로 가능함. 활용 다른 타입의 객체를 배열로 묶어 사용할 수 있음 다른 타입의 데이터를 하나의 배열로 관리 Object는 모든 클래스의 부모이므로 Object 배열은 어떤 타입의 객체도 다 저장할 수 있음 기본형 데이터 타입의 경우 객체가 아니므로 원칙적으로는 불가능하지만, Auto-Boxing을 이용해 Wrapper 클래스로 바꾸면 가능함 매개 변수의 다형성 메서드의 매개 변…

July 22, 2021
java
language
☕️ [JAVA] Java Garbage Collection

Garbage Collection(GC) 더이상 참조되지 않는 객체를 정리해주는 JVM의 기능 JVM 메모리 구조와 Heap 영역에서의 GC JVM 메모리 구조 JVM이 실행되면 메모리 구조를 다음과 같이 사용함. Heap 영역에서 이루어지는 GC GC는 Heap의 객체 중 필요한 것, 사용하고 있는 것을 따로 모아두고 더이상 사용하지 않는 것을 한꺼번에 처리 새롭게 생성된 객체는 Eden 영역에 존재 Eden 영역의 객체 중 살아남은, 사용하는 객체는 Survivor1로 이동 Survivor1 영역의 객체 중 살아남은, 사용하는 객체는 Survivor2로 이동 Survivor1과 Survivor2 영역은 서로 번…

July 19, 2021
java
language
☕️ [JAVA] java.util 패키지

java.util 패키지와 utility 클래스 Date 클래스 형식이 있는 날짜와 시간을 출력하는 클래스 Date 객체를 이용한 프로그램의 실행 시간 체크 Calendar 클래스 Date 클래스와 같이 날짜와 시간에 관한 정보를 출력할 때 사용. 단, Calendar 클래스는 추상 클래스이므로 직접 객체 생성 불가 -> 메서드를 이용하여 객체 생성 가능 Calendar 클래스의 객체 생성 Formatter 클래스 형식 문자열을 제공하고, 이 문자열에서 지정한대로 데이터가 형식화되어 출력됨(C언어의 와 같은 기능 제공) Formatter 클래스의 format들 데이터 타입별 format format 설명 %B, %b…

July 19, 2021
java
language
☕️ [JAVA] 예외 처리

자바의 예외 처리 다중 try-catch 블록과 finally 블록 throws 예약어를 이용한 예외 처리 사용자 정의 예외 처리 자바의 예외 처리 다중 try-catch 블록과 finally 블록 throws 예약어를 이용한 예외 처리 사용자 정의 예외 처리

July 08, 2021
java
language
☕️ [JAVA] 추상 클래스와 인터페이스

자바의 추상 클래스와 인터페이스 추상 클래스 추상 메서드 메서드의 구체적인 기능을 구현하지 않고 형태만 제공하는 메서드 자식 클래스에서 반드시 재정의하여 사용되기때문에 부모에서의 구현이 무의미한 메서드 구현부가 없다는 의미로 키워드를 사용하여 표현 메서드의 선언부(리턴타입, 매서드명, 매개변수)만 남기고 구현부({})는 세미콜론(;)으로 대체한 형태 추상 클래스 메서드의 시그니처(리턴타입, 매서드명, 매개변수)만을 정의하고 블럭({}) 내부의 기능은 구현하지 않은 메서드를 추상메서드라고 한다. 추상 메서드를 포함하고 있거나 설계상 의도적으로 추상 클래스로 만든 클래스 추상 메서드를 포함하고 있는 추상 클래스는 직접…

July 08, 2021
java
language
☕️ [JAVA] 자바 객체의 관계성과 Annotation

객체의 관계성과 주석(Annotation) 자바 클래스 및 객체 관계성 상속 관계 is a 관계 논리적으로 일반화가 가능할 경우 상속 가능 포함 관계 has a 관계 객체를 소유하는 개념 단일 상속의 한계를 극복 2개 이상의 클래스에서 특징을 가져오기 위해서는 하나의 클래스는 상속을 받고, 나머지 클래스는 멤버 변수로 사용(객체를 생성하여 활용)할 수 있음 사용 관계 use a 관계 일시적으로 의존해야하는 관계 사용해야할 객체를 인자로 받거나 지역변수로 생성함 주석(Annotation) 컴파일러, JVM, 프레임워크가 볼 수 있는 주석 메타 데이터가 삽입된 주석 @Deprecated 컴파일러에게 해당 메서드가 오래되어…

July 08, 2021
java
language
☕️ [JAVA] this와 super 예약어

this와 super this 예약어 non-static 영역에서만 사용 가능한 예약어로, 현재 실행중인 객체가 자기 자신을 가리킬 때 씀 this. 지역 변수(매개 변수 등)와 멤버 변수(인스턴스 변수)를 구분하여 객체 자신인 멤버 변수를 가리키는 목적 자기 자신의 객체를 메서드의 매개변수로 전달하거나 return 하기 위한 목적 멤버 변수가 현재 클래스에 존재하지 않는다면 부모 클래스에서 찾음 this() 생성자 내부에서 자신의 또 다른 생성자(오버로딩된 생성자)를 메서드처럼 호출하여 사용할 때 자신의 또 다른 생성자(오버로딩된 생성자)를 가리키는 목적 오버로딩된 생성자가 없다면 사용 불가 생성자 내에서 가장 상위…

July 07, 2021
java
language
☕️ [JAVA] 메서드 Overloading과 메서드 Overriding

메서드 Overloading과 메서드 Overriding 메서드 Overloading 하나의 클래스에 동일한 이름의 메서드가 여러개 중복 정의되는 것(단, 변수의 중복 정의는 불가능) 매개변수의 개수와 타입 혹은 순서만 다르다면 동일한 이름의 메서드라도 다른 기능을 수행할 수 있다는 개념 메서드 Overloading 조건 조건 가능 여부 매개변수의 개수와 타입이 다른 경우 O 리턴 타입이 다른 경우 X 매개변수의 이름이 다른 경우 X 매개변수의 개수와 타입이 같지만, 순서가 다른 경우 O 매개변수가 형변환된 다른 타입인 경우 O 생성자 Overloading 클래스로부터 객체를 생성할 때, 필요한 변수만 적절히 조합하여…

July 07, 2021
java
language
☕️ [JAVA] 상속(Inheritance)

자바의 상속 상속 기존 클래스로부터 새로운 내용을 덧붙이거나(확장), 내용의 일부를 바꾸어 사용(재정의, 오버라이딩)하는 것 장단점 코드 재사용, 유지 보수성 향상, 확장의 용이함, 개발 시간 및 비용 감축 효과 그러나 과도하게 결합될 수 있다는 단점 존재 조건과 특징 논리적으로 “자식 is a 부모” 관계가 성립할 때만 상속 가능 자바에서는 중복된 변수명 사용을 막는 등 개발의 편의성과 가독성을 위해 문법적으로 단일상속만을 허용함(이를 극복하기 위해 ‘인터페이스’와 ‘has a’관계 활용 가능) 별도로 선언 없는 클래스는 모두 가 생략됨. 즉, 모든 클래스는 Object 클래스를 상속받고 있음. 상속과 생성자 상속…

July 07, 2021
java
language
☕️ [JAVA] 자바 Modifier

Modifier 자바의 Modifier static 예약어 인스턴스 변수와 클래스 변수 인스턴스 변수 클래스로부터 객체가 생성될 때마다 각 객체의 변수들이 생성됨 한 객체의 값이 변경되어도 다른 객체의 값에 영향을 미치지 않음 객체별로 다른 변수값을 지정해야 할 때 사용 클래스 변수 클래스로 생성된 모든 객체가 하나의 클래스 변수를 공유함 객체가 생성될 때 메모리 영역을 할당하지 않고, 클래스가 로딩되는 최초에 메모리에 한 번만 할당됨 를 사용한 변수가 클래스 변수에 해당됨 객체를 생성하지 않고도 클래스 이름을 통해 클래스 변수에 접근 가능 클래스 메서드 static 예약어를 사용한 메서드 객체를 생성하지 않고도 호…

July 07, 2021
java
language
☕️ [JAVA] 클래스 작성

클래스의 작성 (1) 패키지 선언문 0개 또는 1개 존재(한 클래스는 여러 패키지에 속할 수 없음) 유일한 패키지명을 위해 보통 domain 이름의 역순으로 패키지를 설정 폴더, 네임스페이스 개념 (2) import 또는 0개 또는 다수개 존재 현 클래스에서 참조하는 클래스가 자신과 같은 패키지가 아닌 경우 명시(단, 패키지는 자동으로 import됨) 형태로 사용 의 경우 모든 클래스와 인터페이스를 import함 (3) class 정의 * ’ ‘의 경우 생략 가능함 1개 또는 다수개 존재 접근지정자 : , 만 올 수 있음 활용지정자 : final, static 등 클래스 이름 명명규칙 : 명사형 + 대문자형…

July 06, 2021
java
language
☕️ [JAVA] 클래스 구조와 생성자

클래스의 구조와 생성자 클래스 구조 객체의 속성와 행위를 추상화하여 클래스에 정의된 것이 변수와 메서드임 1. 멤버 변수 변수는 클래스 변수와 인스턴스 변수로 구분됨 클래스 변수 클래스의 상태 클래스가 로딩될 때 메모리의 에 단 한번 생성됨. 즉, 같은 클래스 객체는 같은 클래스 변수를 공유함. 또한 인스턴스 변수와 달리 객체 생성() 시 heap 영역에 생성되지 않음. 인스턴스 변수 non-static 객체의 상태 객체 생성() 시 메모리의 에 생성되는 인스턴스 변수. 즉, 객체별 다른 값을 가짐. 2. 멤버 메서드 클래스 메서드 클래스 관점에서의 행위 객체 생성 및 식별하지 않고도 실행할 수 있는 작업들 메서…

July 06, 2021
java
language
☕️ [JAVA] 객체지향 핵심 개념

객체지향 핵심 개념 객체지향의 개념 객체지향(OOP, Object Oriented Programming)의 등장 배경 1960년대 말, ‘소프트웨어 위기론’이 등장 시스템을 구성하는 각각의 기능들이 독립적인 모듈로 개발된 하드웨어와 달리 모듈화가 되지 않은 소프트웨어에 대한 불편함이 제기됨 -> 소프트웨어의 모듈화 요구(객체지향 패러다임) 절차지향 프로그래밍과 객체지향 프로그래밍 절차지향 프로그래밍 실행되는 순서가 위에서부터 아래로 순차적으로 진행되는 형태를 가진 언어 프로그램 재사용 시 기존에 만들어진 코드를 복사하여 붙여넣기 하는 방식을 사용 모듈화를 시도한 함수 기반 절차지향 프로그램의 경우 데이터와 함수 간 유…

July 06, 2021
java
language
☕️ [JAVA] 자바 연산자 및 배열

JAVA 연산자 및 배열 자바 연산자 논리 연산자 boolean 데이터 타입(논리형)에 적용되며, 결과값으로는 true 또는 false 값을 가짐 and(&), or(|), not(!) 연산자를 제공함 연산자 사용법 설명 & A & B A와 B 인 경우만 를 리턴 && A && B - A와 B 모두 true인 경우 true를 리턴 - 단, 인 경우 를 리턴 | A | B A나 B 중 라면 를 리턴 || A || B - A와 B 모두 true인 경우 true를 리턴 - 단, 인 경우 를 리턴 ! !A A가 , 변경 자바의 배열 같은 데이터타입의 집합 Non-Primitive Type Data(Reference T…

July 06, 2021
java
language
☕️ [JAVA] 자바 식별자와 예약어 및 데이터 타입

JAVA 식별자와 예약어 및 데이터 타입 식별자와 예약어 식별자 생성 규칙 첫 문자는 A-Z, a-z, _, $, 유니코드로 시작해야 함 특수문자 사용불가(!, @, #, %, &, * 등) 대소문자를 구별하고, 길이에 제한이 없음 예약어를 포함할 수 있으나, 예약어만을 사용할 수 없음 숫자를 사용할 수 있으나, 첫 문자에는 숫자 사용 불가 클래스 이름은 대문자, 메서드 이름은 소문자, 변수는 소문자, 상수는 대문자로 시작 예약어 시스템에서 일정 특성을 가진 언어로 등록된 것으로 데이터 타입이나 프로그램 정의를 위해 사용됨 자바의 모든 예약어는 소문자로 이루어짐 자바 데이터 타입 Primitive Type(기본형) 할…

July 06, 2021
java
language
☕️ [JAVA] 자바 언어 및 자바 프로그램 개요

JAVA 언어 개요 자바의 특징 단순함 Java Garbage Collector에 의한 자동 메모리 관리 객체지향적(Object-Oriented) 언어 코드와 객체의 재사용 클래스 라이브러리 API의 다양성 분산 처리에 용이함 분산 환경에서 TCP/IP 네트워크 프로토콜을 통해 통신 가능 원격 메서드 호출(RMI, Remote Method Invocation) 라이브러리 제공 컴파일 언어인 동시에 인터프리터 언어임 소스코드(.java 파일) -> 컴파일(javac) -> 바이트 코드의 중간코드(.class 파일) -> 기계어로 해석 -> 실행 플랫폼 독립적임 Write Once Run Anywhere 자바 컴파일러와 …

July 05, 2021
java
language