인터페이스 일종의 추상 클래스 추상클래스와 달리 일반 메서드를 멤버로 가질 수 없음. -JDK1.8부터 등장한 static 메서드, default 메서드는 예외 인터페이스 정의하는 방법 interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(파라미터목록); } 모든 멤버변수는 public static final 로 선언. (생략 가능) 모든 메서드는 public abstract 로 선언. (생략 가능) JDK1.8부터 등장한 static 메서드, default 메서드는 예외 인터페이스 구현하는 방법 인터페이스는 추상클래스와 마찬가지로 그 자체로 인스턴스를 생성할 수 없음 자신이 정의한 추상메서드의 body를 만들어주는 클래스를..
자바 상속의 특징 상속 기존 클래스를 재사용해서 새로운 클래스를 작성하는 것. extends : 조상 클래스를 “확장” 한다. 조상 클래스가 변경되면 자손 클래스는 자동적으로 영향을 받지만 자손 클래스가 변경되는 것은 조상 클래스에 아무런 영향을 주지 못한다. 생성자와 초기화 블록은 상속되지 않는다. 멤버만 상속된다. C++ 와 달리, 단일 상속만 가능하다. 다중 상속 시, 클래스간 관계가 매우 복잡해짐. 서로 다른 클래스로부터 상속 받은 멤버의 이름이 같을 경우, 구별할 수 있는 방법이 없음. 포함관계를 이용해서 다중상속과 유사한 효과를 낼 수 있음. super 키워드 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조할 때 사용되는 참조변수. 일반적으로, 조상 클래스로부터 상속 받은 멤버 또한 자..
클래스 클래스 정의하는 방법 클래스 : 객체 != 붕어빵틀 : 붕어빵 흔히 클래스와 객체 간 관계를 붕어빵틀 - 붕어빵 에 비유한다. 하지만 이는 적절한 비유가 아니다. 붕어빵틀 붕어빵 = new 붕어빵틀(); 붕어빵 틀을 하나 만들었더니 붕어빵이 되었다? 뭔가 이상하다. 클래스는 ‘분류’를 위한 개념으로 이해하는 것이 적절하다. 사람 김연아 = new 사람(); 클래스는 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념이다. 클래스 정의 방법 속성 : 객체들이 가진 공통된 특성 중, 명사로 표현되는 특성. 메서드 : 객체들이 가진 공통된 특성 중, 동사로 표현되는 특성. modifiers private default (접근 지시자를 명시하지 않는 경우) : 동일한 패키지 내에서만 객체 생성 가능 pr..
선택문 (조건문) if문 if (조건식){ //조건식이 참일 때 수행할 코드 } 자바에서 조건식의 결과는 반드시 boolean 이어야 함을 기억하자. switch문 if문은 경우의 수가 많아지면 그만큼 if-else문과 조건식이 늘어나서 코드가 복잡해진다. switch문을 사용하면 이런 문제를 해결할 수 있다. switch(조건식) { case 값1 : // code break; case 값2 : // code break; default : //code } break 를 생략하면 다른 break문을 만나거나 switch문의 ‘}’ block을 만날 때까지 있는 코드를 모두 수행한다는 점을 주의하자. -> 이런 human fault를 방지하기 위해 Java 12 부터 switch operator를 제공한다..
IT 서적 구매해 보신 분들은 yes24 나 교보문고 리뷰에서 '나는 리뷰어다에서 책을 제공받아...' 이런 문구가 담긴 리뷰를 많이 보셨을 텐데요, 저도 이걸 보고 IT 서적 서평단을 하고 싶다고 생각했었습니다. 그런데 찾아보니 지금이 바로 모집기간이더라고요!! 매달 한빛미디어에서 기술서적을 한 권씩 제공받고, 개인 블로그 혹은 SNS에 서평을 남기면 됩니다. 반강제로(?) 공부를 꾸준히 할 수 있는 좋은 기회라고 생각합니다. 제가 신청해 보니 신청 절차도 매우 간단합니다. 관심 있으신 분들은 모두 신청하셨으면 좋겠어요! 모집기간 : 1월 13일(목) ~ 1월 23일(일) 모집공고 : https://www.facebook.com/hanbitmedia/posts/4659841220719156
산술 연산자 사칙 연산 (+,-,*,/) 타입에 유의하자 int a = 1_000_000; int b = 2_000_000; long c = a * b; System.out.println("c = " + c); //c = -1454759936 a*b 를 수행하는 과정에서 이미 overflow가 발생하기 때문에 예상과 달리 음수값이 나온다. int a = 1_000_000; int b = 2_000_000; long c = (long)a * b; System.out.println("c = " + c); //c = 2000000000000 해결방법은, 한 쪽에 casting을 걸어서 연산 과정 중에 자동 형변환이 이루어지도록 하면 된다. 리터럴 연산은 연산 중간에 형변환되지 않는다. char c1 = ..

정말 마주치고 싶지 않은 Maven error... 해결책을 찾지 못해서 오전 시간을 다 날렸다.. 문제원인 에러 로그를 읽어보면, central 에서 artifact를 찾지 못한다고 한다. 아니 분명 pom.xml에 repository 까지 잘 등록했는데..? -> pom.xml 에 repository를 등록했음에도, maven에서 central repository 만을 찾아보는 것이 문제였다. (이븐아 너 왜 그래...) 해결방법 maven이 다른 repository를 찾아볼 수 있도록 mirror 설정을 해주면 된다. intelliJ 검색 (shift + shift) 에서 settings.xml을 찾는다. settings.xml 에서 다음과 같은 코드를 추가한다. 이때 주석처리되지 않도록 주의하자!..

실습 환경 Java 11 IntelliJ Springboot Project 생성 시 dependency 에서 Spring Reactive Web 추가 혹은 projectreactor 의 dependency를 추가한다. io.projectreactor reactor-core Reactive Streams 등장 배경 리액티브 프로그래밍을 구현한 라이브러리들이 동시다발적으로 구현되기 시작했다. 이에 하나의 규칙을 정해서, 여러 리액티브 프로그래밍 구현체들이 상호 변환 가능하도록 만들자는 목소리가 나오기 시작했다. It is the intention of this specification to allow the creation of many conforming implementations, which by vi..

다른 직군도 그런지 모르겠지만, 개발자는 이맘때 블로그에 1년 회고록을 쓰는 문화가 있다. 지난 시간을 돌아보고, 새로운 목표를 세우는 것은 그 자체로 활기를 얻는 일이고, 분위기에 휩쓸리는 척 쑥스러운 내 이야기를 꺼내놓을 수 있는 기회니까 나도 회고록을 적어보기로 했다. ### 취업 7월, 8월 두 달간 인턴을 했다. 사용해 본 적도 없는 메시징 시스템을 구현하는 과제가 주어졌다. 요구사항만 주어지고, 설계부터 혼자 힘으로 해나가야 해서 정말 막막했다. 그래도 조급해하지 않고, 당장 할 수 있는 것들을 하나씩 수행하니 프로젝트가 궤도에 올랐고, 이후엔 좌충우돌하며 과제를 완성할 수 있었다. 최종발표 때 내가 만든 프로그램이 에러를 내뿜고, 팀원 분들이 주신 질문에 제대로 답을 못한 것이 있어서 정직원..
프리미티브 타입 종류와 값의 범위 그리고 기본 값 논리형 boolean 1 byte 기본값(field) : false 문자형 char 2 bytes 0 ~ 2^16-1 (0~63335) 기본값(field): ‘\u0000’ 정수형 byte 1 byte -2^7 ~ 2^7-1 기본값(field): 0 short 2 bytes -2^15 ~ 2^15-1 기본값(field): 0 int 4 bytes -2^31 - 2^31-1 -> 약 20억 기본값(field): 0 long 8 bytes -2^63 ~ 2^63-1 기본값(field): 0L 실수형 float 4 bytes 기본값(field): 0.0f double 8 bytes 기본값(field): 0.0d 프리미티브 타입과 레퍼런스 타입 primitive..
- Total
- Today
- Yesterday
- 코테
- 코딩테스트
- 토비의봄TV
- 프로그래머스
- 메서드레퍼런스
- provider
- 디자인패턴
- ec2
- 템플릿콜백
- c++
- java
- AOP
- gracefulshutdown
- SOLID
- 토비
- OOP
- 김영한
- 자바스터디
- 프록시패턴
- 데코레이터패턴
- 서비스추상화
- 토비의스프링
- 프록시
- 자바
- BOJ
- 카카오
- 예외처리
- 객체지향
- 백기선
- 스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |