반응형

           

  JAVA Study





1. 객체지향 언어


- 객체지향의 기본개념 

: 실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다

: 상속, 캡슐화, 추상화 개념을 중심으로 구체적으로 발전됨


- 객체지향 언어

: 코드의 재사용성이 높다 - 기존코드를 이용하여 새로운 코드 작성이 쉬움

: 코드의 관리가 용이하다 - 코드간의 관계를 이용해 쉽게 코드변경 가능

: 신뢰성이 높은 프로그래밍을 가능하게 한다 - 제어자와 메서드를 이용해 데이터를 보호하고 올바른 값을 유지하게 하며, 코드 중복 제거, 코드 불일치로 인한 오동작 방지

: 객체지향 프로그래밍은 프로그래머에게 거시적 관점에서 설계할 수 있는 능력을 요구



2. 클래스와 객체


- 클래스

: 객체를 정의해 놓은 것

: 객체의 설계도

: 객체를 생성하는데 사용되며


- 객체

: 클래스에 정의된 내용대로 메모리에 생성됨

: 객체의 용도는 객체가 가지고 있는 기능과 속성에 따라 다름


- 먼저 클래스를 작성한 후, 클래스로부터 객체를 생성해 사용한다


- 인스턴스화

: 클래스로부터 객체를 만드는 과정

: 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 함

: 객체는 모든 인스턴스를 대표, 인스턴스는 어떤 클래스에서 생성된 객체인지를 강조하는 보다 구체적 표현


- 객체의 속성과 기능

: 객체는 다수의 속성과 다수의 기능을 가짐 ( 속성과 기능의 집합 )

: 클래스는 객체를 정의한 것이므로, 클래스에 객체의 모든 속성과 기능이 정의되어있음

: 클래스로부터 객체 생성 -> 클래스에 정의된 속성과 기능을 가진 객체가 만들어짐

: 속성 - 멤버변수, 특성, 필드, 상태

: 기능 - 메서드, 함수, 행위


- 인스턴스 생성

: 클래스명 변수명= new 클래스명();   ( ex. Tv t = new Tv(); )

-> Tv 클래스 타입의 참조변수 t 선언& 초기화

-> 인스턴스 속성을 사용하려면 '참조변수.멤버변수'로 작성 ( ex. t.멤버변수 )

: 인스턴스는 오직 참조변수를 통해서만 다룰 수 있음

: 참조변수의 타입은 인스턴스의 타입과 일치해야 함

: 같은 클래스로부터 생성되어도 각 인스턴스의 속성은 서로 다른 값을 유지할 수 있음, 메서드의 내용은 모든 인스턴스에 동일


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Tv{
    // Tv 속성 (멤버변수)
    String color;     //색상
    boolean power;    //전원상태 (on/off)
    int channel;    //채널
 
    // Tv기능 (메서드)
    void power() {
        power = !power;    //Tv를 켜거나 끄는 메서드
    }
    void channelUp() {
        ++channel;        //채널을 높이는 메서드
    }
    void channelDown() {
        --channel;        //채널을 낮추는 메서드
    }
}
 
class TvTest2{
    public static void main(String args[]){
        Tv t1 = new Tv();
        Tv t2 = new Tv();
        
        System.out.println("t1의 channel 값은 : "+t1.channel +"입니다.");    //t1의 channel 값은 : 0
        System.out.println("t2의 channel 값은 : "+t2.channel +"입니다.");    //t2의 channel 값은 : 0
 
        t1.channel = 7//채널 7 저장
        System.out.println("t1의 channel 값은 : "+t1.channel +"입니다.");  //t1의 channel 값은 : 7
        System.out.println("t2의 channel 값은 : "+t2.channel +"입니다.");    //t2의 channel 값은 : 0
        
    }
}
cs


- 객체배열

: 많은 수의 객체를 다룰 때 배열 사용

: 객체 배열안에 객체의 주소 저장, 참조변수를 하나로 묶은 참조변수 배열


- 클래스의 또다른 정의 (프로그래밍적 관점)

: 변수 - 하나의 데이터를 저장할 수 있는공간

: 배열 - 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간

: 구조체 - 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간

: 클래스 - 데이터와 함수의 결합 (구조체 + 함수)

: 자바와 같은 객체지향언어는 변수(데이터)와 함수를 하나의 클래스에 정의하여 서로 관계 깊은 변수와 함수를 함께 다룰 수 있게 한다



3. 변수와 메서드


- 선언 위치에 따른 변수의 종류

: 클래스 변수 / 인스턴스 변수 / 지역변수

: 변수의 선언된 위치가 변수의 종류를 결정

: 멤버변수를 제외한 나머지는 모두 지역변수

: 멤버변수 중 static이 붙은 것은 클래스변수, 붙지 않은 것은 인스턴스변수


1
2
3
4
5
6
7
8
9
10
11
class Tv{
 
    String color;     // 인스턴스 변수
    static int channel;    // 클래스변수, 공유변수, static변수
 
 
    void method() {
        String color = 0// 지역변수
    }
        
}










cs

: ㄴㅇ라ㅓ

- 인스턴스 변수 

: 클래스영역에 선언

: 클래스의 인스턴스를 생성할 때 만들어짐

: 인스턴스 변수의 값을 읽어 오거나 저장하기 위해서 먼저 인스턴스 생성해야 함

: 독립적 저장공간을 가지므로 서로 다른 값을 가질 수 있음

: 인스턴스마다 고유한 상태를 유지해야 하는 속성의 경우 인스턴스변수로 선언


- 클래스 변수

: 인스턴스 변수 앞에 static을 붙이면 클래스 변수 선언됨

: 모든 인스턴스가 공통된 저장공간을 공유

: 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야 하는 경우 클래스 변수로 선언

: 인스턴스를 생성하지 않고 바로 사용 가능

: 클래스가 메모리에 로딩될 때 생성되어 프로그램이 종료될 때까지 유지

: public을 앞에 붙이면 같은 프로그램 내 어디서나 접근가능한 ' 전역변수 ' 성격을 가짐


- 지역 변수 

: 메서드 내에 선언되어 메서드 내에서만 사용 가능, 메서드 종료 시 소멸

: for문, while문의 블럭 내에 선언된 지역변수는 블럭을 벗어나면 소멸되어 사용 불가


- 메서드

: 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것

: 높은 재사용성 / 중복된 코드 제거 / 프로그램의 구조화

: 선언부와 구현부로 이루어짐

: 메서드 선언부 

- 메서드의 이름, 매개변수의 선언, 반환타입으로 구성  ( ex. int add ( int z, int b) )

: 매개변수 선언 

- 메서드가 작업을 수행하는데 필요한 값을 제공받기 위한 것

- 필요한 값의 개수만큼 변수를 선언하며 구분은 ','로 함

- 선언할 수 있는 매개변수의 개수는 거의 제한이 없지만, 배열이나 참조변수 사용

- 값을 받을 필요가 없다면 괄호안에 아무것도 적지 않음

: 메서드의 이름

- 동사인 경우가 많고, 메서드의 기능을 쉽게 알 수 있도록 함축적이면서 의미있는 이름을 사용

: 반환타입

- 메서드 작업수행 결과인 '반환값'의 타입

- 반환값이 없는 경우 반환타입으로 'void' 작성

: 메서드의 구현부

- 메서드를 호출했을 때 수행될 문장을 넣음

: return문

- 반환타입이 void가 아닌경우, 구현구 안에 'return 반환값;'을 반드시 포함

- 작업 수행 결과를 호출한 메서드로 전달

- 반환타입과 일치하거나 자동 형변환이 가능한 것

- 단 하나의 값만 반환할 수 있음


- 메서드의 호출

: 메서드 정의 후 호출하지 않으면 아무일도 발생하지 않음

: 인자와 매개변수

- 메서드를 호출할 때 괄호안에 지정한 값을 '인자' 또는 '인수'라고 함

- 인자의 개수와 순서는 호출된 메서드에 선언된 매개변수와 일치해야 함

- 인자는 메서드가 호출되면서 매개변수에 대입되므로 , 인자의 타입은 매개변수의 타입과 일치하거나 자동형변환되어야 함

: 메서드의 실행흐름

- 같은 클래스 내의 메서드끼리는 참조변수를 사용하지 않고도 서로 호출이 가능

- static메서드는 같은 클래스 내의 인스턴스 메서드를 호출할 수 없음

- 메서드가 호출되면 지금까지 실행중이던 메서드는 실행을 멈추고 호출된 메서드의 문장이 실행됨


- return문

: 현재 실행중인 메서드를 종료하고 호출한 메서드로 돌아감

: 반환타입이 void가 아닌 경우, 반드시 return문을 작성해야함


- JVM메모리 구조

: method area / heap / call stack

: method aret (메서드 영역)

- 클래스에 대한 정보 저장

: heap

- 인스턴스가 생성되는 공간, 인스턴스 변수들이 생성되는 공간

: call stack or executive stack (호출스택)

- 메서드의 작업에 필요한 메모리 공간 제공

- 메서드가 작업을 마치면 할당된 메모리 공간이 반환되어 비워짐

- 호출스택 제일 상위에 위치하는 메서드가 현재 실행중인 메서드이며 나머지는 대기상태

- 아래에 있는 메서드가 바로 위의 메서드를 호출한 메서드임


- 기본형 매개변수 

: 변수의 값을 읽기만 할 수 있음


- 참조형 매개변수

: 변수의 값이 저장된 곳이 주소를 알 수 있기 때문에 값을 읽고 변경할 수 있음


- 참조형 반환타입

: 메서드가 '객체의 주소'를 반환


- 재귀호출

: 매서드 내부에서 매서드 자신을 다시 호출하는 것

: 재귀호출하는 메서드를 '재귀메서드'라 함

: 재귀호출만 하게되면 무한히 자기 자신을 호출하기 때문에 조건문을 필수적으로 사용


- 클래스 메서드( static 메서드 ) 와 인스턴스 메서드

: 메서드 앞에 static을 붙이면 클래스 메서드, 붙어있지 않으면 인스턴스 메서드

: 메서드작업 수행 시 인스턴스 변수를 필요로하는 메서드를 인스턴스메서드로 정의, 인스턴스를 생성해야 호출가능

: 인스턴스와 관계 없는 메서드를 클래스 메서드로 정의 


- 클래스 설계 시, 모든 인스턴스에 공통적으로 사용하는 것에 static을 붙임

- 클래스 변수(static변수)는 인스턴스를 생성하지 않아도 사용 가능

- 클래스 메서드(static 메서드)는 인스턴스 변수를 사용할 수 없음

- 메스드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려

- 클래스 멤버가 인스턴스 멤버를 참조, 호출 할 때는 인스턴스를 생성해야 함

- 같은 클래스 내의 메서드는 서로 객체의 생성이나 참조변수 없이 직접호출이 가능하지만 static 메서드는 인스턴스 메서드를 호출할 수 없음

- 인스턴스멤버 간의 호출은 가능, 하나의 인스턴스멤버가 존재한다는 것은 이미 인스턴스가 생성되었다는 의미이기 때문



4. 오버로딩


- 한 클래스 내에 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있음

- 한 클래스 내에 같은 이름의 메서드를 여러 개 정희하는 것을 '메서드 오버로딩', '오버로딩(overloading)'이라 함


- 오버로딩 조건

: 메서드 이름이 같아야 함

: 매개변수의 개수 또는 타입이 달라야 함


- 오버로딩의 장점

: 메서드 이름 절약 - 하나의 이름으로 여러개의 메서드를 정의할 수 있음


- 가변인자와 오버로딩

: 가변인자는 '타입...변수명' 과 같은 형식으로 선언

: 가변인자를 매개변수 중 가장 마지막에 선언

: 가변인자가 선언된 메서드를 호출할 때마다 배열이 새로 생성



5. 생성자


- 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드' 


- 인스턴스 변수의 초기화 작업에 주로 사용됨


- 클래스 내에 선언되며, 리턴값이 없음


- 생성자의 이름은 클래스 이름과 같아야 함


- 오버로딩이 가능하므로 하나의 클래스에 여러개의 생성자가 존재할 수 있음


1
2
3
4
5
6
7
8
9
10
class Tv{
    
    Tv() {
        //매개변수 없는 생성자
    }
 
    Tv(int a, String b) {
        //매개변수 있는 
    }        
}
cs


