본문 바로가기

java12

Kotlin 중급 기초_확장 함수 확장 함수란?기존에 정의되어 있는 클래스에 함수를 추가하는 기능이다. Java에서는 클래스를 상속받아 필요한 메서드를 추가함으로써 새로운 기능을 가진 커스텀 클래스를 만들어야 한다. 하지만 Kotlin에서는 기존 클래스에 함수를 간단하게 추가할 수 있는 방법을 제공한다.fun main() { Test().hi()}//Test 클래스에 함수를 추가하는 코드fun Test.hi() = println("하이")class Test() { fun hello() = println("안녕") fun bye() = println("잘가")} 2025. 1. 15.
Kotlin 중급 기초_람다 사용법 kotlin에서 람다 사용법을 소개하겠다. 객체지향 프로그래밍에 익숙한 사람들은 다소 생소할 수 있다. 1.  람다식이란? 람다식은 익명함수이다. 함수에 이름이 없다는 뜻이다. 하나의 변수처럼 사용될 수 있다. 이 말은 곧 함수의 argument가 될 수도 있고, 반환 값이 될 수 있다. 한 번만 사용되고 재사용되지 않는 함수를 사용할 때 람다식을 많이 사용한다. 2.  람다식 사용 방법// 예시1fun main() { val a = fun(){ println("Hello World!") } }//예시2fun main() { val b : (Int) -> Int = { it * 10 } //(arg1, arg2) -> return type = { 구현부 }}//예시3fun main() {.. 2025. 1. 15.
[JAVA] 배열 크기가 고정적인 이유, ArrayList 길이가 가변적인 이유 배열 크기가 고정적인 이유 배열의 크기가 고정적인 이유는 메모리 할당 방식과 배열 요소에 대한 주소 계산 방식과 밀접하게 관련되어 있다. 데이터는 메모리에 연속적으로 할당되며, 배열의 각 원소는 해당 데이터 타입의 크기만큼 메모리 공간을 차지한다. 데이터는 인덱스 값에 따라 순서대로 배치된다. 예를 들어, 아래의 int 타입의 배열이 있다.여기서 참조변수 a는 배열의 첫 번째 원소의 메모리 주소를 참조한다. 그리고 각 인덱스 값들은 배열의 시작 주소인 a를 기준으로 오프셋(offset, 기준 위치에서 특정 요소까지의 거리)을 계산하여 참조하게 된다. 이 방식 덕분에 배열의 요소에 접근할 때 순차적으로 찾지 않고 바로 해당 요소의 주소를 계산하여 빠르게 접근할 수 있다.int[] a = {1, 2, 3, .. 2024. 10. 29.
[JAVA] 상속, 메소드 오버라이딩, 형 변환 상속이란?자식 클래스가 부모 클래스의 기능을 그대로 물려받을 수 있는 기능 super자식 클래스에서 부모 클래스의 멤버에 접근할 때 사용한다.단, 부모 클래스의 private 접근 제어자를 가진 메소드를 자식 클래스에서 호출하는 것은 불가하다.(private 접근 제어자를 가진 변수나 메소드는 선언되어 있는 해당 클래스 내에서만 호출 가능하다.)super( ) 자식 클래스에서 부모 클래스의 생성자 호출을 의미한다.super()는 자식 클래스의 생성자 안에서 가장 첫줄에 선언되어야 한다.부모 클래스에 기본 생성자(매개 변수가 없는 생성자)가 없고, 매개 변수가 있는 생성자만 있을 때, 자식 클래스에서 기본 생성자를 사용하려고 하면 에러가 발생한다.왜냐하면 자식 클래스는 기본적으로 super()를 통해 부모.. 2024. 10. 22.
[JAVA] 패키지 패키지란?패키지(package)는 클래스들을 구분 짓는 폴더와 비슷한 개념이다. 자바를 개발할 때 클래스들을 분류하지 않으면 이름이 중복되거나, 어떤 클래스가 어떤 일을 하는지 혼동되는 일이 발생한다. 그래서 존재하는 것이 패키지다. 패키지 제약사항소스의 가장 첫 줄에 있어야 한다.(패키지 선언 위에 주석이나 공백은 있어도 상관없다.)패키지 선언은 소스 하나에는 하나만 있어야 한다.패키지 이름과 위치한 폴더 이름이 같아야 한다.(해당 파일이 존재하는 위치와 동일하게 패키지를 지정해야 한다.) 패키지명 유의사항패키지명은 모두 소문자로 지정해야 한다.자바의 예약어(int, static 등)가 패키지명에 들어 있으면 안된다.상위 패키지를 import하더라도 서브 패키지의 클래스를 사용할 수 없다.(예를 들어 .. 2024. 10. 22.
[JAVA] 메소드 오버로딩 메소드 오버로딩메소드의 이름을 같도록 하고 매개 변수(종류, 갯수, 순서)만을 다르게 하는 것public class Example { public void print(int data) { } public void print(String data) { } public void print(int data1, String data2) { } public void print(String data2, int data1) { } } 메소드 오버로딩의 이점System.out.println() 메소드. 이 메소드의 매개 변수로, int만 넘겨줘도 되고, long만 넘겨줘도 되고, String만 넘겨줘도 된다. 이것이 바로 오버로딩의 이점이다."같은.. 2024. 10. 20.
LIST