기본 콘텐츠로 건너뛰기

라벨이 객체 중심 JAVA인 게시물 표시

Part5 입출력 프로그래밍과 네트워킹(16장 ~ 18장)

java.io 패키지 : 데이터 읽고 쓰기 데이터를 읽는 대상(읽기용 빨대를 꽂는 대상, in = read) - 파일 데이터,  키보드, 네트워크, 이미지나 동영상 데이터 데이터를 쓰는 대상(쓰기용 빨대를 꽂는 대상, out = write) - 파일 데이터, 모니터의 화면, 네트워크를 통한 데이터 전송 InputStream(1byte), OutputStream(1byte), Reader(2byte(char)), Reader(2byte(char)) - 주로 Input, Output 씀 거의 대부분의 데이터는 byte 단위임 InputStream을 구하는 방법 두가지 : 어떤 클래스 자체로 설계되어서 객체를 생성하는 방식, 어떤 클래스의 메소드의 리턴 타입으로 InputStream 타입의 객체를 반환하는 방식(Socket)          read() - 1byte의 데이터를 int타입으로 반환          read(byte[] b) - 원하는 byte를 지정 가능, 4byte= 버퍼 InputStream in = new FileInputStream( "C:\\newjava\\aaa.txt" ); while ( true ) { //한 바이트를 읽어들인 결과 int data = in. read (); System. out . println (data); if (data == - 1 ) { break ; } } while 구문을 사용한 이유는 몇 번이나 루프를 돌아야 하는지 판단 할수 없을 때 사용함 -1은 더 읽어들일 데이터가 없는 경우 OutputStream을 구하는 방법 두가지 : 어떤 클래스 자체로 설계되어서 객체를 생성하는 방식, 어떤 클래스의 메소드의 리턴 타입으로 OutputStream 타입의 객체를 반환하는 방식        write(int) - 1byte에 해당하는 데이터를 기록할 때 사용         write(byte[] b, int off, int len) - byte[] 안에 있는 데이터를

Part4 객체지향 프로그래밍의 기법(12장 ~ 15장)

API : 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 한 인터페이스 String API concat(추가할 문자열) : 문자열을 연결할 때 charAt(위치) : 문자열 중에서 특정한 위치의 글자를 가져오고 싶을 때 String.valueOf() : 모든 기본 자료형을 모두 문자열로 변경 spilit() : 문자열을 특정 토큰으로 분리 문자열과 배열 String str = "한글은" ; char [] arr1 = str. toCharArray (); System. out . println (Arrays. toString (arr1)); Java의 성능 튜닝의 기본 String 대신 StringBuffer/StringBuilder를 이용, String은 immutable이라서 새로 만들어야 하지만 StringBuffer와 StringBuilder은 mutable이 이므로 변경가능함 StringBuilder를 써야 하는 경우 : 루프를 돌면서 문자열의 내용이 계속해서 변경되는 경우, '+'혹은 '+='와 같은 연산이 빈번하고 자주 사용되는 메소드인 경우, if ~ else에 의한 연산에 의해 문자열이 완성되는 경우(주로 SQL 문이나 명령어) 시간 관련 API  System.currentTimeMillis() : 현재 시각 Calendar 함수 선언 방법 2가지 Calendar cal1 = Calendar. getInstance (); Calendar cal2 = new GregorianCalendar(); 데이터를 얻을 때는 get() - 월(month)는 0부터 시작하므로 월-1로 나옴 int year = cal1. get (Calendar. YEAR ); int month = cal1. get (Calendar. MONTH ); int date = cal1. get (Calendar. DATE ); 데이터를 변경할 때는 set() cal2. set (Calendar. YEAR , 2020 ); ca

Part3 객체지향 프로그래밍의 기법(10장 ~ 11장)

상속 : 특정 클래스를 구성할 때 기존 클래스의 데이터(속성)와 메소드를 상위(부모) 클래스에서 그대로 물려받아서 중복적인 코드를 줄인다는 장점과, 하나의 변수 타입으로 여러 종류의 객체를 의미하는 추상화 된 방식의 프로그램이 가능하게 하는 객체지향 기법  부모 클래스(Super 클래스) 자식 클래스(Sub 클래스) extends : 상속을 사용하는 문법 WheelMouse m = new Mouse(); 휠마우스의 휠 기능의 정의를 못하므로 에러인가봄 public class MouseTest { public static void main (String[] args){ System. out . println ( "------------" ); Mouse op = new OpticalMouse(); op. clickLeft (); op. clickRight (); } } 결과  --------------------- 광센서로 왼쪽 클릭 광센서로 오른쪽 클릭 실행되는 메소드는 실제 객체의 메소드가 호출 - 변수의 타입이 무엇이든 간에 실제로 움직이는 것은 리모컨(레퍼런스)에 연결된 객체  - 컴파일러는 변수 타입으로 선언된 클래스에 해당하는 메소드가 있는지만 확인  - 실제로 움직이는 것은 연결된 객체  - 만일 실제 객체에 해당 메소드가 없다면 부모 클래스의 정보를 추적해서 실행 오버라이드 : 자식 클랙스에서 부모 클래스의 메소드를 다시 정의 super : 부모 클래스를 부르는 키워드, 부모 클래스에 정의된 생성자를 사용(this로 자식에서 재정의 가능) 다형성 : 상속을 사용하여 하나의 변수 타입으로 여러 가지 종류의 객체를 가리킬 수 있어서 기존 코드를 고치지 않고도 처리할 수 있는 부분이 많아짐 상속의 장점 - 변수의 타입과 실제 객체가 일치하지 않아도 됨, 부모 타입으로 파라미터, 배열을 선언가능 생성자.... 추상 클래스 : 변수의 타입으로만 의미가 있고, 객체로 생성될 가능성이 없는 것은

Part2 객체지향 프로그래밍의 등장(7~9장)

접근 제한자 - public, protected, private, default public : 모든 외부에서 직접 접근하거나 호출 가능 protected : 현재 클래스와 동일 패키지이거나 다른 패키지이더라도 상속 시에는 접근하거나 호출 가능 private : 현재 클래스의 {} 바깥쪽에서는 절대로 보이지 않습니다. default : 현재 클래스와 동일한 패키지 내에서만 접근하거나 호출할 수 있습니다. 클래스의 접근 제한 - public 외부에 클래스를 노출 default 현재 패키지 내에서만 사용 인스턴스 변수의 접근 제한 - private 사용 public static 완벽한 상수 표현 protected와 default는 간혹 사용되나 메소드를 이용해서 접근하는 방식으로 주로사용 메소드의 접근 제한 - 4개 다 사용 추상 메소드의 형태로 메소드 만들때는 private선언 불가 static : static이 붙은 변수는 클래스 변수 클래스가 생성될 때 함께 한번 생성 됨, 객체를 사용할 필요가 없음, 객체들이 공유하는 데이터를 사용할 때 static 법칙 - static이 붙은 변수들은 객체들이 다 같이 공유하는 데이터를 의미, static이 붙은 메소드는 객체들의 데이터와 관계없는 완벽하게 공통적인 로직을 정의할 때 사용한다. 따라서 static 메소드에서는 인스턴스 변수나 객체의 멧소드를 사용할 수 없다.

Part1 자바프로그래밍의 기본(1~6장 변수, 연산자, 제어문/루프, 배열)

Part1 자바프로그래밍의 기본 Part1은 거의 다 아는 내용이라서 묶어서 정리 =는 할당 연산자이다. 기본 자료형 : byte, short, int, long byte    1바이트    -128 ~ 127 short   2바이트   -32768 ~ 32767 int       4바이트   -2,147,483,648 ~ 2,147,483,647 long    8바이트   -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 소수를 표현 할때 매너 float 뒤에는 F를 double 뒤에는 D 써줌 double d = 3.14D; float f = 1.23F; 정수와 소수의 연산은 소수로 자동 변환이 됨 public class PromotionTest {    public static void main(String[] args){       int x = 10;       double y = 3;       System.out.println(x/y);    } } 결과 값은 3.333333333333333335 특수문자 \t          탭 간격 \n         줄 바꿈 \b         백스페이스 \r          Carriage Return  \'          작은 따옴표 \"          큰따옴표 \u          유니코드 문자 if문은 > 방향이 가독성이 좀더 좋다고함 배열 선언 int[] arr1 = {1, 2, 3};         int[] arr1;         arr1 = {1, 2, 3}; 볼때 arr1[2];