일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java 1000번 A+B
- 윤년계산하기
- Oracle JDK와 OpenJDK의 차이
- 우테코
- ServiceTest
- 방어적 복사
- 상근날드
- 인수테스트
- Getter Setter
- 자바로 만들수 있는 것
- JXM
- 자바의 종류
- throw 와 throws 차이
- 블랙잭 회고
- 프로젝트 패키지 구조
- 객체지향적인 설계
- 상수와 Enum
- PR 오류
- 백준
- 우아한테크코스
- 우테코4기
- There isn't anything to compare.
- 테스트 성능 개선
- 리스코프치환원칙
- 자바 버전 다운 그레이드
- 자바 4334
- ControllerTest
- 제임스고슬링
- 자판기미션
- JDK
- Today
- Total
목록java (9)
개발새발
String.split() 의 비밀 자동차 이름 예외처리를 하다가 "pobi, jun," 처럼 문자의 제일 끝에 ,가 오는 경우에 예외처리를 해줘야 할 것 같았는데, 예외 처리를 하지 않아도 동작에 이상이 없는것이 이상했다. 그래서 알아보기로 했다. String.split() 의 동작 원리 평소 사용하던 split() 내부를 보니 , limit 기본이 0 으로 설정되어 있었다. split 에 있는 limit의 3가지 역할 생각보다 limit 는 많은 역할을 하고 있었다. limit 0 이면 맨뒤에 부터 문자가 1이상 전까지 공백이 제거됨. (그래서 "pobi, jun,,".split(",") 일 때 배열 크기가 2 였음. ) limit 음수면 공백 포함됨 limit 양수면 공백 포함, 크기가 limit만..

Private 로는 데이터를 지키기에 부족한걸까? 맨 처음 객체 지향에 대해 배울 때, 데이터를 다른 곳에서 변경하지 못하도록 접근 제어자를 private 로 두고, getter / setter 를 사용하라고 배웠다. 그런데 이번 요구사항에 최대한 setter 를 쓰지 않고 해보라 는 의문의 메시지가 있었다.. ! 😲😲 왜 그렇게 해야할까? 객체 지향 프로그래밍의 본질 객체 상태를 보호하기 위해 외부에 노출되는 정보를 줄이고, 다른 객체와 메세지를 주고받아 협력하는 것 이라고 생각한다. 여기서 핵심 키워드는 노출되는 정보를 줄임 과 메세지로 협력 이다. setter 를 사용하게되면 클래스 외부에서 내부를 수정하게 되니, 객체를 보호하는 것에 멀어지고, getter 를 사용하게되면 정보를 노출한다. 캡슐화..

숫자 중복을 체크하며 발견한 오류 숫자 중복 문제를 어떻게 구현할까 고민하다가 중복을 허용하지 않는 자료형인 Set 이 떠올랐다. 정렬은 하지 않을 것이기 때문에 HashSet을 선택하고 구현했다. 테스트로 123, 456 489 등을 넣었다. 결과 값이 잘 나왔다. 다음으로 986을 넣었더니 689로 출력되었다 뭐지? 하고 찾아보니 HashSet은 순서를 보장하지 않는다는 단점을 발견했다. 이 부분은 LinkedHashSet로 해결했다. 이 참에 Set에 대해 깊게 알아보자. HashSet은 왜 순서를 보장하지 않을까? 내부를 살펴보니 내부가 HashMap 으로 구현 되어 있다. 위에서 언급했듯 HashMap, HashSet 은 순서를 보장하지 않는다는 특징이 있다. 그럼 랜덤으로 결과가 나오나??? ..
매직 넘버/매직 리터럴을 static final로 선언하는 이유가 뭘까? 범위를 표현하거나, 출력문을 사용하면서 이전에 읽었던 자바 코딩의기술 내용 중 매직넘버를 상수로 대체 하라는 내용이 떠올랐다. 그래서 static final 을 사용해서 구현했는데, 문득 불변함을 표시하고 변수명으로 사용 의미를 표현하려면 final로도 충분하지 않나? 라는 생각이 들었고 알아보기로 했다. 매직 넘버/매직 리터럴 프로그래밍에서 상수로 선언하지 않은 숫자를 매직 넘버, 문자열을 매직 리터럴이라고 한다. final final은 해당 오브젝트가 단 한번 할당할 수 있음을 의미한다. 즉 값이 변하지 않음을 의미한다. static 데이터가 프로그램 실행 직후부터 끝날 때까지 메모리 수명이 유지됨을 의미한다. 매직 넘버/매직 ..

