본문 바로가기
  • soobinhand의 기술 블로그
728x90

전체 글119

[자바 프로그래밍 언어] 14장 스레드 14.1 스레드 생성 컴퓨터에서 한 번에 하나씩 순서대로 실행되는 것을 스레드라고 한다. 단일 스레드 프로그래밍 모델은 대부분의 프로그래머들이 사용하는 방식이다. 은행 직원이라고 볼 수 있는 스레드는 다른 스레드와는 독립적으로 업무를 수행할 수 있다. 그리고 두 명의 은행 직원이 같은 서류 캐비닛을 사용할 수 있는 것처럼 스레드도 객체를 서로 공유할 수 있다. 이를 멀티 스레드라고 한다. 스레드를 생성하기 위해서는 가장 먼저 Thread 객체를 생성해야 한다. Thread worker = new Thread(); start 메소드는 Thread 객체의 데이터를 기반으로 새로운 스레드를 만든 후, 이를 반환한다. 그러면 가상 머신은 스레드의 run 메소드를 호출하여 스레드를 동작시킨다. start 메소드는.. 2022. 1. 3.
[자바 프로그래밍 언어] 13장 문자열과 정규 표현식 13.1 문자 시퀀스 String 객체는 불변성을 가지고 있기 때문에 문자열이 변경될 수 있다면 StringBuilder 클래스를 사용해야 한다. public char charAt(int index) 현재 시퀀스에서 지정된 index에 있는 char를 반환한다. public CharSequence subSequence(int start, int end) start부터 end까지로 구성된 시퀀스의 char값을 포함하는 CharSequence를 새로 생성해서 반환한다. 13.2 String 클래스 문자열은 불변성을 가진 문자 시퀀스이다. 그래서 문자열은 생성된 이후에는 절대 변경할 수 없다. indexOf 메소드의 오버로드 메소드들은 문자열의 앞에서부터 검색을 시도하고 lastIndexOf 메소드의 오버로드.. 2022. 1. 2.
[자바 프로그래밍 언어] 12장 예외와 검증 12.1 예외 타입 생성하기 예외는 코드를 어지럽게 하지 않으면서도 오류를 깔끔하게 검사하는 방법을 제공한다. 또한 자바의 예외는 간접적으로 오류 발생 여부를 알아내는 필드를 검사하는 방법이 아닌 직접적으로 오류 발생을 알아내는 방법을 제공하고 있다. 예외는 예상하지 못한 오류가 발생했을 때 던져진다. 그리고 이 예외는 오류를 발생시킨 메소드를 감싸고 있는 예외 처리 코드에 의해 잡힌다. 만약 예외가 잡히지 않았다면 프로그램은 종료된다. 예외는 객체이며 모든 예외 타입은 Throwable 클래스나 이 클래스의 서브 클래스를 확장해야 한다. 자바의 예외는 대부분이 검증된 예외이다. 새로 작성하는 예외들을 검증된 예외로 만들기 위해서는 Exception을 확장해야만 한다. 이렇게 생성된 검증된 예외는 라이브.. 2021. 12. 31.
[자바 프로그래밍 언어] 11장 제네릭 타입 11.1 제네릭 타입 선언 포괄적인 참조로 Object를 사용하는 것은 위험하다. 특정 타입의 요소를 저장할 수 있는 클래스를 각각 만드는 것은 비효율적이며 중복된 코드를 산출하게 만든다. 어떤 종류의 객체라도 저장할 수 있으며 저장되는 타입에 따라 메소드의 반환 타입과 매개변수 타입이 정해지는 클래스를 작성하는 것이 좋다. 이것이 제네릭 타입이 만들어진 이유다. Cell클래스를 Cell 클래스로 다시 작성하였으며 E의 Cell이라고 읽는다. E는 Cell 객체를 저장할 수 있는 요소 타입을 나타낸다. Cell의 제네릭 버전에서 E는 이전 Cell에서 Object를 사용했던 곳에는 어디든지 사용할 수 있다. E는 타입 변수라고 하며, 요소의 약자이다. 편의상, 타입 변수들은 단일 문자 이름을 가진다. 요.. 2021. 12. 31.
[자바 프로그래밍 언어] 10장 흐름제어 10.1 문장과 블록 없음 10.2 if-else 없음 10.3 switch switch ( 표현식 ) { case n : statements case m : statements default : statements } 표현식은 정수 타입이나 enum 타입 중 하나여야 한다. switch 문의 몸체는 switch 블록이라 하며 case 라벨을 포함할 수 있다. case 라벨은 정수 또는 enum 상수이다. switch 표현식이 case 라벨의 값과 일치한다면 제어는 해당 라벨의 첫 번째 문장으로 이동하고 일치하는 case 라벨을 찾지 못한 경우에는 default 라벨의 첫 번째 문장으로 이동한다. default 라벨도 존재하지 않는다면 switch 문은 종료된다. break 문이 없다면 실행은 defau.. 2021. 12. 29.
[Algorithms] 2장 - Sorting Insertion - 삽입 정렬 https://github.com/Soobinhand/Algorithms/blob/master/src/Sort/Insertion_Sort.java BinaryInsertion - 이진 삽입 정렬 https://github.com/Soobinhand/Algorithms/blob/master/src/Sort/BinaryInsertion_Sort.java Selection - 선택 정렬 https://github.com/Soobinhand/Algorithms/blob/master/src/Sort/Selection_Sort.java Shell - 쉘 정렬 https://github.com/Soobinhand/Algorithms/blob/master/src/Sort/Shell_So.. 2021. 12. 28.
[자바 프로그래밍 언어] 9장 연산자와 표현식 9.1 산술 연산 + - * / % 정수 나눗셈은 실수 부분을 잘라버린다. 7/2 = 3이다. 0으로 나누거나 0으로 나머지를 구하는 것은 ArithmeticException을 발생시킨다. NaN - Not a Number 숫자가 아님을 의미. 부동 소수점 산술 연산은 엄격한 방식과 비엄격한 방식 중 하나로 실행. 엄격한 부동 소수점 코드를 실행하면 모든 자바 가상 머신에서 정확히 동일한 결과를 얻을 수 있다. 하지만 비엄격은 규칙이 느슨하게 적용된다. 비엄격은 float나 double이 허용할 수 있는 범위보다 큰 값을 가지는 표현식의 중간 결과를 허용한다. 9.2 일반 연산자 ++i는 i의 값을 미리 증가시켜 17로 만든 후에 값을 사용함. i++은 i의 현재 값을 사용한 후에 증가시킴. 등호 연산자.. 2021. 12. 28.
[자바 프로그래밍 언어] 8장 기본 타입과 래퍼 클래스 8.1 공통 필드와 메소드 자바는 기본 타입과 이에 대응하는 래퍼 클래스간의 변환을 자동으로 해줌. Integer value = 3; 이게 가능하다. 박싱 변환 : 기본 값을 래퍼 객체로 변환 ( wrap과 box는 거의 비슷한 의미) 언박싱 변환 : 래퍼 객체에서 기본 값을 추출하는 것 래퍼 클래스는 감싸고 있는 기본 값을 불변 객체로 정의한다. new Integer(1)로 생성된 객체는 항상 1을 가지며 이 값을 수정할 수 없다. 래퍼 클래스는 다음과 같은 메소드를 가진다. public static Type valueOf(Type t) t 값을 가지는 지정된 Type의 객체를 반환한다. public static Type valueOf(String str) str를 변환한 값을 가지는 지정된 Type의.. 2021. 12. 27.
[자바 프로그래밍 언어] 7장 토큰, 값, 변수 7.1 어휘적 요소 컴파일의 첫 번째 단계는 어휘적 요소를 토큰으로 스캐닝하는 것이다. 이 단계에서 화이트스페이스와 주석이 무시된다. 주석은 프로그래머의 편의를 위한 것이다. 토큰은 언어의 기본 단어이다. 파서는 소스 코드를 토큰으로 분리하고 문장, 식별자, 기타 등등을 판별한다. 식별자는 변수, 상수, 라벨에 선언된 이름을 말하며 이 이름은 문자와 숫자로 구성할 수 있다. 다만 이름의 첫 글자는 문자여야 한다. 키워드는 자바에서 특별한 의미를 갖기때문에 식별자로 사용할 수 없다. 7.2 타입과 리터럴 타입은 기본 타입과 참조 타입으로 분류할 수 있다. boolean, char, byte, short, int, long, float, double 각각의 기본 데이터 타입과 대응하는 클래스 타입이 java.. 2021. 12. 27.
[자바 프로그래밍 언어] 6장 열거 타입 6.1 단순한 Enum 예제 카드 한 벌을 표시하는 enum은 아래와 같이 선언. public enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES } 기본적인 형태의 enum은 열거 타입을 표시하는 식별자 enum과 몸체로 구성되며 몸체에는 값이나 enum 상수를 지정할 수 있다. enum 상수는 항상 대문자. enum 상수는 클래스의 정적 필드이다. enum의 인스턴스를 new 연산자로 생성할 수는 없다. 즉, enum에는 접근할 수 있는 생성자가 없다고 봐야 한다. 단지 우리는 enum 상수를 위해 생성된 객체를 사용할 수 있을 뿐이다. 이런 단순한 사용으로 정수형 상수를 선언하는 것과 다른 점을 찾기 어렵겠지만, enum에는 완벽한 타입 안전이라는 중요한 다른 점이 있다... 2021. 12. 26.
728x90