본문 바로가기

JAVA

쓰레드와 동기화(1) 1.프로세스와 쓰레드(process & thread) - 프로세스는 실행중인 프로그램을 의미한다. - 쓰레드는 프로세스 내에서 별도의 실행흐름을 갖는 대상이다. - 프로세스 내에서 둘 이상의 쓰레드를 생성하는 것이 가능하다. - 사실 쓰레드는 모든 일의 기본 단위이다. main 메소드를 호출하는 것도 프로세스 생성시 함께 생성 되는 main 쓰레드를 통해서 이뤄진다. - 별도의 쓰레드 생성을 위해서는 별도의 쓰레드 클래스를 정의해야 한다. - 쓰레드 클래스는 Thread를 상속하는 클래스를 의미한다. - start 메소드가 호출되면 쓰레드가 생성되고, 생성된 쓰레드는 run 메소드를 호출한다. class ShowThread extends Thread //쓰레드를 상속 받아야 한다. { String thr.. 더보기
컬렉션 프레임워크 1.컬렉션 프레임워크의 의미와 구조 ▶프레임워크 의미 : 잘 정의된, 약속된 구조와 골격 ▶자바의 컬렉션 프레임워크 : 인스턴스(데이터)의 저장과 참조를 위해 잘 정의된, 클래스들의 구조 ▶컬렉션 프레임워크가 제공하는 기능의 영역 : 자료구조와 알고리즘 - 자바의 컬렉션 프레임워크는 별도의 구현과 이해없이 자료구조와 알고리즘을 적용할 수 있도록 설계 된 클래스들의 집합이다. 그러나 자료구조의 이론적인 특성을 안다면, 보다 적절하고 합리적인 활용 이 가능하다. 2.List 인터페이스를 구현하는 제네릭 클래스들 - List 인터페이스를 구현하는 대표적인 제네릭 클래스 : ArrayList, LinkedList - List 인터페이스를 구현 클래스의 인스턴스 저장 특징 1)동일한 인스턴스의 중복 저장을 허용한.. 더보기
제네릭(Generics) 제네릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능이다. 즉, 클래스 내부에서 사용할 데이터 타입을 나중에 인스턴스를 생성할 때 확정하는 것을 제네릭이라 한다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. ArrayList와 같은 컬렉션 클래스는 다양한 종류의 객체를 담을 수 있긴 하지만 보통 한 종류의 객체를 담는 경우가 더 많다. 그런데도 꺼낼 때 마다 타입체크를 하고 형변환을 하는 것은 아무래도 불편할 수 밖에 없다. 1.자료형의 안전성에 대한 논의 예제 1. class Orange { int sugarContent; // 당분 함량 public Orange(int sugar) { sugarC.. 더보기
Object 1.Object클래스 - 모든 클래스의 최고 조상. 오직 11개의 메서드만을 가지고 있다. - 자바 클래스가 아무것도 상속하지 않으면 java.lang 패키지의 Object 클래스를 자동으로 상속한다. 때문에 모든 자바클래스는 Object 클래스를 직접적 혹은 간접적으로 상속한다. - 자바의 모든 인스턴스는 Object 클래스의 참조변수로 참조가능 - 자바의 모든 인스턴스를 대상으로 Object 클래스에 정의된 메소드 호출가능 Object obj1 = new MyClass(); Object obj2 = new int[5]; //배열도 인스턴스이므로 가능 2.toString 메소드 - Object 클래스에는 toString 메소드가 다음의 형태로 정의되어 있다. public String toString( .. 더보기
예외처리 1.프로그램 오류와 예외 처리 ▶ 컴파일 에러(compile-time error)와 런타임 에러(runtime error) - 컴파일 에러 - 컴파일할 때 발생하는 에러 - 런타임 에러 - 실행할 때 발생하는 에러 ▶ Java의 런타임 에러 - 에러(error)와 예외(exception) - 에러(error)는 어쩔 수 없지만, 예외(exception)는 처리해야 한다. 2.try~catch문 - try 영역에서 발생한 예외상황은 이어서 등장하는 catch 영역에서 처리한다. - 처리할 문장이 단문이라도 중괄호{} 를 생략해서는 안된다. try { /* 예외 발생 가능 지역 */ } catch(처리 되어야 할 예외의 종류) { /* 예외를 처리하는 코드 */ } 3.e.getMessage() 메소드 - .. 더보기
인터페이스 인터페이스(interface)란? - 일종의 추상클래스. 추상클래스(미완성 설계도)보다 추상화 정도가 높다. - 실제 구현된 것이 전혀 없는 기본 설계도.(알맹이 없는 껍데기) - 인스턴스를 생성할 수 없고, 클래스 작성에 도움을 줄 목적으로 사용된다. - 미리 정해진 규칙에 맞게 구현하도록 표준을 제시하는 데 사용된다.(프로젝트를 나눠 진행도 가능) - 'class'대신 'interface'를 사용한다는 것 외에는 클래스 작성과 동일하다. - 인터페이스도 참조변수 선언이 가능하고, 메소드 오버라이딩 원칙 그대로 적용된다. - 하지만, 구성요소(멤버)는 추상메서드와 상수만 가능하다. interface 인터페이스이름 { public static final 타입 변수이름 public abstract 리턴타입.. 더보기
상속, 오버라이딩 상속이란? - 기존의 클래스를 재활용해서 새로운 클래스를 작성하는 것. - 상속을 통해 연관된 일련의 클래스에 대한 공통적인 규약을 정의하고 적용하는데, 상속의 실질적인 목적이 있다. 오버라이딩이란? - 상위 클래스에 정의된 메소드의 이름, 반환형, 매개변수 선언까지 완전히 동일한 메소드를 하위 클 래스에서 다시 정의하는 것! - 즉, 상위 클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것이다. - 하위 클래스에 정의된 메소드에 의해 상위 클래스의 메소드는 가리워진다. 예제 1. //부모(조상,super) 클래스: 원본이 되는 클래스 public class Person { private String name; private int age; public Person(String na.. 더보기