사용하는 메서드 내부 동작을 살펴보다가 private로 선언된 생성자를 발견했다. private로 선언하면 인스턴스 생성을 못하지 않나?? 왜 그렇게 했을까 궁금해졌다. 생성자(Constructor) 객체를 생성할 때 항상 실행되는 것으로, 객체를 초기화해주기 위해 맨 처음 실행되는 메소드이다. private private는 동일 package, 다른 package 모두 접근이 불가능하고 같은 Class 내에서만 접근을 허용하는 제한자이다. private 생성자가 있는 클래스의 모든 메서드는 static이다? 다시 돌아오자 객체는 생성하지 않는데, 모든 메서드는 전역에서 접근이 가능하다.. 쓰읍 뭔가 싱글톤에 냄새가 난다. 맨처음 빌드가 되면 모든 클래스가 메모리할당이 되고, 그 상태에서 클래스 내에 메..

자바란 무엇인가? 요새 가장 많이 쓰이는 프로그래밍 언어로 제임스 고슬링이 가정용 전자 제품에 사용할 수 있는 작은 컴퓨터 언어를 개발하기 위해 만들었다. Write Once, Run Everywhere. 한번만 작성하고 어디서나 실행하세요. 슬로건에 맞게 자바는 가상 머신을 통해서 (JVM) 를 사용해서 CPU 나 운영체제에 상관 없이 어디서나 실행 가능하다! 자바의 특징 1. 단순하지만 강력하다. 2. 객체 지향적이다 3. 분산 처리를 지원한다. 4. 견고하고 안전하다. 5. 컴퓨터 구조에 중립적이다. 6. 이식성이 있다. 7. 멀티 스레딩 지원 8. 동적이다. 자바 가상 기계 (JVM) 바이트 코드를 생성하고, 자바 가상기계가 한줄씩 해석되면서 특정 컴퓨터에서 실행함 컴파일러 -> JVM -> 윈도..

안녕하세요. 오늘은 지난번에 이어서 개발환경을 설치하도록 하겠습니다. 이클립스(eclipse)란? 이클립스란, 자바 프로그램을 쉽게 개발하기 위한 통합 개발 환경(IDE) 의 하나입니다. https://www.eclipse.org/ The Platform for Open Innovation and Collaboration | The Eclipse Foundation The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source projects, including runtimes, tools and frameworks. www.eclipse.org 여기로 들어가서, download..

안녕하세요. 오늘은 개발 환경을 설치해보겠습니다. 우리가 자바 프로그램을 개발하기 위해서는 자바 컴파일러가 있어야 합니다. 다운로드에 앞서, 개발을 하다 보면 JRE, JDK라는 용어가 자주 등장하는데요, 두 가지의 차이점은 무엇일까요? 「 JRE와 JDK의 차이 - JRE(JAVA RUNTIME EEVIRONMENT) jre는 자바 프로그램을 실행하기 위한 라이브러리, 자바, 가상 기계, 기타 컴포넌트들을 제공합니다. 자바 프로그램을 실행만 하고 개발은 하지 않는 일반인들을 위한 환경입니다! - JDK(JAVA DEVELROPMENT KIT) jdk는 jre에 자바 프로그램을 개발하는데 필요한 컴파일러, 디버거와 같은 도구들을 추가한 것입니다. 따라서 JDK안에는 jre가 포함되어 있으므로 개발자 여러..