- 모든 클래스에는 반드시 하나 이상의 생성자가 정의되어야 함


- 소스파일(*.java)의 클래스에 생성자가 하나도 정의되지 않은 경우 컴파일러는 자동적으로 기본 생성자를 추가하여 컴파일 함

: 기본생성자 - 매개변수와 내용이 없는 생성자

: 컴파일러가 자동적으로 기본 생성자를 추가하는 경우는 클래스 내에 생성자가 하나도 없을 때 뿐


- 매개변수가 있는 생성자


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Tv{
    int channel;
    String brand;    
 
    Tv() {
        //매개변수 없는 생성자
    }
 
    Tv(int a, String b) {
        channel = a;
        brand = b;
    }        
 
}
 
class TvTest{
    public static void maint(String args[]){
        Tv t = new Tv();
        t.channel = 2;
        t.brand = samsung;
 
        Tv t2 = new Tv(8,"LG");
 
    }
}
cs


- 생성자에서 다른 생성자 호출 

: 생성자 간에도 서로 호출이 가능

- 생성자의 이름으로 클래스이름 대신 this를 사용

- 한 생성자에서 다른생성자를 호출할 때는 반드시 첫번째 출에서만 호출이 가능

: 매개변수의 이름과 인스턴스변수 이름이 같을 경우 서로 구별되지 않기때문에 인스턴스 변수이름 앞에 'this.'을 붙인다

- 만약 붙이지 않은 상태로 작성하면 둘 다 지역변수로 간주된다.


- this 

: 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장되어 있음

: 모든 인스턴스메서드에 지역변수로 숨겨진 채 존재함


- this(), this(매개변수)

: 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용


- 생성자를 이용한 인스턴스 복사

: 현재 사용 중인 인스턴스와 같은 상태를 갖는 인스턴스를 하나 더 만들고자 할 때 생성자 활용 가능



6. 변수의 초기화


- 변수를 선언하고 처음으로 값을 저장하는 것

: 멤버변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화 됨 

  ( 변수 타입 별 기본값 확인하기 http://blog.naver.com/kegljk/221034527671 )

: 지역변수는 사용하기 전에 반드시 초기화 해야 함


- 멤버변수의 초기화 방법

: 명시적 초기화

: 생성자

: 초기화 블럭

- 인스턴스 초기화 블럭 : 인스턴스 변수를 초기화 하는데 사용

- 클래스 초기화 블럭 : 클래스 변수를 초기화 하는데 사용


- 명시적 초기화

: 변수 선언과 동시에 초기화하는 것  ( ex. int age = 20; )


- 초기화 블럭

: 클래스 초기화 블럭

- 클래스 변수의 복잡한 초기화에 사용

- 클래스가 메모리에 처음 로딩될 때 한번만 수행

: 인스턴스 초기화 블럭

- 인스턴스 변수의 복잡한 초기화에 사용

- 인스턴스를 생성할 때마다 수행

- 생성자보다 인스턴스 초기화 블럭이 먼저 수행됨


- 멤버변수의 초기화 시기와 순서

: 클래스변수의 초기화시점

- 클래스가 처음 로딩될 때 단 한번 초기화

: 인스턴스 변수의 초기화 시점

- 인스턴스가 생성될 때마다 각 인스턴스 별로 초기화가 이루어짐

: 클래스변수의 초기화 순서

- 기본값 -> 명시적 초기화 -> 클래스 초기화 블럭

- 기본값 -> 명시적 초기화 -> 인스턴스 초기화 블럭 -> 생성자







반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

[JAVA] 7 객체지향 프로그래밍 2-2  (0) 2017.07.21
[JAVA] 7 객체지향 프로그래밍 2-1  (0) 2017.07.11
[JAVA] 배열 예제  (0) 2017.07.04
[JAVA] 5 배열 (Array)  (0) 2017.07.03
[JAVA] 제어구조 예제 6 - while문  (0) 2017.07.02
반응형

           

  JAVA Study






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import java.util.Scanner;
 
public class tistory {
 
    public static void main(String[] args) {
        // for문
        for(int i=1; i<=5; i++){
            System.out.print(i); //i의 값 12345 출력
        }
        
        int sum=0;
        for(int i=1; i<=10; i++){
            sum+=i;
        }
        System.out.println(sum); // 1~10까지의 합 출력
        
        // 중첩 for문
        int num=0;
        
        System.out.println("*을 출력할 라인의 수를 입력하세요>");
        
        Scanner scn = new Scanner(System.in);
        int number = scn.nextInt();
        
        for(int i=0; i<number;i++){ // 입력한 라인을 출력하기 위한 for문
            for(int j=0; j<=i; j++){ // *을 반복출력하기 위한 for문
                System.out.print("*");
            }
                System.out.println();
        }
    
        // 구구단 
        for(int i=2; i<10; i++){
            for(int j=2; j<10; j++){
                System.out.println(i+" * "+j+" = "+(i*j));
            }
        }
        
        // 배열
        for(int i=1; i<5; i++){ // 행
            for(int j=1; j<5; j++){ // 열
                 System.out.printf("["+i+","+j+"]");
            }
            System.out.println();
        }
        
        for(int i=1; i<=5; i++){
            for(int j=1;j<=5; j++){
                if (i==j){
                    System.out.printf("["+i+","+j+"]");
                } else {
                    System.out.print("     ");
                }
            }
            System.out.println();
        }
        
        // 향상된 for문
        int[] arr = {1,2,3,4,5};
        int sum1=0;
        
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        
        for(int tmp : arr){
            System.out.println(tmp);
            sum1+=tmp;
        }
        
        System.out.println("sum1 = "+sum1);
        
    }
}
 
cs
반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

[JAVA] 5 배열 (Array)  (0) 2017.07.03
[JAVA] 제어구조 예제 6 - while문  (0) 2017.07.02
[JAVA] 제어구조 예제 4 - switch문  (1) 2017.06.30
[JAVA] 제어구조 예제 3 - if문  (0) 2017.06.29
[JAVA] 제어구조 예제 2  (0) 2017.06.28
반응형

           

  JAVA Study





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
public class tistory {
 
    public static void main(String[] args) {
        
        //switch 문
        System.out.print("현재 월을 입력하세요>>");
        
        Scanner scn = new Scanner(System.in);
        int month = scn.nextInt();
 
        switch(month){
            case 3:
            case 4:
            case 5:
                System.out.println("현재 계절은 봄입니다.");
                break;
            case 6case 7:    case 8:
                System.out.println("현재 계절은 여름입니다.");
                break;
            case 9case 10case 11:
                System.out.println("현재 계절은 가을입니다.");
                break;
            default:
            //case 12: case 1: case 2:
                System.out.println("현재 계절은 겨울입니다.");
        }
 
 
        //switch 문
        System.out.print("가위 (1), 바위 (2), 보 (3) 중 하나를 입력하세요>>");
        
        Scanner scn1 = new Scanner(System.in);
        int user = scanner.nextInt(); // 화면으로 입력받은 값을 user에 저장
        int com = (int)(Math.random() * 3)+1// 1,2,3 중 하나가 com에 저장    
        
        System.out.println("당신은 "+user);
        System.out.println("컴은 "+com);
 
        switch(user-com){
 
            case 2case -1:
                System.out.println("당신이 졌음");
                break;
            case 1case -2:
                System.out.println("당신이 이겼음");
                break;
            case 0
                System.out.println("비겼음");
                break;
        
        }
 
        //switch 문
        System.out.print("당신의 주민번호를 입력하세요.(011234-1111222)>>");
 
        Scanner scn2 = new Scanner(System.in);
        String regNo = scn2.nextInt();
 
        char gender = regNo.charAt(7);
        
        switch(gender) {
 
            case '1'case '3':
                System.out.println("당신은 남자");
                break;
            case '2'case '4':
                System.out.println("당신은 여자");
                break;
            default : 
                System.out.println("유효하지 않은 주민번호 입니다.");
        }
 
        //switch문 중첩
        System.out.print("당신의 주민번호를 입력하세요.(011234-1111222)>>");
        
        Scanner scn3 = new Scanner(System.in);
        String regNo3 = scn3.nextInt();
        char gender3 = regNo3.charAt(7);
        
        switch(gender3) {
            case '1'case '3':
                    
                    switch(gender3){
                        case'1' :
                        System.out.println("당신은 2000년 이전 출생 남자");
                        break;
                        case'3' :
                        System.out.println("당신은 2000년 이후 출생 남자");
                        break;
                    }                
 
            break;
            case '2'case '4':
 
                    switch(gender3){
                        case'2' :
                        System.out.println("당신은 2000년 이전 출생 여자");
                        break;
                        case'4' :
                        System.out.println("당신은 2000년 이후 출생 자");
                        break;
                    }
 
            break;
            default : 
                System.out.println("유효하지 않은 주민번호 입니다.");
        }
 
    }
}
cs
반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

[JAVA] 제어구조 예제 6 - while문  (0) 2017.07.02
[JAVA] 제어구조 예제 5 - for문  (0) 2017.07.01
[JAVA] 제어구조 예제 3 - if문  (0) 2017.06.29
[JAVA] 제어구조 예제 2  (0) 2017.06.28
[JAVA] 제어구조 예제 1  (0) 2017.06.27
반응형

           

  JAVA Study



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
public class tistory {
 
    public static void main(String[] args) {
        
        //3단 출력    
        for(int i=2; i<10; i++){
            System.out.println("3 * "+i+" = "+(3*i));
        }
        
        
        //한 line에 7개 씩 출력
        for(int a=1; a<=31; a++){
            System.out.print(a+"일");
            
            if(a%7==0){
                System.out.println();
            }
        }
        
        
        //if문을 switch문으로 바꾸기
        int a = 10;
        int b = 20;
        int result = 0;
        String value="*";
        
        if(value=="+"){
            result = a+b;
        } else if(value=="-"){
            result = a-b;
        } else if(value=="*"){
            result = a*b;
        } else{
            result = a/b;
        }
        System.out.println(result);
        
        int result2 = 0;
        String value2="+";
        switch(value2){
        case "+" : result2 = a+b;
        break;
        case "-" : result2 = a-b;
        break;
        case "*" : result2 = a*b;
        break;
        case "/" : result2 = a/b;
        break;
        default : result2 = 100;
        }
        System.out.println(result2);
        
        
        //1차원 배열 출력
        int[] bb = {11,12,13};
        for(int i=0; i<bb.length;i++){
            System.out.println(bb[i]);
        }
        
        
        //구구단 1~9단 출력
        for(int i=1; i<10; i++){
            for(int j=2;j<10;j++){
                System.out.println(i+"*"+j+"="+(i*j));
            }
        }
        
        
        //for 문을 이용한 출력
        int[][] numberB={{11,12,13},{71,72,73}};
        for(int i=0; i<numberB.length; i++){
            for(int j=0;j<numberB[i].length;j++){
                System.out.println(numberB[i][j]);
            }
        }
        
        
        //합을 구하시오
        int[][] numberC = {{11,12,13},{71,72,73}};
        int sum=0;
        for(int i=0; i<numberC.length; i++){
            for(int j=0;j<numberC[i].length;j++){
                sum += numberB[i][j];
            }
        }
        System.out.println(sum);
        
        
        //아래의 결과처럼 출력하시오
        //        (결과)
        //        1*
        //        4****
        //        5*****
        
        int[] arr={1,4,5};
        for(int i=0; i<arr.length; i++){
            System.out.print(arr[i]);
            
            for(int j=0; j<arr[i];j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
 
cs


반응형
반응형

           

  JAVA Study





1. 연산자(operator) 


- 연산을 수행하는 기호


- 연산자

: 연산을 수행하는 기호 ( +, -, *, /, % )


- 피연산자

: 연산자의 작업대상 ( 변수, 상수, 리터럴, 수식 )


- 연산자는 피연산자로 연산을 수행 후 항상 결과값을 반환


- 연산자의 종류

 종류

 연산자 

 설명 

 산술 연산자

    +        -        *         /       %      <<      >>

 사칙연산과 나머지 연산(%)

 비교 연산자

    >      <       >=       <=      ==       !=

 크고 작음, 같고 다름을 비교

 논리 연산자

   &&      ||       !      &       |       ^      ~

 'and'와 'or'로 조건 연결

 대입 연산자

   = 

 우변의 값을 좌변에 저장

 기타

   (type)             ? :               instanceof 

 형변환연산자, 삼항연산자, instanceof연산자



- 연산자의 우선순위

: 산술 > 비교 > 논리 > 대입

: 단항 > 이항 > 삼항

: 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽




2. 단항 연산자 
 

- 증감 연산자 

: ++  피연산자의 값을 1 증가

: --  피연산자의 값을 1 감소 

: 전위형 (++i) - 값이 참조되기 전에 증가

: 후위형 (i--) - 값이 참조된 후에 증가



3. 산술 연산자 

- 사칙 연산자 (+-*/)


- 나머지 연산자 (%)

: 나누는 수는 0을 사용할 수 없고, 피연산자로 정수만 허용
 


4. 비교 연산자 
 

- > 좌변 값이 크면 true 아니면 false


- < 좌변 값이 작으면 true 아니면 false


- >= 좌변 값이 크거나 같으면 true 아니면 false


- <= 좌변 값이 작거나 같으면 true 아니면 false


- == 두 값이 같으면 true 아니면 false


- != 두 값이 다르면 true 아니면 false


- 문자열의 비교

: equalse() 메서드 사용

 ( ex. 변수이름.equalse("abc"); )



5. 논리 연산자 
 

- || (or) 피연산자 중 어느 한쪽만 true이면 결과는 true


- && (and) 피연산자 양쪽모두 true이어야 결과는 true


- | (or 연산자) 피연산자 중 한쪽 값이 1이면, 1을 결과로 얻음, 그 외에는 0


- & (and연산자) 피연사 양 쪽 모두 1이어야 1을 결과로 얻음, 그 외에는 0


- ^ (xor연산자) 피연산자의 값이 서로 다를 때만 1을 결과로 얻음. 같을 때는 0


- ~ (비트 전환 연산자) 피연산자의 1의 보수를 얻을 수 있음, 부호있는 타입에서는 반대부호로 변경


- << ,  >> (쉬프트 연산자) 2진수로 표현된 피연산자의 각 자리를 오른쪽(>>), 왼쪽(<<)으로 이동함



6. 그 외의 연산자 


- ? / : (조건 연산자) 

: '(조건식) ? 식1 : 식2' 형식의 삼항 연산자, 조건식이 참일 경우 '?' 이하 식1을 실행, 거짓일 경우 ':' 이하 식2를 실행

: if 문으로 바꿔 사용가능


- = , op= (대입 연산자)

: 변수같은 저장공간에 값 또는 수식의 연산결과를 저장하는데 사용

: 오른쪽 피연산자 ( rvalue ) 의 값을 왼쪽 피연산자 ( lvalue ) 에 저장

: 대입 연산자는 다른연산자 ( op )와 결합하여 'op='형식으로 사용가능 ( ex. i = i+2; --> i+=2; )

: op=연산자는 반드시 공백없이 붙여써야 함  



 자바의 정석 저자 강의

- 연산자

반응형
반응형

           

  JAVA Study




1. 자바(Java Programming Language) 
 

- 썬 마이크로 시스템에서 개발하여 1996년 1월 발표한 객체지향 프로그래밍 언어


- 운영체제에 독립적이다 

: 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바로 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 그래서 자바로 작성된 프로그램은 운영체제, 하드웨어에 관계없이 실행가능하다.


- 객체지향언어

:객체지향 개념의 특징인 상속, 캡슐화, 다형성이 잘 적용되었다.

:재사용성과 유지보수가 용이하다. 


- 자동메모리 관리

:가비지 컬렉터 (garbage collector)가 자동적으로 메모리를 관리해 준다.


- 네트워크와 분산처리 지원

: 다양한 네트워크 프로그래밍 라이브러리 (JAVA API)를 통해 네트워크 관련 프로그램을 쉽게 개발할 수 있도록 지원한다.


- 멀티쓰레드 지원

: 시스템과 관계없이 구현가능, 관련된 라이브러리 제공, 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당한다.


- 동적 로딩을 지원

: 자바 애플리케이션은 여러 개의 클래스로 구성되어있고, 필요한 시점에 해당 클래스를 로딩하여 사용할 수 있다.


JVM(Java Virtual Machine) 

: 자바를 실행하기 위한 가상 컴퓨터

: 자바로 작성된 애플리케이션은 모두 JVM에서만 실행

: OS에 종속적이므로 해당 OS에서 실행가능한 JVM필요



2. 자바개발환경 구축하기 

- 자바 개발도구(JDK)설치하기 


1) JDK 설치 (http://www.oracle.com/technetwork/java/index.html)


2) JAVA 다운로드 


: url 접속 후 JAVA Downloads 클릭





: 왼쪽 JAVA 클릭




: 사용자 컴퓨터에 해당하는 JDK파일 다운로드 후 실행




- 이클립스 설치하기 


1) 이클립스 설치 (http://www.eclipse.org/downloads)


2) 이클립스 다운로드 


: url 접속 후 Download 64BIT 클릭





: Download 클릭 후 파일 실행



: 두번 째 Eclipse IDE for JAVA EE Developers 선택




: Eclipse 환경 설정 (MAC ver : 메뉴 Eclipse -> 환경설정 (Preferences) -> General -> Workspace -> Default (UTF-8)선택 후 저장)






- 이클립스 실행하기 


1)  프로젝트 만들기 :  Package Explorer 에 마우스 우클릭 -> New -> Java Project 선택





2)  프로젝트 만들기 :  Project name 작성 후 Finish




3) 패키지 만들기 : 생성된 프로젝트에 (tistory) 마우스 우클릭 -> New ->  Package 선택




4) 패키지 만들기 : Package 이름 작성 -> Finish




5) 클래스 만들기 : 생성된 Package에 우클릭 -> New -> Class  선택




6) 클래스 만들기 :  Class 이름 작성 -> public static void main(String[] args) 선택 -> Finish




7) 완성된 화면









3. 자바로 프로그램작성하기
  

- Hello. World


1) 위에서 생성된 클래스에 내용 입력


package apple;


public class Tistory_1 {


public static void main(String[] args) {

System.out.println("Hello, World");

}


}


2) 저장


3) 초록색 화살표 버튼을 눌러 화면 실행


4) console창에 실행된  "Hello, World"확인







 자바의 정석 저자 강의



- JDK 설치 방법




- Hello, world



- 이클립스 설치 및 사용방법




- JAVA API문서의 설치와 사용법


반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

[JAVA] 4. 조건문과 반복문 ( if, switch, for, while )  (0) 2017.06.26
[JAVA] 연산자 예제  (0) 2017.06.25
[JAVA] 3. 연산자 (Operator)  (0) 2017.06.24
[JAVA] 2. 변수 (Variable)  (0) 2017.06.22
[JAVA의 정석] 목차  (0) 2017.06.21
반응형




 

Java의 정석 3rd Edition


남궁 성 지음 | 도우출판 | 2016.01.27 출간



Chapter 1 자바를 시작하기 전에 

1. 자바(Java Programming Language) / 2 
    1.1 자바란? / 2 
    1.2 자바의 역사 / 2
    1.3 자바언어의 특징 / 3 
    1.4 JVM(Java Virtual Machine) / 4 

2. 자바개발환경 구축하기 / 6 
    2.1 자바 개발도구(JDK)설치하기 / 6 
    2.2 Java API문서 설치하기 / 7 

3. 자바로 프로그램작성하기 / 8 
    3.1 Hello.java / 8 
    3.2 자주 발생하는 에러와 해결방법 / 11 
    3.3 자바프로그램의 실행과정 / 12 
    3.4 주석(comment) / 13 
    3.5 이 책으로 공부하는 방법 / 14 


Chapter 2 변수(Variable) 

1. 변수와 상수 / 20 
    1.1 변수란? / 20 
    1.2 변수의 선언과 초기화 / 20 
    1.3 변수의 명명규칙 /25 

2. 변수의 타입 / 27 
    2.1 기본형(primitive type) / 28 
    2.2 상수와 리터럴(constant & literal) / 30 
    2.3 형식화된 출력 - printf() / 36 
    2.4 화면에서 입력받기 - Scanner / 40 

3. 진법 / 42 
    3.1 10진법과 2진법 / 42 
    3.2 비트(bit)와 바이트(byte) / 43 
    3.3 8진법과 16진법 / 44 
    3.4 정수의 진법 변환 / 46 
    3.5 실수의 진법변환 / 48 
    3.6 음수의 2진 표현 - 2의 보수법 / 50 

4. 기본형(primitive type) / 55 
    4.1 논리형 - boolean / 55 
    4.2 문자형 - char / 55 
    4.3 정수형 - byte, short, int, long / 62 
    4.4 실수형 - float, double / 68 

5. 형변환 / 74 
    5.1. 형변환(캐스팅, casting)이란? / 74 
    5.2 형변환 방법 / 74 
    5.3 정수형 간의 형변환 / 75 
    5.4 실수형 간의 형변환 / 77 
    5.5 정수형과 실수형간의 형변환 / 80 
    5.6 자동 형변환 / 82 


Chapter 3 연산자(Operator) 

1. 연산자(operator) / 86     
    1.1 연산자와 피연산자 / 86 
    1.2 식(式)과 대입연산자 / 86 
    1.3 연산자의 종류 / 87 
    1.4 연산자의 우선순위와 결합규칙 / 88 
    1.5 산술 변환(usual arithmetic conversion) / 91 

2. 단항 연산자 / 93 
    2.1 증감 연산자 - ++, -- / 93 
    2.2 부호 연산자 - +, - / 96 

3. 산술 연산자 / 97 
    3.1 사칙 연산자 - +, -, *, / / 97 
    3.2 나머지 연산자 - % / 108 

4. 비교 연산자 / 109 
    4.1 대소비교 연산자 - <, >, <=, >= / 109 
    4.2 등가비교 연산자 - ==, != / 109 

5. 논리 연산자 / 114 
    5.1 논리 연산자 - &&, ||, ! / 114 
    5.2 비트 연산자 - &, |, ^, ~, <<, >> / 121 

6. 그 외의 연산자 / 130 
    6.1 조건 연산자 - ? : / 130 
    6.2 대입 연산자 - =, op= / 132 


Chapter 4 조건문과 반복문 


1. 조건문 - if, switch / 136 
    1.1 if문 / 136 
    1.2 if-else문 / 140 
    1.3 if-else if문 / 141 
    1.4 중첩 if문 / 144 
    1.5 switch문 / 146 

2. 반복문 - for, while, do-while / 156 
    2.1 for문 / 156 
    2.2 while문 / 167 
    2.3 do-while문 / 173 
    2.4 break문 / 175 
    2.5 continue문 / 176 
    2.6 이름 붙은 반복문 / 178 


Chapter 5 배열(Array) 

1. 배열(array) / 182 
    1.1 배열(array)이란? / 182 
    1.2 배열의 선언과 생성 / 183 
    1.3 배열의 길이와 인덱스 / 184 
    1.4 배열의 초기화 / 189 
    1.5 배열의 복사 / 192 
    1.6 배열의 활용 / 196 

2. String배열 / 205 
    2.1 String배열의 선언과 생성 / 205 
    2.2 String배열의 초기화 / 205 
    2.3 char배열과 String클래스 / 208 
    2.4 커맨드 라인을 통해 입력받기 / 211 

3. 다차원 배열 / 214 
    3.1 2차원 배열의 선언과 인덱스 / 214 
    3.2 2차원 배열의 초기화 / 215 
    3.3 가변 배열 / 219 
    3.4 다차원 배열의 활용 / 220 


Chapter 6 객체지향 프로그래밍 I 

1. 객체지향언어 / 230 
    1.1 객체지향언어의 역사 / 230 
    1.2 객체지향언어 / 230 

2. 클래스와 객체 / 231 
    2.1 클래스와 객체의 정의와 용도 / 231 
    2.2 객체와 인스턴스 / 232 
    2.3 객체의 구성요소 - 속성과 기능 / 233 
    2.4 인스턴스의 생성과 사용 / 234 
    2.5 객체 배열 / 241
    2.6 클래스의 또 다른 정의 / 242 

3. 변수와 메서드 / 246 
    3.1 선언위치에 따른 변수의 종류 / 246 
    3.2 클래스변수와 인스턴스변수 / 247 
    3.3 메서드 / 249 
    3.4 메서드의 선언과 구현 / 252 
    3.5 메서드의 호출 / 254 
    3.6 return문 / 258 
    3.7 JVM의 메모리구조 / 261 
    3.8 기본형 매개변수와 참조형 매개변수 / 264 
    3.9 참조형 반환타입 / 268 
    3.10 재귀호출(recursive call) / 270 
    3.11 클래스 메서드(static메서드)와 인스턴스 메서드 / 278 
    3.12 클래스 멤버와 인스턴스 멤버간의 참조와 호출 / 280 

4. 오버로딩(overloading) / 283 
    4.1 오버로딩이란? / 283 
    4.2 오버로딩의 조건 / 283 
    4.3 오버로딩의 예 / 283 
    4.4 오버로딩의 장점 / 285     
    4.5 가변인자(varargs)와 오버로딩 / 287 

5. 생성자(constructor) / 291 
    5.1 생성자란? / 291 
    5.2 기본 생성자(default constructor) / 292 
    5.3 매개변수가 있는 생성자 / 294 
    5.4 생성자에서 다른 생성자 호출하기 - this(), this / 295 
    5.5 생성자를 이용한 인스턴스의 복사 / 298 


6. 변수의 초기화 / 300 

6.1 변수의 초기화 / 300 
6.2 명시적 초기화(explicit initialization) / 301 
6.3 초기화 블럭(initialization block) / 302 
6.4 멤버변수의 초기화 시기와 순서 / 304 



Chapter 7 객체지향 프로그래밍 II 

1. 상속(inheritance) / 310 
    1.1 상속의 정의와 장점 / 310 
    1.2 클래스간의 관계 - 포함관계 / 316 
    1.3 클래스간의 관계 결정하기 / 317 
    1.4 단일상속(single inheritance) / 324 
    1.5 Object클래스 - 모든 클래스의 조상 / 325 

2. 오버라이딩(overriding) / 327 
    2.1 오버라이딩이란? / 327 
    2.2 오버라이딩의 조건 / 328 
    2.3 오버로딩 vs. 오버라이딩 / 329 
    2.4 super / 330 
    2.5 super() - 조상 클래스의 생성자 / 332 

3. package와 import / 336 
    3.1 패키지(package) / 336 
    3.2 패키지의 선언 / 337 
    3.3 import문 / 340 
    3.4 import문의 선언 / 340 
    3.5 static import문 / 342 

4. 제어자(modifier) / 344 
    4.1 제어자란? / 344 
    4.2 static - 클래스의, 공통적인 / 344 
    4.3 final - 마지막의, 변경될 수 없는 / 345 
    4.4 abstract - 추상의, 미완성의 / 347 
    4.5 접근 제어자(access modifier) / 348 
    4.6 제어자(modifier)의 조합 / 353 

5. 다형성(polymorphism) / 354 
    5.1 다형성이란? / 354 
    5.2 참조변수의 형변환 / 357 
    5.3 instanceof연산자 / 362 
    5.4 참조변수와 인스턴스의 연결 / 364 
    5.5 매개변수의 다형성 / 367 
    5.6 여러 종류의 객체를 배열로 다루기 / 370 

6. 추상클래스(abstract class) / 375 
    6.1 추상클래스란? / 375 
    6.2 추상메서드(abstract method) / 376 
    6.3 추상클래스의 작성 / 377 

7. 인터페이스(interface) / 381 
    7.1 인터페이스란? / 381 
    7.2 인터페이스의 작성 / 381 
    7.3 인터페이스의 상속 / 382 
    7.4 인터페이스의 구현 / 382 
    7.5 인터페이스를 이용한 다중상속 / 385 
    7.6 인터페이스를 이용한 다형성 / 387 
    7.7 인터페이스의 장점 / 390 
    7.8 인터페이스의 이해 / 397 
    7.9 디폴트 메서드와 static메서드 / 401 

8. 내부 클래스(inner class) 403 
    8.1 내부 클래스란? / 403 
    8.2 내부 클래스의 종류와 특징 / 404 
    8.3 내부 클래스의 선언 / 404 
    8.4 내부 클래스의 제어자와 접근성 / 405 
    8.5 익명 클래스(anonymous class) / 410 


Chapter 8 예외처리(Exception Handling) 

1. 예외처리(exception handling) / 414 
    1.1 프로그램 오류 / 414 
    1.2 예외 클래스의 계층구조 / 415 
    1.3 예외처리하기 - try-catch문 / 416 
    1.4 try-catch문에서의 흐름 / 420 
    1.5 예외의 발생과 catch블럭 / 421 
    1.6 예외 발생시키기 / 425 
    1.7 메서드에 예외 선언하기 / 427 
    1.8 finally블럭 / 434 
    1.9 자동 자원 반환 - try-with-resources문 / 436 
    1.10 사용자정의 예외 만들기 / 439 
    1.11 예외 되던지기(exception re-throwing) / 442 
    1.12 연결된 예외(chained exception) / 444 



Chapter 9 java.lang패키지와 유용한 클래스 

1. java.lang패키지 / 450 
    1.1 Object클래스 / 450 
    1.2 String클래스 / 464 
    1.3 StringBuffer클래스와 StringBuilder클래스 / 477 
    1.4 Math클래스 / 483 
    1.5 래퍼(wrapper) 클래스 / 490 

2. 유용한 클래스 / 496 
    2.1 java.util.Objects클래스 / 496 
    2.2 java.util.Random클래스 / 500 
    2.3 정규식(Regular Expression) - java.util.regex패키지 / 505 
    2.4 java.util.Scanner클래스 / 510 
    2.5 java.util.StringTokenizer클래스 / 514 
    2.6 java.math.BigInteger클래스 / 518 
    2.7 java.math.BigDecimal클래스 / 521 



Chapter 10 날짜와 시간 & 형식화 

1. 날짜와 시간 / 528 
    1.1 Calendar와 Date / 528 

2. 형식화 클래스 / 540 
    2.1 DecimalFormat / 540 
    2.2 SimpleDateFormat / 544 
    2.3 ChoiceFormat / 548 
    2.4 MessageFormat / 549 

3. java.time패키지 / 552 
    3.1 java.time패키지의 핵심 클래스 / 552 
    3.2 LocalDate와 LocalTime / 555 
    3.3 Instant / 560 
    3.4 LocalDateTime과 ZonedDateTime / 561 
    3.5 TemporalAdjusters / 565 
    3.6 Period와 Duration / 567 
    3.7 파싱과 포맷 / 572 



Chapter 11 컬렉션 프레임웍 

1. 컬렉션 프레임웍(Collection Framework) / 578 
    1.1 컬렉션 프레임웍의 핵심 인터페이스 / 578 
    1.2 ArrayList / 584 
    1.3 LinkedList / 596 
    1.4 Stack과 Queue / 604 
    1.5 Iterator, ListIterator, Enumeration / 614 
    1.6 Arrays / 624 
    1.7 Comparator와 Comparable / 628 
    1.8 HashSet / 631 
    1.9 TreeSet / 638 
    1.10 HashMap과 Hashtable / 644 
    1.11 TreeMap / 654 
    1.12 Properties / 658 
    1.13 Collections / 664 
    1.14 컬렉션 클래스 정리 & 요약 / 667 
    



Chapter 12 지네릭스, 열거형, 애너테이션 

1. 지네릭스(Generics) / 670 
    1.1 지네릭스란? / 670 
    1.2 지네릭 클래스의 선언 / 670 
    1.3 지네릭 클래스의 객체 생성과 사용 / 674 
    1.4 제한된 지네릭 클래스 / 676 
    1.5 와일드 카드 / 678 
    1.6 지네릭 메서드 / 684 
    1.7 지네릭 타입의 형변환 / 687 
    1.8 지네릭 타입의 제거 / 689 

2. 열거형(enums) / 691 
    2.1 열거형이란? / 691 
    2.2 열거형의 정의와 사용 / 692 
    2.3 열거형에 멤버 추가하기 / 695 
    2.4 열거형의 이해 / 698 

3. 애너테이션(annotation) / 702 
    3.1 애너테이션이란? / 702 
    3.2 표준 애너테이션 / 703 
    3.3 메타 애너테이션 / 711 
    3.4 애너테이션 타입 정의하기 / 715 



Chapter 13 쓰레드(Thread) 

1. 프로세스와 쓰레드 / 722 

2. 쓰레드의 구현과 실행 / 724 

3. start()와 run() / 728 

4. 싱글쓰레드와 멀티쓰레드 / 732 

5. 쓰레드의 우선순위 / 738 

6. 쓰레드 그룹(thread group) / 741 

7. 데몬 쓰레드(daemon thread) / 744 

8. 쓰레드의 실행제어 / 748 

9. 쓰레드의 동기화 / 767 
    9.1 synchronized를 이용한 동기화 / 767 
    9.2 wait()과 notify() / 771 
    9.3 Lock과 Condition을 이용한 동기화 / 779 
    9.4 volatile / 786 
    9.5 fork & join 프레임웍 / 788 




Chapter 14 람다와 스트림 

1. 람다식 / 794 
    1.1 람다식이란? / 794 
    1.2 람다식 작성하기 / 795 
    1.3 함수형 인터페이스(Functional Interface) / 797 
    1.4 java.util.function패키지 / 803 
    1.5 Function의 합성과 Predicate의 결합 / 809 
    1.6 메서드 참조 / 813 

2. 스트림(stream) / 815 
    2.1 스트림이란? / 815 
    2.2 스트림 만들기 / 819 
    2.3 스트림의 중간연산 / 824 
    2.4 Optional와 OptionalInt / 837 
    2.5 스트림의 최종연산 / 842 
    2.6 collect() / 846 
    2.7 Collector구현하기 / 862 
    2.8 스트림의 변환 / 864 



Chapter 15 입출력(I/O) 

1. 자바에서의 입출력 / 868 
    1.1 입출력이란? / 868 
    1.2 스트림(stream) / 868 
    1.3 바이트기반 스트림 - InputStream, OutputStream / 869 
    1.4 보조스트림 / 871 
    1.5 문자기반 스트림 - Reader, Writer / 872 

2. 바이트기반 스트림 / 874 
    2.1 InputStream과 OutputStream / 874 
    2.2 ByteArrayInputStream과 ByteArrayOutputStream / 875 
    2.3 FileInputStream과 FileOutputStream / 879 

3. 바이트기반의 보조스트림 / 882 
    3.1 FilterInputStream과 FilterOutputStream / 882 
    3.2 BufferedInputStream과 BufferedOutputStream / 883 
    3.3 DataInputStream과 DataOutputStream / 886 
    3.4 SequenceInputStream / 892 
    3.5 PrintStream / 894 

4. 문자기반 스트림 / 898 
    4.1 Reader와 Writer / 898 
    4.2 FileReader와 FileWriter / 899 
    4.3 PipedReader와 PipedWriter / 901 
    4.4 StringReader와 StringWriter / 903 

5. 문자기반의 보조스트림 / 904 
    5.1 BufferedReader와 BufferedWriter / 904 
    5.2 InputStreamReader와 OutputStreamWriter / 905 

6. 표준입출력과 File / 907 
    6.1 표준입출력 - System.in, System.out, System.err / 907 
    6.2 표준입출력의 대상변경 - setOut(), setErr(), setIn() / 909 
    6.3 RandomAccessFile / 911 
    6.4 File / 915 

7. 직렬화(Serialization) / 934 
    7.1 직렬화란? / 934 
    7.2 ObjectInputStream과 ObjectOutputStream / 935 
    7.3 직렬화가 가능한 클래스 만들기 - Serializable, transient / 937 
    7.4 직렬화가능한 클래스의 버전관리 / 943 



Chapter 16 네트워킹(Networking) 

1. 네트워킹(Networking) / 946 
    1.1 클라이언트/서버(client/sever) / 946 
    1.2 IP주소(IP address) / 948 
    1.3 InetAddress / 949 
    1.4 URL(Uniform Resource Location) / 951 
    1.5 URLConnection / 954 

2. 소켓 프로그래밍 / 959 
    2.1 TCP와 UDP / 959 
    2.2 TCP소켓 프로그래밍 / 960 
    2.3 UDP소켓 프로그래밍 / 978

반응형
반응형


[플러스포럼] 자바로 IoT 개발할 때 알아야 할 7가지









반응형

+ Recent posts