목록java (78)
코딩마을방범대
List List list = new ArrayList(); list.add("1"); list.add("2"); 초기화 시에 선언이 불가능한 경우라면 위의 방법밖에 없겠지만, 초기화 시 미리 데이터를 넣어놓는 간단한 방법도 있다. 1. Arrays.asList 고정된 크기이며, 변환 가능한 배열로 저장된다. 따라서 set을 통해 데이터를 갱신할 순 있지만 요소를 추가, 삭제 하는 것은 오류가 발생한다. ( 추가, 갱신, 삭제 모두 불가능 ) List animals = Arrays.asList("강아지", "고양이", "카피바라"); animals.set(0, "비둘기"); animals.add("푸바오"); // UnsupportedOperationException 발생! animals.remove(0..
String 문자열을 쌓을 때 String을 사용할지, StringBuilder or StringBuffer를 사용할지는 아래 포스트를 참고해서 결정하자! [Java] String, StringBuffer, StringBuilder의 차이점 List to String List를 String으로 변환하는 방법을 먼저 알아보면 내가 알기론 5가지가 존재한다! 1. forEach (확장 for문) StringBuilder str1 = new StringBuilder(); for(String str: list){ str1.append(str); } 2. for문 StringBuilder str2 = new StringBuilder(); for( int i = 0; i < list.size(); i++ ){ st..
여태 문자열을 이어붙일 때 StringBuilder 같은 건 선언하기 귀찮기도 하고 그렇게 친숙하진 않아서 String + 로 추가해왔는데 StringBuilder와 StringBuffer에 대해 알아봐야할 필요성을 느꼈다. String 불변(immutable) 자료형 ( 인스턴스 생성 시 생성자의 인자 value는 상수(final)로 선언되어있다. ) String 객체를 불변하게 설계한 이유는 캐싱, 보안, 동기화, 성능측면 이점을 얻기 위해서이다. 1. 캐싱 : String을 불변하게 함으로써 String pool에 각 리터럴 문자열의 하나만 저장하며 다시 사용하거나 캐싱에 이용가능하며 이로 인해 힙 공간을 절약할 수 있다는 장점이 있다. 2. 보안 : 예를 들어 데이터베이스 사용자 이름, 암호는 데..

UUID (Universally Unique Identifiers) 각 개체를 고유하게 식별 가능한 값 (범용 고유 식별자) 사용 방법 UUID.randomUUID().toString() 위 코드를 실행할 때마다 새로운 값들이 출력되며, 이 값을 유니크한 값으로 사용해주면 된다. QR 코드를 만들 때 유니크한 값을 ID로 주어 사용하게 되는데, 이럴 때 사용하면 중복값 체크할 필요 없이 바로 사용이 가능하다. 만약 길이가 길어서 짧게 쓰고 싶다고 substring을 주게 된다면, UUID를 사용하는 목적이 사라진다! 문자열을 잘라서 쓸 경우 중복값이 발생할 수 있고, 이 문자열 그대로가 유니크한 값이기 때문에 수정없이 그대로 사용해야 한다. 난수를 통해 랜덤값을 만들게 될 경우 중복 체크 로직은 따로 구..

QR 이란? 흑백 격자무늬 패턴으로 정보를 나타내는 매트릭스 형식의 이차원 바코드를 의미 QR코드는 주로 한국,일본,중국,영국,미국 등에서 많이 사용되며, 명칭은 덴소 웨이브의 등록 상표 'Quick Response' 에서 유래됨 특징 종래에 많이 쓰이던 바코드의 용량 제한을 극복하고 그 형식과 내용을 확장한 2차원의 바코드로 종횡의 정보를 가져서 숫자 외에 문자의 데이터를 저장할 수 있음 숫자 최대 7089자, 영문자와 숫자 최대 4296자, 이진 8비트 최대 2953바이트, 한자 1817자를 담을 수 있음 QR과 바코드의 차이점 QR 바코드 장점 종횡(2차원)으로 사진, 동영상, 지도, 명함 등 다양한 정보를 편리하게 담아낼 수 있음 인식속도, 인식률이 높음 단방향(1차원)으로 숫자나 문자 정보 저장..
Reflection 클래스의 구조를 분석하여 동적 로딩을 가능하게 하는 기능 힙 영역에 로드된 Class 타입의 객체를 통해 원하는 클래스의 인스턴스를 생성할 수 있도록 지원하고, 인스턴스의 필드와 메소드를 접근 제어자와 상관 없이 사용할 수 있도록 지원하는 API 장점 런타임 시점에서 클래스의 인스턴스를 생성하고, 접근 제어자와 관계 없이 필드와 메소드에 접근하여 필요한 작업을 수행할 수 있는 유연성을 가지고 있다. 단점 캡슐화를 저해한다. 런타임 시점에서 인스턴스를 생성하므로 컴파일 시점에서 해당 타입을 체크할 수 없고, 구체적인 동작 흐름을 파악하기 어렵다. 단순히 필드 및 메소드를 접근할 때보다 리플렉션을 사용하여 접근할 때 성능이 느리다. (모든 상황에서 성능이 느리지는 않음.) 사용하기 Ref..

System 환경 변수 가져오기 컴퓨터마다 설정되어있는 환경 변수가 천차만별이다. 개발을 하게 되면서 PC에 따른 환경 변수가 필요할 경우가 있는데, Java에서는 이 시스템 환경 변수를 가져올 수 있다. System.getenv() 모든 시스템 환경변수에 대한 값을 key, value ( Map ) 형태로 반환합니다. System.getenv(String name) name에 해당되는 시스템 환경 변수의 값을 반환합니다. 예제 System.getenv("DriverData"); 컴퓨터의 환경 변수 리스트를 확인할 수 있는 방법 제어판 -> 시스템 -> 고급 시스템 설정 -> 환경 변수 System 명령어 실행 시키기 자바프로그램이 돌아가는 시스템(윈도우즈, 리눅스, 유닉스, 등)의 명령어를 실행시킨 후..
Optional에 대하여 Object를 리턴하는데 null일 가능성이 있다면 Optional로 래핑하는 것을 권장 매핑 함수의 적용 결과가 null인 경우 빈 Optional을 반환(메소드를 체이닝했을 때 중간에 null이 있어도 빈 Optional로 계속해서 이어나갈 수 있음) 메소드체이닝이란? 메소드를 줄줄이 엵어서 메소드를 계속해서 사용할 수 있게끔 하는 방법 setter() 메소드에서 void가 아닌 세팅된 객체를 리턴 map과 flatmap A type을 B type으로 바꾼다는 뜻(매핑) Optional의 값이 있는 경우에만 실행 map 결과를 Optional로 감싸서 리턴 flatmap 감싸지 않고 반환 orElse와 orElseGet 의 차이점 구분 설명 orElse() 내부 객체의 상태와..