자바의 정석

이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 프로세스와 스레드 (process & thread) - 프로세스 실행 중인 프로그램, 자원(resources)과 스레드로 구성 - 스레드 프로세스 내에서 실제 작업을 수행 모든 프로세스는 최소한 하나의 스레드를 가지고 있다 프로세스 : 스레드 = 공장 : 일꾼 - 싱글 스레드 = 자원 + 스레드 - 멀티 스레드 = 자원 + 스레드 + 스레드 + .... 하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 스레드를 생성하는 것이 더 적은 비용이 든다. 2. 멀티스레드의 장단점 대부분의 프로그램이 멀티스레드로 작성되어 있다. 그러나, 멀티스레드 프로그래밍이 장점만 있는 것은 아니다. 장점 - 시스템 자원을 보다 효율..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 사용자 정의 예외 만들기 - 우리가 직접 예외 클래스를 정의할 수 있다. - 조상은 Exception과 RuntimeException중에서 선택 class MyException extends Exception { MyException(String msg) { // 문자열을 매개변수로 받는 생성자 super(msg); //조상인 Exception클래스의 생성자를 호출한다. } } class MyException extends Exception { //에러 코드 값을 저장하기 위한 필드를 추가 했다. private final int ERR_CODE; //생성자를 통해 초기화 한다. MyException(String ms..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 예외 발생시키기 1. 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음 Exception e = new Exception("고의로 발생시켰음"); 2. 키워드 throw를 이용해서 예외를 발생시킨다. throw e; ⍟실습 더보기 Ex8_6 class Ex8_6 { public static void main(String args[]) { try { Exception e = new Exception("고의로 발생시켰음."); throw e; // 예외를 발생시킴 // throw new Exception("고의로 발생시켰음."); } catch (Exception e){ System.out.print..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 프로그램 오류 - 컴파일 에러 (compile-time error) : 컴파일 할 때 발생하는 에러 - 런타임 에러 (runtime error) : 실행 할 때 발생하는 에러 => 실행이 되다가 실행 중 문제 발생 에러 (error) 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예) Out of Memory Error 예외 (exception) 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 에러는 어쩔 수 없지만, 예외는 처리하자! - 논리적 에러 (logical error) : 작성 의도와 다르게 동작 => 잘 동작은 하는데 개발자가 원하는대로 동작x 자바 컴파일러가 하는 일 1. 구문 체크 2...
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 열거형 - 관련된 상수들을 같이 묶어 놓은 것. Java는 타입에 안전한 열거형을 제공 알아서 숫자를 부여해준다. if(Card.CLOVER == Card.TWO) 라는 코드가 있다고 하자. true이지만 false여야 의미상 맞다. Java는 값과 타입을 모두 체크한다. 그렇기 때문에 위 코드를 쓰면 컴파일 에러가 난다. 타입이 달라서 비교가 불가능한 것이다. 2. 열거형의 정의와 사용 - 열거형을 정의하는 방법 enum 열거형이름 { 상수명1, 상수명2, ... } //예 // 0 , 1 , 2 , 3 enum Direction { EAST, SOUTH, WEST, NORTH } - 열거형 타입의 변수를 선언하고..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 제네릭 타입의 형변환 - 제네릭 타입과 원시 타입 간의 형변환은 바람직하지 않다. (경고 발생) Box objBox = null; Box box = (Box)objBox; //OK. 제네릭 타입(Box) -> 원시 타입(Box). 경고 발생 objBox = (Box)box; //OK. 원시 타입(Box) -> 제네릭 타입(Box). 경고 발생 더보기 Ex12_3을 이용해보자. class Ex12_3 { public static void main(String[] args) { Box b = null; Box bStr = null; b = (Box)bStr; //Box -> Box 가능 But 경고 bStr = (Box..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 제네릭(Generics)란? - 컴파일시 타입을 체크해 주는 기능(compile-time type check) - JDK1.5 //Tv객체만 저장할 수 있는 ArrayList를 생성 ArrayList tvList = new ArrayList(); tvList.add(new Tv()); //OK tvList.add(new Audio()); //컴파일 에러. Tv 외에 다른 타입은 저장 불가 - 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여줌 (하나의 컬렉션에는 대부분 한 종류의 객체만 저장) 제네릭의 장점 1. 타입 안정성을 제공한다. 2. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다. Except..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. Collections ⚝ 컬렉션 채우기, 복사, 정렬, 검색 - fill(), copy(), sort(), binarySearch() 등 ⚝ 컬렉션의 동기화 - synchronizedXXX() - vector와 ArrayList 모두 배열 기반 컬렉션이다. 이 둘의 차이는 동기화(13장.쓰레드)였다. 과거에는 무조건 동기화가 되어있었다. 그런데 동기화가 필요하지 않을 때는 불필요한 기능이 되어서 ArrayList에서는 메서드로 빼서 필요할 때만 사용하도록 했다. - 사용법 List syncList = Collections.synchronizedList(new ArrayList(...));​​ 동기화되지 않은 리스트를..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. HashMap과 Hashtable - 순서X, 중복(키X, 값O) - Map 인터페이스를 구현. 데이터를 키와 값의 쌍으로 저장 - HashMap(동기화X)은 Hashtable(동기화O)의 신버전 TreeMap은 TreeSet처럼 이진탐색트리이다. ⚝ HashMap - Map인터페이스를 구현한 대표적인 컬렉션 클래스 - 순서를 유지하려면, LinkedHashMap클래스를 사용하면 된다. ⚝ TreeMap - 범위 검색과 정렬에 유리한 컬렉션 클래스 - HashMap보다 데이터 추가, 삭제에 시간이 더 걸림 2. HashMap의 키(key)와 값(value) - 해싱(hashing)기법으로 데이터를 저장. 데이터가 많..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. TreeSet - 범위 탐색, 정렬 - 이진 탐색 트리(binary search tree)로 구현. 범위 탐색과 정렬에 유리 - 이진 트리는 모든 노드가 최대 2개(0~2)의 하위 노드를 가짐 각 요소(node)가 나무(tree) 형태로 연결(LinkedList의 변형) //트리 노드 class TreeNode { TreeNode left; //왼쪽 자식노드 Object element; //저장할 객체 TreeNode right; //오른쪽 자식노드 } //LinkedList 노드 class Node { Node next; //다음 요소의 주소를 저장 Object obj; //데이터를 저장 } 2. 이진 탐색 트리(..
i_zzy
'자바의 정석' 태그의 글 목록