일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- input
- 사칙연산
- scanner
- 자바입력
- 자바 thread 실행 순서 제어
- heroku
- 자바 스레드 실행 순서 제어
- JAVA11
- SpringBoot 2
- hash table
- 수학
- Easy
- array
- 카데인 알고리즘
- Kadane's Algorithm
- R
- Today
- Total
목록분류 전체보기 (192)
DeFacto-Standard IT
Primitive : 변수에 값 자체를 저장, boolean, byte, char, short, int, float, long, double 8가지 Reference : 메모리 상에 객체가 있는 위치를 저장. 클래스타입, 인터페이스타입, 배열타입, 열거타입 등
Integer.valueOf(String) : Integer 클래스로 리턴하기에 산술연산 불가. 음수 지원X Integer.parseInt(String) : int 형으로 리턴하기에 null값이 들어가면 안됨. 음수 지원 O
Int -> Primitive Type.형, 산술연산 가능, null로 초기화 불가능하며 0으로 초기화 Integer -> Class. Unboxing을 하지 않으면 산술 연산이 불가하나 null값 처리는 가능. 따라서 SQL과 연동할 경우 처리가 용이하나 직접적인 산술 연산을 불가. Integer integer = new Integer(20); int I = integer.intValue(); // 오토박싱, 오토언박싱 지원
stop() -> 즉시 종료가 가능하나 자원이 반환되지 않고 불안전한 상태로 남겨진 채 종료. 안전하게 쓰려면 플래그 값을 변경하는 작업을 통해서만 가능하다. interrupt() -> 스레드가 일시 정지 상태에 있을 때 InterrupedException 예외를 발생시킨다. 일시정지를 시키기 위해 sleep()을 주로 사용한다. sleep()을 사용하지 않으려면, interrupt()호출 시 true를 반환하는 isInterruped()메소드를 사용하여 break;를 실행하면 된다.
start() -> 스레드 객체를 생성하고 독립적으로 동작한다. 내부적으로 run()이 실행된다. run() -> 스레드 객체를 생성하지 않고 정의된 함수만을 실행시킨다.
String – 불변객체. “aaa" 값을 넣고 ”aa"라는 값을 다시 넣으면 변수는 다시 메모리를 할당받고 aa값을 저장. aaa는 JVM의 Garbage Collector에 의해 메모리가 회수됨. Thread Safe하며 Thread Safe 속도는 빠르다.Heap 영역에 저장된다.복잡한 문자열 계산보다는 잘 변하지 않는 문자열을 정의할 때 사용하는 것이 좋다. StringBuffer – char[]배열 사용. 따라서 배열의 시작 주소를 가지고 있으며 char형을 핸들링하는 클래스. char[] 배열을 변경할 수 있어 가변객체다. 따라서 내용의 추가/수정/삭제가 자유로움. 문자열자체를 컨트롤하는 로직에서는 StringBuffer를 쓰는 것이 좋다.Thread Safe하며 Thread Safe 속도는 ..
익명 클래스는 클래스의 이름이 없는 것을 말한다. 이는 추상메서드를 포함하는 추상클래스나, 인터페이스를 구현할 때 쓰인다. 일반적으로 추상클래스와 인터페이스는 Instantiation할 수 없다. 예를 들어, 추상메서드를 포함하는 Person이라는 추상클래스가 있다면 Person person = new Person();은 불가능하고, 인터페이스 역시 불가능하다. 하지만 이를 바로 구현할 수 있는 방법은 Bracket을 주고 바로 메서드를 오버라이드하여 구현하는 것이다. Person person = new Person(){ @Override public void personMethod(){ ... }; }; 보통 추상클래스나 인터페이스는, 이를 상속 또는 구현하는 특정 클래스가 있다. 그리고 이를 구현하는..
디자인의 측면에서, Client 입장에서는 자신이 사용하는 구체적인 클래스를 몰라도, 인터페이스에 정의된 메서드를 사용하는 객체라는 것이 보장되어 있기 때문에 구체적인 클래스의 변경이 일어나더라도 Client의 코드수정은 불필요하다. 이는 클래스간의 결합도를 줄임으로써 얻는 효과이고 유지보수성의 향상이라는 이득을 취할 수 있다. 이와 같은 이점 때문에, 개발자의 입장에서 협업 시 독립적인 프로그래밍이 가능하고 이는 개발시간의 단축이라는 이득을 취할 수 있다. 추상클래스 역시 비슷한 개념으로서 사용될 수 있다. 인터페이스 : 동일한 개념의 기능을 하는 클래스를 묶은 개념. 다중 구현 허용. static final 변수(단 하나만 존재, 수정 불가)만 가질 수 있다. 구현 객체의 같은 동작을 보장하기 위한 ..
클래스를 상속. 공통된 부모를 가지는 것들 끼리 묶음. is-a 관계 장점 - 상위 클래스에서 필드 및 공통 메서드를 상속하여 사용할 수 있다. 따라서 하위 클래스에서 소스코드의 양이 줄어들고 기능을 확장하기 용이하다 단점 - 상속구조가 복잡해지면 상위클래스의 변화가 하위클래스에 주는 영향을 예측하기 힘들다. 적절하지 못한 상속을 사용하면 의도했던 것과 다르게 동작할 수 있다. 인터페이스를 구현함. 공통된 기능을 하는 것들 끼리 묶음. can-do 관계. 장점 - 다중 구현이 가능하다 단점 - 인터페이스의 내용이 바뀌면 이를 구현하는 모든 클래스의 소스가 변경되어야 한다 *디자인 패턴 중 상속과 구현의 가장 큰 차이점을 확인할 수 있는 것은 Template Method Pattern
오버라이딩(Overriding) : 부모 클래스로부터 상속받은 메서드를 재정의. 메서드명, 매개변수(타입, 갯수, 순서), 리턴 타입이 같아야 한다. 접근 제한자는 부모와 같거나 더 넓게 지정 오버로딩(Overloading) : 클래스 내에서 이름이 같은 메서드를 중복 정의. 메서드명이 같아야 하지만, 매개변수(타입, 갯수, 순서)가 다른 것. 인자 자체의 이름이나 메서드의 리턴 타입, 접근제한자는 관계가 없다. https://defacto-standard.tistory.com/13https://defacto-standard.tistory.com/15