프로그램 작성 언어기계어(machine language)• 0, 1의 이진수로 구성된 언어• 컴퓨터의 CPU는 기계어만 이해하고 처리 가능하다.어셈블리어• 기계어 명령을 표현하기 쉬운 단어인 니모닉 기호(mnemonic symbol)로 일대일 대응 시킨 언어고급언어•
실행결과?Hello30• Hello 라는 이름의 클래스를 선언• class 키워드로 클래스 선언• public으로 선언하면 다른 클래스에서 접근이 가능하다.• 클래스 코드는 { } 모두 작성해야 한다.• // : 한 라인을 주석 처리• / 내용 / : 여러 행을 주석
• 직접 키보드로부터 읽는 자바 표준 입력 스트림• 키 값을 바이트(문자x)로 리턴• 키의 값을 바이트 데이터로 넘기므로 응용 프로그램이 문자 정보로 변환해야 한다.• System.in 에게 키를 읽게 하고, 읽은 바이트를 문자, 정수, 실수 등 원하는 타입으로 변환하
• 인덱스(index)와 인덱스에 대응하는 데이터들로 이루어진 자료 구조• 배열을 이용하면 한 번에 많은 메모리 공간을 할당할 수 있다.• 같은 타입의 데이터들을 순차적으로 저장한다.• 배열의 인덱스는 0부터 시작한다.• 인덱스(index) : 배열의 시작 위치에서 0
• 문법에 맞지 않게 작성 코드 실행시 발생• 컴파일할 때 발견한다.• 잘못 동작하거나 결과에 악영향을 미칠 수 있는 실행 중 발생한 오류• 자바에서는 예외 처리가 가능하다.• 예외가 발생할 때 예외에 대응하는 자바 응용 프로그램의 코드• try-catcvh-final
• 객체를 캡슐로 포장하여 내부를 볼 수 없게 하는 것• 외부의 접근으로부터 객체를 보호하는 특징• 객체의 모양을 선언한 틀 (캡슐화)• 필드(멤버 변수)와 메소드(멤버 함수)는 모두 클래스 내에 구현한다.• 객체의 속성(state)과 행동(behavior)을 포함한다
• 서로 관련있는 클래스 파일(컴파일된 .class파일)을 저장하는 디렉토리• 자바 응용 프로그램은 하나 이상의 패키지로 구성된다.• private : 외부로부터 완벽 차단• 디폴트(접근지정자를 생략한 경우) : 동일 패키지에는 허용• protected : 동일 패키지
• 부모 클래스의 필드와 메소드를 자식 클래스가 물려받는 것• 동일한 특성을 재정의하는 것을 상속을 통해서 간결하게 만들 수 있다.• 멤버를 중복 작성할 필요가 없다.• 클래스들을 계층적으로 분류할 수 있다.• 클래스의 재사용과 확장이 용이하다.• 상속을 통해서 새로운
• 서브 클래스의 객체를 슈퍼 클래스 타입으로 타입 변환하는 것• 서브 클래스의 객체는 슈퍼 클래스의 모든 멤버를 가지고 있다.\-> 슈퍼 클래스의 객체로 취급 가능• 업캐스팅된 레퍼런스는 슈퍼 클래스의 멤버만 접근 가능하다.• 슈퍼 클래스의 객체를 서브 클래스 타입으
• Method Overriding• 슈퍼 클래스의 메소드를 서브 클래스에서 재정의하는 것• 메소드의 이름, 매개변수 타입과 개수, 리턴 타입이 모두 동일하여야 한다.• 동적 바인딩 발생\-> 서브 클래스에서 오버라이딩된 메소드가 무조건적으로 실행되는 것• 슈퍼 클래스
• 클래스가 구현해야 할 메소드들이 선언되는 추상형• interface 키워드를 이용하여 선언• 인터페이스에는 멤버 변수(필드)를 선언할 수 없다.※ 인터페이스는 객체를 생성할 수 없다.• 인터페이스 타입의 레퍼런스 변수는 선언할 수 있다.• 인터페이스를 상속받는 클래
• 자바의 기본 타입을 클래스화한 클래스• 기본 타입의 값을 객체로 다룰 수 있게하는 클래스• 이름이 Wrapper인 클래스는 존재하지 않는다.• 기본 타입의 값을 Wrapper 객체로 변환하는 것• 포장과 비슷한 의미• Wrapper 객체에 들어 있는 값을 기본 타입
문자열 (String) • java.lang.String에 존재 • String 클래스는 하나의 문자열을 표현한다. String 리터럴 • 문자열을 리터럴로 생성 • JVM이 리터럴을 관리한다. -> JVM의 스트링 리터럴 테이블에서 관리한다. • 자바 응용 프로그램
컬렉션 (Collection) • 요소(element) 객체들의 저장소 • 요소들의 개수에 따라 크기를 자동으로 조절 (가변 크기) • 요소 삽입, 삭제에 따른 요소의 위치를 자동으로 이동시킨다. • 제네릭(generics) 기법으로 구현된다. • 컬렉션의 요소는 객체
• 모든 종류의 데이터 타입을 다룰 수 있도록 함• 일반화된 타입 매개 변수로 클래스 또는 메소드를 작성하는 기법• 컴파일 시에 타입이 결정\-> 프로그램 작성을 안전하게 할 수 있다.• 런타입 타입 충돌을 방지할 수 있다.• ClassCastException 방지•
• 그래픽을 이용하기 위함\-> 사용자에게 이해하기 쉬운 모양의 정보를 제공• 강력한 GUI 컴포넌트를 제공한다.• GUI 프로그래밍이 쉽다.• GUI 컴포넌트와 그래픽을 이용\-> AWT 패키지와 Swing 패키지 이용• AWT : java.awt 패키지 사용• Sw
• Window, JWindow : BorderLayout• Frame, JFrame : BorderLayout• Dialog, JDialog : BorderLayout• Panel, JPanel : FlowLayout• Applet, JApplet : FlowLayo
• Event Driven Programming• 사용자의 입력 : 마우스 드래그, 마우스 클릭, 키보드 클릭 등• 센서로부터의 입력• 네트워크로부터의 데이터 송수신• 다른 스레드 또는 다른 응용 프로그램부터의 메시지• 이벤트가 발생하면 이벤트를 처리하는 이벤트 리스너
• 리스너 작성시 모든 추상 메소드를 구현해야 하는 부담이 있다.• 리스너의 모든 메소드가 단순 리턴하도록 구현한 클래스• 추상 메소드가 하나뿐인 리스너를 어댑터 클래스가 없다.\-> ActionListener, ItemListener, AdjustmentListene
• GUI 구성이 쉽다.• 스윙 패키지에 포함된 GUI 컴포넌트를 이용한다.• 일반적인 GUI 프로그램에 적합하다.• 작업 부담이 높다.• 선, 원, 도형, 이미지 등을 직접 그려 그래픽 화면을 구성한다.• 자유로운 GUI 프로그램에 적합하다.• 문자열이나 이미지를 컴
• 여러 아이템들을 리스트 형태로 보여주고 선택하는 컴포넌트• JComboBox< E >와 기본적으로는 같은 기능이다.• JScrollPane에 삽입하여 스크롤 지원 가능• < E >에 지정된 타입의 객체만 저장하는 리스트• 객체 배열로 아이템을 제공• Ve
• 모든 컴포넌트는 자신의 모양을 스스로 그린다.• 컨테이너는 자신을 그린 후, 자식들에게 그리기를 지시한다.• 스윙 컴포넌트가 자신의 모양을 그리는 메소드• 컴포넌트가 그려져야 하는 시점마다 호출\-> (크기 변경, 위치 변경 등)• JComponent 메소드 : 모
• 선, 사각형, 타원 등• 실행 결과• 실행 결과• 실행 결과• 실행 결과• 실행 결과• 실행 결과• 도형을 그리고 도형 내부를 칠하는 기능• 도형의 외곽선과 내부를 따로 칠하는 기능은 없다.• 도형을 칠하기 위한 메소드• 실행 결과
• 이미지의 원본 크기와 다르게 그리기 가능• 이미지의 일부분 등을 그리는 것이 가능• 컴포넌트로 관리되지 않는다.\-> 이미지에 이벤트가 발생하지 않는다.\-> 구현자가 이미지의 위치와 크기를 설정하여야 한다. ※ ImageObserver 이미지가 그려지면, 통보를
• 강제로 컴포넌트를 다시 그리도록 하는 메소드• 컴포넌트의 페인팅 과정을 진행• 자바 플랫폼에게 다시 그리도록 지시• 프로그램 내에서 모양 또는 위치를 변경한 경우• repaint( ) 호출 시 paintComponent( )가 호출된다.• 해당 컴포넌트에 repai
• 강제로 컴포넌트를 다시 그리도록 하는 메소드• 컴포넌트의 페인팅 과정을 진행• 자바 플랫폼에게 다시 그리도록 지시• 프로그램 내에서 모양 또는 위치를 변경한 경우• repaint( ) 호출 시 paintComponent( )가 호출된다.• 해당 컴포넌트에 repai
• 하나의 응용 프로그램이 여러 개의 작업(task)을 동시에 처리하는 것• 사용자가 작성한 코드• JVM(자바 가상 기계)에 의해 스케쥴링되어 실행되는 단위• JVM에 의한 실행 단위• 멀티스레딩만 가능• 하나의 응용프로그램은 여러 개의 스레드로 구성 가능하다.• 한
• Thread Stnchronization• 공유 데이터에 대한 멀티스레드의 동시 접근 문제의 해결책\-> 한 스레드의 공유 데이터 작업이 끝날 때까지 다른 스레드는 대기• 다수의 스레드가 공유 데이터를 배타적으로 접근하기 위해 상호 협력하는 것※ 다수의 스레드가 공