2018의 게시물 표시

A byte of python 번역 링크

http://byteofpython-korean.sourceforge.net/byte_of_python.html

Java 관련 기초 지식들

Enum은 관련이 있는 상수들의 집합이다 C / C++ 은 #ifdef, #ifndef로 특정 코드를 선택적으로 컴파일할 수 있는 전처리기가 있는 반면, 자바는 없다 Java의 String class는 Immutable 한 클래스이다. 따라서 한 번 문자열을 생성하면 문자열의 값을 바꾸는 것은 불가능하다 따라서 replace, replaceAll, toLowerCase등의 메소드는 모두 기존의 문자열은 그대로 두고 새로운 문자열을 리턴한다. 문자열 병합은 StringBuilder (혹은 StringBuffer) 클래스의 append 메소드를 통해 이루어진다 StringBuffer는 멀티 쓰레드 세이프하고, 이때문에 초창기 자바는 StringBuffer를 사용했는데, .append 메소드는 매번 락을 잡았다 풀었다 하였기 때문에 심각한 속도 저하의 원인이 되기도 했었다 Java static 은 '딱 한번만' 메모리 공간에 할당한다 싱글톤 패턴이란 어떤 클래스가 오직 하나만의 객체를 갖도록 하고 프로그램 전반에 그 객체 하나만 사용하는 것이다 멀티쓰레드 환경에서의 올바른 싱글톤 public class Singleton {     private SingleTon() {}     public static Singleton getInstance() {         return LazyHolder.INSTANCE;     }     private static class LazyHolder {         private static final Singleton INSTANCE = new Singleton();     } } - 싱글톤 클래스에는 LazyHolder 클래스의 변수가 없기 때문에 Singleton class 로딩 시 LazyHolder 클래스를 초기화하지 않는다 - Lazyholder 클래스는 Singleton 클래스의 getInstance() 메서드에서 Lazyholder.INSTANCE를 참조

Java language specification 정리

Java language 설명서 http://jkkang.net/Java/Manual/javaspec.html 1.2.4.1 정수 표현(integer LIterals) 정수형은 10진수, 16진수, 8진수로 표현할 수 있다. 10진수는 (0~9)까지의 값을 가지고 접두어는 생략한다. 16진수는 (0~9, A~F)까지의 값을 가지고 접두어로 '0X 또는 0x'를 붙힌다. 8진수는 (0~7)까지의 값을 가지고 접두어로 '0'가 붙는다. 1.2.4.2 실수 표현(Floating Point Literals) 실수형 표현은 "."을 이용하여 소숫점이상, 이하를 표현한다. 'E 또는 e'를 사용하여 지수를 표현한다. 다음은 모두 올바른 실수형의 표현이다.  3.1415 3.1E12 .1e12 2E12 1.3 자료형(Types) Java language에서는 두가지 simple, composite 형태의 자료형이 있다. Simple type은 atomic하기 때문에 절대 손상되지 않는 type으로 integer, floating point, boolean, charter 등이 있다. Composite type은 simple type으로 구성된 자료형으로, array, classes, interface 3가지가 있다. 1.3.3 배열. (Array) 배열은 언어에서 first class object이다. 배열은 new 연산자를 사용하여 생성한다.  char s[] = new char[30]; Multi-dimensional 배열은 제공되지 않는다. 대신, programmer는 배열의 배열을 정의할 수 있다. int i[][] = new int[3][4]; 배열의 배열에서 배열의 크기는 최소한 하나는 명시되어야 한다. 명시되지 않은 부분은 다음에 명시적으로 크기를 정할 수 있다. int i[][] = new int[3][]; Java에