반응형

Java/Basic 22

[Java/Basic] Thread run과 start의 차이

간단한 쓰레드를 하나 예시로 남겨두려고 한다. Thread에서 run(); start(); 메서드 둘다 같은 기능을 하는것 같은데 뭐가 다를까 궁금할 수 있다. 초보들만...ㅎㅎ;; 여기서 궁금증을 해결하기위한 짧은 코드를 준비해 보았다. 먼저 start(); 로 Thread를 돌렸을때의 결과를 보고 run();으로 돌렸을때의 결과를 볼예정이다. public class ThreadRunStartTest implements Runnable{ int[] timeList = new int[10]; public ThreadRunStartTest() { for (int i = 0; i < timeList.length; i++) { timeList[i] = i; } } @Override public void run..

[Java] Builder Pattern이란? 객체 생성 방법들

Java를 사용하는데 뭔가 그냥 쓰던데로만, 겉핥기 식으로만 알고 있던것들에 대해 다시 알아보려고 한다. Builder Pattern으로 객체 생성을 알아보기 전 다른 객체 생성 방법에 대해 살짝 보고 가자!! 1. Java Beans Pattern 가장 익숙한 getter/setter를 이용하여 객체를 생성할때 필드를 주입하는 방식이다. Person person = new Person(); person.setName("BackEnd developer"); person.setAge(30); person.setAddress("BabREE"); 아래에서 보겠지만 점층적 생성자 패턴과는 다르게 1회의 생성자 호출로 객체를 완전히 생성하지 못한다는 단점이 있다. 즉, setter 메소드를 통해 값이 계속 변할 ..

[Java-Basic] String, StringBuffer, StringBuilder 속도 비교 및 차이점

우선 크게 String과 StringBuffer & StringBuilder로 차이점을 확인 해보자. String & StringBuilder & StringBuffer 비교 1). String vs StringBuilder & StringBuffer 차이점 String : 객체는 한번 생성되면 할당된 공간이 변하지 않음(immutable) StringBuffer & StringBuilder : 객체의 공간이 부족해지는 경우 버퍼의 크기를 유연하게 늘려줍니다. (mutable) 메모리 관점으로 설명을 추가해보자면... String은 Immutable하기 때문에 메모리상에 추가적인 공간을 할당받아야한다 예를 들어 , hello를 메모리에 올리고, world를 추가해서 이어붙이려고한다. 이때 메모리상에서는 ..

[Java] Collection 정리 Map이란 HashMap & TreeMap

너무 기본적인 것들에 대해 정리가 되어있지 않아 초심으로 돌아가보려고 한다. 왜 사용하는지 다시한번 머리 속에 담아두자..! Map은 Collection Interface를 상속받고 있지않지만 편의상 Collection으로 분류한다고 한다. Map 정의 : 키(Key) , 값(Value) 을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스들을 구현하는 데 사용 되는 인터페이스 특징 : 요소의 저장 순서가 별도로 존재하지 않는다. Key : 중복 허용하지 않음 Value : 중복 허용 1). HashMap 특징 : 내부적으로 Entry[] Entry의 배열로 이루어 져있다. 해당 Array에 Index는 내부 해쉬 함수를 통해 계산된다. 내부 Hash값에 따라서 키 순서가 정해지므로 순서의 규칙이 없다. 그래..

[Java] Collection 정리 List란 ArrayList & LinkedList

너무 기본적인 것들에 대해 정리가 되어있지 않아 초심으로 돌아가보려고 한다. 왜 사용하는지 다시한번 머리 속에 담아두자..! 배열 : 연속된 메모리의 집합 1). List 정의 : 데이터를 순차적으로 나열해 놓은 집합체. 장점 : 동적으로 사이즈가 자유롭게 변할 수 있다. 단점 : 배열과 비교했을때 배열 : 직접 엑세스로 (값을 넣거나 가져올때) 빠르다. -> 배열의 값으로 바로 접근가능하다. List : 배열과 비교했을때 순차적 엑세스로 (값을 넣거나 가져올때) 조금 느리다. -> 메모리의 0번째 객체 주소부터 1,2,3... 로 읽어서 접근하는 방식이기 때문(순차적 엑세스) 종류 : ArrayList : 정의 : 크기를 동적으로 늘릴수있는 배열 객체 / 제네릭을 사용하여 타입을 지정해줄 수있다. 장점..

[Java-Basic] Reflection API 를 사용하여 Custom Annotation 만들기

1). Test.java @interface 를 사용하여 Annotation을 바로 만들수 있다. @Target(ElementType.TYPE) 필드, 메소드, 클래스 등 모든 곳에 어노테이션을 붙일 수 있게 되는데 어노테이션 사용을 허가하는 target을 설정할 수 있다. 타입 값에만 Annotation 적용 설정하여 사용했다. @Retention(RetentionPolicy.RUNTIME) 어노테이션을 주석과 같은 취급을 받기 때문에 정보가 클래스에까지는 남지만 바이트 코드를 로딩하고 난 후 메모리에는 어노테이션의 정보는 가지고 오지 않는다. 메모리에도 적재하기 위해서는 어노테이션 클래스에 @Retention(RetentionPolicy.RUNTIME) 어노테이션을 붙여야 한다 @Retention(R..

[Java] scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); 란?

Java를 조금더 딥하게 알고싶어 알고리즘 공부를 시작하게되었다. 한문제씩 풀어나가다 처음보는 것이 있어 적어 두려고한다. 아직 한참 모자르다... 모르는 코드 : scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); 1). 전체 코드 public class Solution { private static final Scanner scanner = new Scanner(System.in); public static void main(String[] args) { int N = scanner.nextInt(); scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); for(int i=1; i

[Java] 초보 가이드 -4

기본타입 이어서~!01/28 데이터 참조!!! Wrapper Class => char -> Character로 변경된다. Boxing => char('2') -> Character[] 17). 기본타입의 형변환 형태의 형변환 / 크기의 형변환 Promotion, Casting (type) : 캐스팅 연산자 Promotion : 1byte -> 4byte : 작은 타입에서 큰타입으로 변경 ex). byte b =10; int c =b; // 그냥 사용 Casting : 4byte -> 1byte : 큰타입에서 작은타입으로 변경 ex). int c =100; byte e = (byte)c; //형변환 필요 ex). TypeProcess Class 참조 값을 리터럴 입력하느냐 아니면 변수에 담겨있는 값을 입력..

[Java] 초보 가이드 -3

10). Hirerarchy(계층구조) OOP(object oriented Programming) 특징 : inheritance(상속성) : 상속관계에 있는 두 클래스사이 부모클래스가 자식클래스에게 속성을 물려줌 코드의 중복을 없애고 코드의 재사용을 위함 (부모의 특성을 받아 구체화시킴) encapsulation(캡슐화/은닉화) : 외부에 노출할 필요가 없는 정보들을 은닉 정보 ? ->data -> Vo / Dto -> bean polymorphism(다형성) : 같은형태이지만 다른기능을 하는것.(오버라이딩) 관계는 is a관계(포함: extends) / has a관계(사용함 : association) [상속성] Extends : 일반 Class를 확장할때 사용(Class : 일반클래스/Interface..

반응형