Java 42

공변과 반공변에 대해

자바 제네릭을 보면서, 공변과 반공변의 이야기가 나왔다. 결론적으로 내가 이해 하기론공변은 을 하면 List를 받을시에 하위타입까지 읽을수 있게 처리를 할수 있고 반공변은 을 하면 본인 타입 포합 상위타입을 참조할수 있다고 이해하였다. 먼저 해당 상속간의 클래스 코드들입니다.  class User { public void good() { System.out.println("User Good"); } } class A extends User { @Override public void good() { System.out.println("1111"); } } class B ex..

Java 2024.11.05

JavaBean과 POJO

공부중에 POJO 라는 개념을 스프링에서 이러한 개념으로 구현 했다는 글을 본적이 있지만 공부 하는 겸 글을 작성해본다.  1. POJO ( Plain Old Java Object )- 특별한 요구사항 없이 순수 자바 객체로 작성한 클래스이고 복잡한 상속이나 인터페이스 없는 단순한 객체를 뜻한다. public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void se..

Java 2024.11.04

ArrayList의 자동 크기 증가

ArrayList는 기본 초기 용량이 10 입니다. 빈 ArrayList를 생성 하면 내부적으로 용량은 10 으로 설정됩니다.또한 자동 크기 증가 시점은 현재 배열의 크기가 가득 차면 새로운 배열을 할당합니다 크기는 이전 용량의 1.5배로 크기를 증가 시킵니다. 크기 증가 예시 입니다.초기 용량: 10요소 10개가 모두 채워지면, 용량이 1.5배 증가(10 + 5 = 15)요소 15개가 채워지면, 용량이 1.5배 증가(15 + 7 = 22)요소 22개가 채워지면, 용량이 1.5배 증가(22 + 11 = 33)  이렇게 빈번하게 크기가 할당되면 성능에 좋지 않아서 여러가지 방안이 있지만 다음과 같다. ArrayList 크기 증가 관리 방법자동 증가를 피하거나 성능을 최적화하기 위해 크기를 미리 조정할 수 ..

Java 2024.10.31

부동소수점에서 엡실론

프로그래밍상으로 소수점을 계산 할 일이 많습니다 특히 돈 관련 계산을 할때,  이번에도 결론적으로 말하자면, 실수를 다룰 때는 BigDecimal을 사용하면 됩니다.자바에서 다음과 같이 계산을 하였습니다  double a = 0.1; double b = 0.2; System.out.println(a+b); System.out.println(a+b == 0.3); 결과는0.30000000000000004 이유는 2진법으로 근사값을 저장하게 되며, 두 수를 더할 때 이 근사값으로 인해 0.3 대신 0.30000000000000004라는 오차가 나타납니다 그래서 개발자가 지정한 부동소수점에서 엡실론을 정하여 오차를 대략적으로 짐작하여 뺴주는 방식이다. 하지만 ..

Java 2024.10.31

오토 박싱 & 오토 언박싱

개발을 하면서 항상 이런 부분을 무지성하게 사용 된거 같아서 글을 작성합니다. java 기본 타입 : int, long, float, double, char, short, byte, booleanjava  Wrapper 클래스 :  Integer, Long, Float, Double, Character, Short, Byte, Boolean    오토 언박싱 오토박싱의 반대 개념으로 래퍼 클래스의 객체를 해당 기본 데이터 타입으로 자동으로 변환하는 것을 말한다다. 예를 들어 Integer 타입의 객체를 int 타입으로 할당하면 자동으로 오토 언박싱이 발생한다. // 오토박싱 예제int i = 10;Integer integerObj = i; // int 타입의 값을 Integer 객체로 자동 변환// 오토..

Java 2024.10.30

자바_instanceof (객체타입 확인)

자바의 신 서적을 을 보다가 멘토님의 질문에 답을 잘 하지 못해, 관련 자료를 찾아봤다, 신기한게 개발을 할때 잘 쓰고 있는걸 막상 말하려고 하니까이야기를 잘 하지 못한다 instanceof는 객체 타입을 확인하는 연산자이다, 리턴 값으론 true / false 로 반환한다. 주로 상속 관계에서 부모객체인지 자식 객체인지 확인 하는데 사용한다, 이부분이 정확하게 이해가 안되어 여러가지 실해을 하였다.  public class InstanceofTest { public static void main(String[] args){ Parent parent = new Parent(); Child child = new Child(); System.out.println( ..

Java 2024.10.30

스트링 빌더와 스트링 연산 최적화

JDK1.5 버전 이후부터 String의 + 연산 컴파일시 StringBuilder 로 자동변환되어 성능 최적화가 이뤄 진다고 배웠습니다.하지만 항상 String은 항상 StringBuilder로 변환되지 않습니다.  공식 문서도 찾아봤지만,, 사실 명시해둔게 너무 어려워서 다른 블로그 정리 한 내용 참조 하였습니다. 해당 내용은 자바17로 직접 진행한것입니다. 예제 1번은 이렇게 자바에서도 했을때 최적화가 되는 방법입니다. 예제1) 한줄로 모두 선언한 경우//컴파일 전 소스파일String str1 = "0" + "1" + "2";//컴파일 이 후, 디컴파일 한 소스파일String str1 = "012";한줄로 모두 선언한 경우는 하나의 String으로 변환 되었습니다. 결론적으로 성능최적화가 되었습니다..

Java 2024.10.29

UTF 인코딩

위쪽 부분은 아스키코드 7bit 코드 체계이다.숫자 -> 문자로 매핑한것이다. 표를 보고 예를 들어서  7bit -> 즉 컴퓨터에 표준 방식을 짜뒀다. 하지만 문제가 있다. 하지만 동아시아권으로 왔더니 아스키코드로 커버가 안된다.. (한자어 등등) 한글 입력 방식에 조합형 과 완성형와 어느쪽이 더 좋을까? 논쟁이 있었다고 한다. 조합형이란 ? 각 자음 모음에 숫자를 부여해서 선택 하는 방식이가.예를 들어서 ㄴ(3) + ㅓ(4) + ㄹ(5) =  345를 하면 널 완성형   결국은 완성형으로 채택 되었지만 자음 + 모음 = 글자? 몇개일까? 대략 천개정도 넘는다, 일본 + 중국 + 한글 = 대략 완성형으로 합쳤을떄 10만개가 넘을것이다.16bit로 -> 대략 6만적이다. 그래서 16bit로 전부 커버가 가..

Java 2024.10.28

2진수와 16진수 +@ 10진수

공부 하다가 2진수와 16 진수의 대해 알아보고 내가 이해 한게 맞는지 블로그를 작성하였습니다.   2 진수 ( 0,1)10 진수 ( 0,1,2,3,4,5,6,7,8,9)16 진수 ( 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F) 내가 그냥 쉽게 이해한건2지수는 2개의 값 표현10진수 10개의값으로 표현16 진수는 16개의 값으로 표현 10진수2진수16진수101010A  위에 표의 값은 전부 동일한 숫자이다. 10진수와 2진수의 값 변환 표를 보자  10진수2진수10진수2진수008100011910012101010103111110114100121100510113110161101411107111151111  여기서 2진수에서 +1씩 더한다. 2진수의 1의 값에서 + 1을 더하면 10이..

Java 2024.10.18