
오버플로우 산술 연산을 할 때 주의할 점은 충분히 표현 가능한 산출 타입인지 확인해야 한다. 산출 타입으로 표현할 수 없는 값인 경우 오버플로우가 발생하여 쓰레기 값이 반환된다. public class OverflowExample { public static void main(String[] args) { int x = 50000; int y = 50000; int z = x * y; System.out.println(z); } } 변수 x, y는 int 타입이고 z 역시 int 타입이다. 컴파일 에러도 없다. 하지만 변수 z에 예상한 값이 저장되지 않는다. 그 이유는 int 타입 범위를 초과하였기 때문이다. 올바른 값을 얻기 위해서는 변수가 long 타입이어야 한다. public class Overfl..

자바의 특징 이식성이 높은 언어이다. 자바 언어로 개발된 프로그램은 소스 파일을 다시 수정하지 않아도, 자바 실행 환경(JRE)이 설치되어 있는 모든 운영체제에서 실행이 가능하다. 객체 지향 언어이다. 자바는 100% 객체 지향 언어이다. 객체를 만들기 위해 설계도인 클래스를 작성해야 하고, 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 낸다. 처음부터 객체를 고려하여 설계되었기 때문에 객체 지향 언어가 가져야 할 캡슐화, 상송, 다형성, 기능을 완벽하게 지원하고 있다. 함수적 스타일 코딩을 지원한다. 자바는 함수적 프로그래밍을 위해 람다식을 자바 8부터 지원한다. 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해진다. 메모리를 자동으로 관리한다. 자..

java.lang.Object 클래스가 toString 메서드를 제공하긴 하지만 이 메서드가 반환하는 문자열은 일반적인 문자열이 아니다. 클래스 이름 다음에 @ 기호와 16진수로 표현된 해시 코드가 붙은 문자열이다. toString의 일반 규약에는 '모든 하위 클래스는 이 메서드를 재정의함이 바람직하다.(It is recommended that all subclasses override this method.)' 라는 구절도 있다. toString을 재정의 하면 디버깅할 때에도 많은 도움이 된다. 그리고 객체를 바로 문자열과 연결시켜 사용할 때도 편하게 작업할 수 있다. 가능하다면 toString 메서드는 객체 내의 중요 정보를 전부 담아 반환해야 한다. toString이 반환하는 문자열의 형식을 떠나 ..

많은 버그가 hashCode 메서드를 재정의하지 않아서 생긴다. equals 메서드를 재정의하는 클래스는 반드시 hashCode 메서드도 재정의 해야 한다. 그렇지 않으면 Object.hashCode의 일반 규약을 어기게 되므로 HashMap, HashSet, Hashtable 같은 hash 기반 컬렉션과 함께 사용하면 오동작하게 된다. 일반 규약 같은 객체의 hashCode를 여러 번 호출하는 경우 equals가 사용하는 값이 변경되지 않았다면 언제나 동일한 정수(Integer)가 반환되어야 한다. 단 프로그램이 재시작되었을 경우 같은 값이 나올 필요는 없다. equals 메서드가 같다고 판정한 두 객체의 hashCode 값은 같아야 한다. equals 메서드가 다르다고 판정한 두 객체의 hashCod..

