자바 식의 결과 타입
10^6 개 중 중복 없이 2개를 조합하는 경우의 수를 계산하는 코드를 다음과 같이 작성했다.하지만 실행해보면 완전 엉뚱한 값이 반환된다. 123int a = Math.pow(10, 6);long b = a * (a - 1) / 2;System.out.println(b); //-364189984라는 값이 나온다. 음수가 나오는 것으로 봐서는 타입에서 감당할
10^6 개 중 중복 없이 2개를 조합하는 경우의 수를 계산하는 코드를 다음과 같이 작성했다.하지만 실행해보면 완전 엉뚱한 값이 반환된다. 123int a = Math.pow(10, 6);long b = a * (a - 1) / 2;System.out.println(b); //-364189984라는 값이 나온다. 음수가 나오는 것으로 봐서는 타입에서 감당할
요약 체스 말 객체들이 해당 위치로 이동할 수 있는지 검증하는 로직이 중복된 경우가 있었다.이를 따로 분리해서 중복을 제거하고자 했다. 도입 배경체스 말 종류 구현하기체스 말 객체(Piece)는 자신의 위치와 이동할 위치를 전달받아서 이동할 위치로 이동할 수 있는지 확인한다. 123456789101112131415161718192021public abs
요약 자바에는 Call by Value만 존재한다.Call by Value는 함수의 인자에 값을 전달하는 방식이고,Call by Reference는 함수의 인자에 주소를 전달하는 방식이다. Call by Value vs Call by Reference프로그래밍 언어에서 함수에 인자로 전달하는 방식에 따라 나뉜다. Call by ValueCall by V
요약 본 포스트는 오라클 자바 튜토리얼 제네릭 부분을 공부한 내용을 적은 포스트이다.JDK 8 기반으로 작성됐다. https://docs.oracle.com/javase/tutorial/java/generics/why.html 제네릭은 왜 쓰는가제네릭은 클래스, 인터페이스, 메서드를 선언할 때 타입(클래스, 인터페이스)도 매개변수로 만들 수 있다.전통적
요약 Throwable -> Exception -> RuntimeException 등 다양한 예외Throwable은 stackTrace 생성 등 예외에 필요한 다양한 일을 함Exception은 예외 메시지를 받아 초기화할 수 있다RuntimeException은 치명적이진 않은 예외를 뜻함.RuntimeException은 치명적일 수 있는 에외
요약 예외를 상속하는 클래스를 통해 예외를 만들 수 있다.생성자를 통해 에러 메시지를 초기화 할 수 있다. 배경 12345public void checkCarNameEmpty(String carName) { if (carName == null || carName.equals("")) { throw new R
요약 일급 컬렉션은 컬렉션 객체를 감싸는 객체를 말한다.일급 컬렉션은 객체를 만들 때 검증해야 할 로직을 모아 둘 수 있다.일급 컬렉션은 해당 컬렉션이 행해야 할 책임을 모아 둘 수 있다. 불변성을 지키기 위해서는 setter 금지. 일급 컬렉션의 멤버 변수를 초기화할 때 가져온 인자를 새로운 주소값으로 재할당 getter 할 때 불변 객체 반
요약 Pattern 클래스와 Matcher 클래스를 활용해서 자바 정규 표현식을 잘 표현한다. 특히 Matcher클래스에 정규 표현식을 compile(String)하고, matcher(String)으로 대상 문자열을 전달해준다.이때 find()메서드를 반드시 실행해줘야 정상적으로 Matcher 객체에 관련 내용이 할당된다!! Pattern 클래스로 정규
Comparable과 Comparator의 차이결론둘 다 객체의 비교 기준을 마련하는 인터페이스. Comparable은 **compareTo(T t)**로 자기 자신과 다른 객체의 비교.Comparator은 compare(T t, T u) 자기 자신이 아닌 다른 두 객체 간의 비교. Comparable은 Arrays.sort()나 Collections.so
부모의 private 멤버 변수는 자식이 직접 접근할 수 있을까?답은 No다. 자식 객체가 생성되면, 부모 객체는 생성 될까? 답은 Yes다 이를 검증하기 위해 코드를 짜보자. 예시코드부모 클래스123456789public class Parent { public Parent() { System.out.println("Pa
자바 소스 파일 구조시작 주석 package 문 import 문 Class 혹은 Interface 선언 시작 주석모든 소스 파일은 다음과 같은 시작 주석을 써줘야 한다. 123456789/* *클래스 이름 * *버전 정보 * *날짜 * *저작권 주의 */ package문 import문일반적으로 패키지문을 먼저 쓰고, 임포트문을 다음에 써준다. 두 문
인터페이스와 추상 클래스의 차이를 잘 느낄 수 있는 예제를 가져왔다. 데코레이터를 인터페이스로 구현해본다고 하자. 인터페이스로 데코레이터를 구현한다면?패션 모델에게 각종 의류를 데코레이터로 적용하는 예시를 인터페이스로 구현해보자. 12345//모델의 역할은 런웨이를 하는 것.public interface Model { void runway()
클릭하면 크게 보실 수 있습니다.
어노테이션어노테이션은 자바 소스코드에 추가적인 정보를 제공하는 메타데이터이다.어노테이션 선언 방법을 알아보자 1. 마커 어노테이션표시만 해두는 어노테이션. 메서드 없이 선언하면 마커 어노테이션이 된다.@Override, @Deprecated 가 대표적 예시. 1public @interface Marker{} 이렇게 선언을 해놓으면, 12@
1. 상속extends로 특정 객체의 필드와 메소드를 상속받을 수 있다.이때, super클래스의 private 필드나 메소드는 자식클래스도 직접 접근할 수 없다. 그렇다면 자식 클래스는 상위 클래스의 멤버 변수를 어떤 원리로 사용할 수 있는 건가? 12345678public Super(){ className = "super&quo
1. 클래스 vs 객체 vs 인스턴스12345678public class CreditCard{ ... public static void main(String[] args){ CreditCard card1, card2;//객체 card1 = new CreditCard();//인스턴스 card2