목록분류 전체보기 (99)
되자!백엔드개발자
익명클래스(annonymous class) 클래스 선언과 객체의 생성을 동시에 하는 클래스이다. 생성자도 없이, 오직 하나의 객체만을 생성할 수 있는 일회용 클래스이다. 쉽게말해 이름이 정의되지 않은, 조상 클래스를 상속받은 하나의 새로운 class이다. 단, 조상 클래스나 인터페이스의 이름을 사용해서 정의하기 때문에 단 하나의 클래스나, 단 하나의 인터페이스만 구현할 수 있다. 컴파일 후 '외부클래스명 $숫자.class'의 형태로 저장된다. new 조상클래스이름() { ... } or new 구현인터페이스이름() { ... } 아래의 코드를 보자. 코드는 Strabger's LAB 님의 브로그에 [Comparable과 Comparator의 차이] 에서 가져왔다. public class Anoymous ..

왜 추상클래스와 인터페이스가 필요할까? 설령 필요해도 둘 중 하나만 있으면 되는 것 아닐까? 라는 의문점을 오래 갖고 있었기 때문에 그 위주로 글을 작성했다. 선수지식으로 다형성에 관련된 지식이 필요하니 아래 글을 보고 이 글을 읽어보자. https://hyun-jng.tistory.com/113 Java(자바) - 다형성3(매개변수의 다형성) 매개변수의 다형성 메서드의 매개변수로 조상클래스타입의 참조변수로 설정하면 어떤 자식클래스의 참조변수든 매개변수로 받아들일 수 있다. 예시로 이해해보자. 아래와 같이 상품을 모델링 hyun-jng.tistory.com 추상클래스(abstract class) 상속을 통해서 자식 클래스에서 완성하도록 유도하는 클래스이다. 미완성 설계도라고도 표현한다. 여러 종류의 모델..

Singleton 클래스 생성자를 private으로 설정하여 직접 인스턴스를 생성하지 못하게 하고 public메서드를 통해 인스턴스에 접근하게 함으로써 사용할 수 있는 인스턴스의 개수를 제한하는 것. Singleton클래스는 final클래스로 명시해 줄 것을 권장 이 클래스는 다른 클래스의 조상이 될 수 없다. 상속받은 클래스의 인스턴스를 생성할 때 조상 클래스들의 생성자들이 호출되기 때문이다. 그렇기에 final로 명시해주어 더이상 상속할 수 없는 클래스라는 것을 알리는 것이 좋다. final class Singleton{ public static Singleton s = new Singleton(); private Singleton() {}// 생성자 public static Singleton get..
매개변수의 다형성 메서드의 매개변수로 조상클래스타입의 참조변수로 설정하면 어떤 자식클래스의 참조변수든 매개변수로 받아들일 수 있다. 예시로 이해해보자. 아래와 같이 상품을 모델링한 product클래스가 있다. class Product{ int price;// 제품의 가격 int bonusPoint;// 제품 구매시 제공하는 보너스점수 } 그리고 Tv, Conputer, Audio가 있고 이것들은 상품이므로 Product를 상속한다. class Tv extends Product{} class Conputer extends Product {} class Audio extends Product {} 물건을 구입하는 사람을 Buyer클래스로 모델링하려고 한다. 물건을 구입하는 기능의 메서드 Buy에는 구입할 대..
변수의 초기화 클래스의 멤버변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화가 되어 초기화하지 않고 사용이 가능하지만, 지역변수는 사용하기 전에 반드시 초기화를 해야한다. 명시적 초기화(explicit initialization) 변수를 선언과 동시에 초기화 하는 것 int a = 11; Circle pizza = new Circle(); 초기화 블럭(initialization block) 초기화 작업에 조건문, 반복문 등 과정이 복잡하여 명시적 초기화만으로는 부족한 경우에 사용 생성자에서 공통으로 사용해야하는 과정일 때 중복을 제거하기 위해 사용 1. 클래스 초기화 블럭 - 클래스변수(static변수)의 초기화 때 사용한다. - static이 늘 그랬듯이 클래스가 처음 로딩..
코딩을 하다 보면 중첩 반복문을 쓸 때가 많은데 내부 반복문에서 break나 continue를 써도 외부반복문에선 적용이 안되서 불편할 때가 있다. 나는 이 경우 그동안 int flag 를 선언해서 조건문과 함께 사용했는데 반복문에 이름을 붙여 사용할 수 있다는 것을 알게 되어서 공유 겸 써본다. (반복문 이름) : (반복문){ ... break (반복문 이름); continue (반복문 이름); // continue는 잘 안씀 } import java.util.Scanner; public class Test { public static void main(String[] args) { int menu = 0, num = 0; Scanner sc = new Scanner(System.in); outer: ..
구조적으로 다른거 제외하고 그냥 짬짬하게 다른 것들 발견할 때마다 적는 페이지 계속 추가할 예정 C와 다르게 메소드 인자로 배열 넣을떄 행 안 알려줘도 된다. C와 다르게 배열 크기 설정할 때 변수를 넣을 수 있다. C와 다르게 자바에는 포인터 개념이 없어 배열 외에 call by reference가 안된다. C와 다르게 1과 0을 boolean으로 인식하지 못한다. (while(1)불가능) 자바에선 길이가 0인 배열을 선언할 수 있다.

막히는 것을 찾아볼 때 용어를 알아야지 이해하기 때문에 필수로 기억해두자 메소드 용어 정리 변수 용어 정리 리터럴(literal) : 소스 코드 내에서 직접 입력된 변수의 초기값 기본(primitive)타입 : 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입 참조(preference)타입 : Spring, 배열, 클래스 등 직접 리터럴을 저장하는 것이 아닌 주소를 저장하는 타입
Ellipsis parameter(...) 간단히 말하면 가변인수이다. 메소드의 actual parameter을 선언할 때 사용한다. actual parameter로 배열을 넣거나 기본타입(primitive type)을 여러개 가변적으로 넣어도 인식이 된다. 매개변수로 전달되는 인자들의 자료형은 반드시 같아야한다. 가변인수는 매개변수 가장 마지막에 작성해야한다. ... 앞에 매개변수가 있는 경우, 인자들이 앞에 있는 매개변수부터 하나씩 순서대로 전달되고 나머지 인자들이 ...으로 전달된다. 이렇게 설명하면 뭔지 감이 안오니까 예를 들어보겠다. 전달된 parameter 중 가장 큰 값을 return하는 max 메소드를 만들려고 한다. 가변인자를 사용하지 않은 가장 코드부터 보겠다. public class ..
간단해서 코드만 첨부한다. // 배열 복사 public class ArrayBasic9 { public static void main(String[] args) { int sourceArray[] = { 2, 3, 1, 5, 10 }; int copyArray1[] = new int[sourceArray.length]; int copyArray2[] = new int[sourceArray.length]; // 복사 방법 1: for문을 사용하여 단순 벅사 for (int i = 0; i < sourceArray.length; i++) copyArray1[i] = sourceArray[i]; // 복사 방법 2: System.arraycopy method 이용 System.arraycopy(sourceAr..