Language (93) 썸네일형 리스트형 [Java] singleTon 디자인 패턴 싱글턴 패턴이란 -전역 변수를 사용하지 않고 객체를 하나만 생성 하도록 하며, 생성된 객체를 어디에서든지 참조 할 수 있도록 하는 패턴 하나의 인스턴스만 생성하여, 모든 클라이언트들에게 동일한 인스턴스를 반환한다. 생성자를 private으로 하고, 클라이언트에서는 해당 생성된 인스턴스를 사용하여 처리한다. 다중 스레드에서 Printer클래스를 이용할때 인스턴스 1개 이상 생성되는 경우가 발생할 수 있다. 경합 조건에서 두개의 쓰레드가 null을 체크후에 진행이 된다면, 동시에 두개의 인스턴스가 생성이 될 수도 있다. 1) static 변수로 인스턴스를 만들어서, 초기화 하는 방법 static 변수 객체가 생성되기 전 클래스가 메모리에 로딩될때 만들어져서 초기화가 한번만 실행된다. 메소드 영역에 메모리가 .. [Java] Reflection 개념 및 사용법 리플렉션은 구체적인 클래스 타입을 알지 못해도, 그 클래스의 메소드와 타입 그리고 변수들을 접근 할수 있도록 해주는 자바 API 이다. 런타임에 지금 실행되고 있는 클래스를 가져와서 실행해야하는 경우 동적으로 객체를 생성하고 메소를 호출하는 방법 클래스,인터페이스,메소드 들을 찾을 수 있고, 객체를 생성하거나 변수를 변경하거나 메소드를 호출할 수 있다. -컴파일 타임 타입검사가 주는 이점을 누릴수 없다. -리플렉션을 이용하면 코드가 장황해지고 지저분해진다. -성능이 떨어진다. (리플렉션을 통한 메서드 호출은 일반 메서드 호출보다 훨씬 느리다.) 쉽게말하면, 특수한 시스템을 만들때는 강력하나, 컴파일 타임에서 명확한 객체를 사용하지 못해 독이 될수 있다. 따라서 되도록이면 인스턴스 생성에만 리플렉션을 쓰고.. [Java] LinkedList -각 노드가 데이터와 포인터를 가지고 한줄로 연결되어있는 방식이다. -노드의 포인트가 이전 노드,다음노드에 대한 정보를 가지고있고, 연결을 담당한다. -삭제,추가에 대해서 빠르다 -검색에 대해서는 순차 탐색을 해야하기때문에 느리다.(인덱스가 없다) [Java] Vetor 개념 및 사용 방법 Vector란 Collection 프레임워크의 일부이다 ArrayList와 동일한 구조를 가지고, 배열의 크기가 늘거나 줄면 자동으로 크기가 조절된다. 항상 동기화를 지원한다. 스레드가 아닌 환경에서는 거의 사용이 되지 않는다. 크기를 구하거나 사이즈에 대한 조회를 할때 동기화 메소드가 걸려있어서 쓰레드에 락이 거는 특징이 있다. [Java] Wrapper 클래스 래퍼 클래스 프로그램에 따라 기본타입의 데이터를 객체로 분류해야하는 경우가 있다. 메소드의 인수로 객체 타입만 요구되거나, nullable 한 상태가 요구될때 해당 클래스를 사용한다. 이럴때 기본타입에 해당하는 데이터를 객체로 포장해주는 클래스를 래퍼클래스라고 합니다. 박싱/언박싱 박싱 : 기본타입 -> 래퍼 클래스 언박싱 : 래퍼클래스 -> 기본타입 [Java] ==와 equals 차이 == 연산자는 기본타입의 데이터 값을 비교한다. 객체나 레퍼런스 타입에 대해서는 주소값을 비교한다 사실 기본형도, Constant Pool에 있는 특정 상수를 참조하는 것이기 때문에, 결국 주소값을 보는 것이다. 같은 상수를 참조하면 주소값이 같기 때문에 동일하게 나오는 것이다. equals는 최상위 클래스인 object에 포함되어있기 때문에 하위 클래스에서 재정의가 가능하다. Object에서는 하위로, 주소값에 대한 비교만 한다. public boolean equals(Object obj) { return (this == obj); } 추가로, String class에서는 이 equals에 대한 오버라이드를 하고있는데, 해당 부분에서 주소가 달라도 문자열이 같은경우 true로 되는 것이다. 주소가 같으.. [Java] ArrayList 특징 1. 데이터 순서 있음 2. 연속적인 메모리 할당 3. LinkedList 보다 검색 빠름 4. LinkList 보다 데이터 추가 삭제 느림 5. list는 데이터 내 빈 객체를 허용하지 않는다. 6. list 크기를 동적으로 늘릴수있다. 설정한 저장용량을 넘어서면, 크기를 1.5배로 증가시킨다.(수치는 설정 가능) 7. 동적으로 크기가 늘어날때는 기존 배열에서 커진 배열이 생성되고, 기존 값을 복사하여,생성된 배열에 옮긴다. 8. list내에서는 빈갑을 허용하지 않기 때문에, 삭제 작업이 발생시에 원소 한개씩 땡기거나 미루는 작업이 발생된다. [Java] TreeSet 이란? 동작과정 Set인터페이스를 구현한 클래스로써 객체를 중복해서 저장할 수 없고, 저장 순서가 유지 되지않는다. TreeSet이란 이진탐색트리 구조로 이루어져 있다. -추가,삭제에는 시간이 더 걸리지만, 검색과 정렬에는 유리하다 -불균형으로 인한 퍼포먼스 문제를 해결한 레드블랙 트리로 구현되어있다. -한번 저장할때마다 정렬된 상태로 저장이 되기때문에, 검색 및 정렬에 유리하다 (LinkedList의 검색은 처음부터 탐색을 해야하기 때문에, 검색이 느리다는 단점을 보완해준다.) * 레드블랙트리 넣을때 노드보다 큰값이면 오른쪽, 작으면 왼쪽으로 이동해서, 넣는 방식, 구현되어있는 방식이다. ex) (추가: 유용한 메서드들 ) 이전 1 ··· 4 5 6 7 8 9 10 ··· 12 다음