equals 메서드는 재정의하기 쉬워 보이지만 실수할 여지도 많다. 이런 문제를 피하는 가장 간단한 방법은 equals 메서드를 재정의 하지 않는 것이다. 아래 조건 중 하나라도 만족하면 equals 메서드를 재정의 하지 않아도 된다. 각각의 객체가 고유한 경우 상위 클래스에서 재정의한 equals가 하위 클래스에서 사용하기에도 적당 한 경우 그렇다면 Object.equals를 재정의하는 것이 바람직할 때는 언제인가? 객체 동일성(Object equality)이 아닌 논리적 동일성(Logical equality)의 개념을 지원하는 클래스인 경우 상위 클래스의 equals가 하위 클래스의 필요를 충족하지 못하는 경우 값 클래스(Value Class)는 대체로 그 조건에 부합한다. Value Class (I..

종료자(finalizer)는 예측 불가능하며, 대체로 위험하고, 일반적으로 불필요한다. 종료자는 C++의 소멸자(destructor)와는 다르다는 것을 유념해야 한다. C++의 소멸자는 생성자와 쌍으로 움직이기 때문에 소멸 즉시 호출된다. 하지만 Java에서는 사용되지 않는 객체에 할당된 공간을 GC가 알아서 반환하므로 프로그래머 입장에서 특별히 할 일이 없다. 신경 쓰지 않아도 된다는 말은 다른 말로는 즉시 처리가 되지 않는다는 의미이기도 하다. 따라서 긴급한 작업을 종료자 안에서 처리하면 안 된다. Java에서는 try-finally를 이용하여 해제되어야 할 상황이라면 객체 종료를 보장하기 위해 반드시 그 즉시 직접 해제해야 한다. Java 1.7부터 try-with-resources 문을 지원하므로..

자바는 C/C++ 과는 다르게 더 이상 참조되지 않으면 객체들이 사용하던 메모리가 자동으로 회수된다. public Object pop(){ if(size == 0) throw new EmptyStackException(); Object result = elements[--size]; elements[size] = null; // 쓸모없는 reference 를 제거 return results; } 불필요한 객체를 null로 만들면 메모리에서 바로 제거되며 나중에 실수로 그 참조를 사용하더라도 NullpointException이 바로 일어나도록 할 수 있다. 자체적으로 관리하는 메모리가 있는 클래스를 만들 때는 메모리 누수가 발생하지 않도록 주의해야 한다. (ex. element 가 free 되면 objec..

JavaSE 유료화 정리 오라클이 자바스탠다드에디션(SE) 과금 방식을 BCL(영구 라이센스)에서 서브스크립션(구독 모델)으로 변경되었다. 이 선언은 그동안 무료로 인식된 자바의 유료화 선언으로 받아지면서 관련 업계에 큰 혼란을 초래했다. 2018년 9월 출시된 자바SE 11 버전은 서브스크립션 방식으로 출시되었다. 자바SE 8 버전은 2019년 1월부터 서브스크립션 방식으로 변경되었고, 단 개인의 경우 2020년 12월 말까지 무료로 제공된다고 한다. 참고로 나머지 버전에 대해서는 2013년 4월 이후 자바 6, 2015년 4월 이후 자바 7은 이미 서브스크립션으로 넘어갔고 자바9~10은 후속 버전 출시에 따라 지원이 중단되었다. 그동안 한국에서는 '자바=공짜'라는 인식이 강했다. 자바는 전 세계적으로..

8개의 기본 자료형 숫자와 boolean(true, false)을 나타내기 위한 자료형을 의미한다. 타입 자료형 기본값 byte 정수형 0 short 정수형 0 int 정수형 0 long 정수형 0L char 정수형 '\u0000' float 소수형 0.0f double 소수형 0.0d boolean 기타 false 참조 자료형 기본 자료형을 제외한 모든 타입을 말한다. 모든 클래스는 참조 자료형이라고 생각하면 된다. 참조 자료형과 기본 자료형의 차이 초기화할 때 기본 자료형은 값을 바로 지정하면 되지만, 참조 자료형은 일반적으로 new와 생성자를 지정하여 객체를 생성하다. 메서드를 호출할 때의 매개변수 기본 자료형 및 참조 자료형 모두 값을 전달하지만, 참조 자료형 안에 있는 변수들은 참조 주소를 전달..

이 책은 설명 이해를 돕기 위해 신입 개발자 "나초보"씨의 시련과 역경 스토리를 통해 성능 튜닝 이야기를 소개한다. Java 개발자라면 한 번쯤 읽어보면 좋은 책이다. 특히나 중급 개발자로 거듭나기 위해서 알야 할 기본적인 내용을 포함하고 있다. 프로파일링 툴, Colletion, Loop, Static, Synchronized, I/O, Sping, DB, XML/JSON, 서버 세팅, 안드로이드, JVM, GC 등에 대한 개괄적인 설명이 기술되어 있다. 많은 부분을 다루다 보니 깊이 있는 내용은 아니었지만 성능 튜닝에 대한 기본적인 지식을 쌓는 데는 큰 도움이 되었다.
- 프로그래머
- spring
- Linux 명령어
- 정렬 알고리즘
- 리눅스 명령어
- 회고
- 프로그래머스
- sort algorithm
- Java
- 경력관리
- 자바
- Eclipse
- 개발환경
- javascript
- 오라클
- React
- Tomcat
- effective java
- 이직
- 소프트웨어공학
- 성능분석
- 자바스크립트
- 제주도 여행
- 리액트 16
- 리액트
- Collection
- SQL
- 오라클 내장 함수
- Maven
- 제주도 3박4일 일정
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |