목록Programming/JAVA (25)
프로그래밍 공부
배열(Array) 선언 방법int[] arr = {1,2,3};int[] arr = new int[5];// n개 생성int n = 5;// 길이가 5인 정수형 배열 생성int[] array = new int[n];배열 전체 출력 방법import java.util.Arrays;// 배열 내용을 반환Arrays.toString(arr);유용한 함수import java.util.Arrays;// Array.fill(arr, n)함수 배열 전체의 값을 n으로 채움Arrays.fill(arr, 100);// Arrays.equals 메서드는 두 배열의 길이와 요소를 비교Arrays.equals(arr1, arr2); // Arrays.sort() 요소를 오름차순으로 정렬Arrays.sort(arr);// 내림차..
추상 클래스와 인터페이스는 둘 다 자바에서 객체지향 프로그래밍의 중요한 개념으로클래스 간의 공통된 행동을 정의하고 재사용할 수 있게 해준다.하지만 두 개념은 설계 목적과 사용 방식에서 차이가 있다. 언제 추상 클래스를 사용하고, 언제 인터페이스를사용하는지에 대한 가이드는 다음과 같다.1. 상속 관계와 목적추상 클래스:is-a 관계를 나타낼 때 사용. 상속받는 클래스들이 공통된 속성과 행동을 가질 때 적합.클래스를 만들 때 일부는 구현하고 일부는 추상 메소드로 남겨서, 상속받는 클래스에서 구체적으로 구현하도록 하고 싶을 때 사용.일반적으로 기본적인 동작이나 상태(필드)를 여러 클래스에 걸쳐 공유하고자 할 때 사용.예를 들어, 모든 동물들이 기본적으로 가지고 있는 특성(예: eat() 메소드, age 필드)..
인터페이스자바에서 클래스가 반드시 구현해야 하는 메소드의 청사진을 제공하는 일종의 계약이렇게 보면 설명이 어려운데 쉽게 생각하면 게임기의 버튼을 생각하면 될 것 같다.같은 버튼이라도 어떤 게임인지에 따라 기능이 다르기 떄문인터페이스는 메소드 선언만을 포함하며, 메소드의 구현은 하지 않음이를 통해 클래스가 특정 기능을 반드시 구현하도록 강제할 수 있다.자바에서 인터페이스는 다중 상속을 가능하게 하는 주요 도구특징메소드 선언만 포함: 인터페이스는 메소드의 시그니처(이름, 반환형, 매개변수)만을 선언하며, 메소드 본체는 포함하지 않음.다중 구현 가능: 클래스는 여러 개의 인터페이스를 구현할 수 있어 다중 상속이 가능.상수만 포함: 인터페이스는 필드를 가질 수 있지만, public static final로 선언..
추상 클래스자바에서 다른 클래스들이 상속받아야 하는 공통의 구조를 정의하는 데 사용되는 클래스추상 클래스는 인스턴스화(객체화)할 수 없으며, 추상 메소드와 변수를 를 포함할 수 있음추상 메소드는 메소드의 선언만 있고 구현은 없는 메소드로, 하위 클래스가 이 메소드를 반드시 구현해야 함abstract 키워드를 사용해서 추상 메서드를 추상 클래스에 넣을 수 있음특징인스턴스화 불가: 추상 클래스 자체로는 객체를 생성할 수 없음.추상 메소드 포함 가능: 추상 메소드는 선언만 있고, 하위 클래스에서 구현되어야 함.일반 메소드와 멤버 변수 포함 가능: 추상 클래스는 추상 메소드뿐 아니라일반 메소드와 멤버 변수를 가질 수 있음.상속을 통해 기능 구현: 추상 클래스를 상속받는 하위 클래스는 추상 메소드를 구현해야 하며..
클래스를 만들때 중요한 점상태 ← 맴버 변수객체의 생성 ← 생성자어떤 행동을 할지 ← 메서드생성자기본 생성자기본 생성자는 매개변수가 없는 생성자입니다. 만약 클래스에 생성자가 정의되어 있지 않다면Java 컴파일러가 자동으로 매개변수가 없는 기본 생성자를 제공기본 생성자는 클래스의 모든 필드를 기본값으로 초기화매개변수가 있는 생성자매개변수가 있는 생성자는 객체를 생성할 때 초기화해야 할 데이터를 인수로 전달받음.이를 통해 생성되는 객체의 상태를 다양하게 설정가능생성자 오버로딩Java에서는 메소드 오버로딩과 마찬가지로 생성자도 오버로딩할 수 있음즉, 같은 이름의 생성자를 여러 개 정의할 수 있으며, 각각 다른 매개변수 리스트를 가질 수 있음this 키워드를 사용한 생성자 호출같은 클래스 내에서 다른 생성자를..

String ClassString Class불변 형태의 문자열임(한번 생성되면 내용 변경 불가능)즉 문자열의 내용의 변경 불가능문자열을 자주 변경할 경우 새로운 객체가 계속 생성됨으로 성능에 영향문자열이 변경되지 않는 경우에 주로 사용StringBuffer Class객체 생성 후에도 내용 변경이 가능동기화가 되어 있어 여러 스레드가 동시에 접근해도 안전동기화로 인해 성능이 약간 떨어질 수 있음멀티스레드 환경에서 문자열을 안전하게 조작할 때 사용StringBuilder Class객체 생성 후에도 내용 변경이 가능동기화 되지 않음 → 여러 스레드가 동시에 접근하면 언전하지 않음동기화가 없기 때문에 StringBuffer보다 성능이 좋음단일 스레드 환경에서 문자열을 조작할 떄 유용함요약String: 불변성을 ..