인스턴스 (instance)

1.클래스는 객체의 속성을 정의 하고, 기능을 구현하여 만들어 놓은 코드 상태(설계도면) 입니다.

2.실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 됩니다.

3.가령, 학생의 클래스에서 생성된 각각의 인스턴스는 각각 다른 이름, 학번, 학년등의 값을 가지게 됩니다.

4.new 키워드를 사용하여 인스턴스 생성

힙 메모리

1.생성된 인스턴스는 동적 메모리(heap memory) 에 할당됨

2.C나 C++ 언어에서는 사용한 동적 메모리를 프로그래머가 해제 시켜야 함 ( free() 난 delete 이용)

3.자바에서 Gabage Collector 가 주기 적으로 사용하지 않는 메모리를 수거

4.하나의 클래스로 부터 여러개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 됨

스택과 힙 예시 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package ch01;
 
public class MainTest4 {
//코드의 시작점 main
    public static void main(String[] args) {
 
        int n1;
        int n2 = 100;
        Student studentPack = new Student();
        studentPack.studentId = 1;
        ////////////////////////////////////////////
        
        
        Student studentKim = new Student();
        studentKim.studentId = 100;
        
        
 
    }//end of main
 
}//end of class
 
cs

용어 정리

객체 : 객체 지향 프로그램의 대상, 생성된 인스턴스

클래스 : 객체를 프로그래밍 하기위해 코드로 정의해 놓은 상태

인스턴스 : new 키워드를 사용하여 클래스를 메모리에 생성한 상태

멤버 변수 : 클래스의 속성, 상태, 특성

메서드 : 멤버 변수를 이용하여 클래스의 기능을 구현한 함수

참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수

참조 값 : 생성된 인스턴스의 메모리 주소 값

'자바' 카테고리의 다른 글

객체지향 프로그래밍이란?  (0) 2023.02.14
생성자  (0) 2023.02.14
메서드 (method)  (0) 2023.02.14
함수 호출과 스택 메모리  (0) 2023.02.14
함수  (0) 2023.02.14

객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수

멤버 함수 (member function)이라고도 함

메서드를 구현함으로써 객체의 기능이 구현 됨

함수와 메서드의 차이점

메서드란

자바에서 메서드란 객체의 기능을 구현하기 위해서 클래스 내부에

구현되는 메서드

맴버 함수(member function)

결론 : 메서드는 자신의 변수를 활용해서 객체의 기능을 구현하는것

기본데이터 타입은 - 값(리터럴)이 출력된다

참조 탑입은 - 주소값이 출력 된다

 

class 코드 파일 설계도

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
package ch01;
 
public class Student {
    // 상태(속성)(맴버 변수)
    int studentId;
    String studentName;
    String address;
    int studentNum;
    int studentTop;
    double height;//0.0
    boolean isMarred;//false
    // 기능
 
    // 공부한다.
    public void study() {
        System.out.println(studentName + "학생이 공부를 합니다.");
    }
 
    // 휴식한다
    public void breakTime() {
        System.out.println(studentName + "학생이 휴식을 합니다.");
    }
 
    public void showInfo() {
        System.out.println("=========상태창=========");
        System.out.println("학생의 ID값은 : " + studentId);
        System.out.println("학생의 이름은 : " + studentName);
        System.out.println("학생의 주소은 : " + address);
        System.out.println("=======================");
    }
 
    //함수와 메서드의 차이점
    //메서드란
    //자바에서 메서드란 객체의 기능을 구현하기 위해서 클래스 내부에 구현되는 메서드
    //맴버 함수(member function)
    //결론 : 메서드는 자신의 변수를 활용해서 객체의 기능을 구현하는 것
    
    //학생의 기능(메서드 3가지 정의)해주세요
 
    public void study1() {
        System.out.println(studentName +"이 학원을 갑니다");
    }
    public void test() {
        System.out.println(studentName +"이 시험을 칩니다");
    }
    public void showInfo2() {
        System.out.println("=========상태창=========");
        System.out.println("학생의 ID값은 : " + studentId);
        System.out.println("학생의 이름은 : " + studentName);
        System.out.println("학생의 주소은 : " + address);
        System.out.println("학생의 점수는 : " + studentNum);
        System.out.println("학생의 등수는 : " + studentTop);
        System.out.println("=======================");
    }
    
    
}// end of class
 
cs

class 설계파일을 이용한 main 코드들

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
package ch01;
 
public class MainTest1 {
    // 메인함수
    public static void main(String[] args) {
 
        // The local variable studentKim may not have been initialized
        // 데이터 타입이 - 사용자 정의 타입이고 대문자이기때문에 참조 타입
        Student studentKim = new Student();
        studentKim.studentId = 1;
        studentKim.studentName = "홍길동";
        studentKim.address = "부산시 해운대구";
 
        studentKim.study();
        studentKim.breakTime();
        studentKim.showInfo();
 
        System.out.println("----------------------");
 
        Student studentLee = new Student();
        studentLee.studentName = "이순신";
        studentLee.studentId = 2;
        studentLee.address = "부산시 진구";
        studentLee.study();
        studentLee.showInfo();
    }// end of main
 
}// end of class
 
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package ch01;
 
public class MainTest2 {
 
    public static void main(String[] args) {
        Student studentA = new Student();
        
        studentA.studentId = 1;
        studentA.studentName = "김민우";
        studentA.address = "부산시 사상구";
        studentA.studentNum = 90;
        studentA.studentTop = 3;
 
        studentA.study1();
        studentA.test();
        studentA.showInfo2();
    }
 
}
 
cs

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
package ch01;
 
//수입하다 , 가져오다
import java.util.Scanner;
 
public class MainTest3 {
//메인함수
    public static void main(String[] args) {
        
        Scanner scanner = new Scanner(System.in);
        System.out.println(scanner);
        Student studentKim = new Student();
        System.out.println(studentKim);//주소값이 출력이 된다.
        Student studentLee = new Student();
        System.out.println(studentLee);
        //**
        //기본 데이터 타입은 -- 값 (리터럴)이 출력이 된다
        //참조타입은 - 주소값이 출력이 된다
        System.out.println("-----------");
        System.out.println(studentLee.studentId);
        System.out.println(studentLee.studentName);
        System.out.println(studentLee.address);
        System.out.println(studentLee.height);
        System.out.println(studentLee.isMarred);
        //맴버 변수는 메모리에 올라간뒤 맴버 변수에 값을 할당하지 않으면
        //기본값으로 먼저 초기화 해준다(컴파일러가 알아서 초기화 해줌)
        
    }//end of main
 
}//end of class
 
cs

'자바' 카테고리의 다른 글

생성자  (0) 2023.02.14
인스턴스 (instance) 와 힙 메모리  (0) 2023.02.14
함수 호출과 스택 메모리  (0) 2023.02.14
함수  (0) 2023.02.14
객체 지향언어란?  (0) 2023.02.14

스택 : 함수가 호출될 때 지역 변수들이 사용하는 메모리

함수의 수행이 끝나면 자동으로 반환 되는 메모리

***

함수를 종료하면 실행에 제어권을 반환한다.

리턴 키워드, 함수 구현부 종료

'자바' 카테고리의 다른 글

인스턴스 (instance) 와 힙 메모리  (0) 2023.02.14
메서드 (method)  (0) 2023.02.14
함수  (0) 2023.02.14
객체 지향언어란?  (0) 2023.02.14
continue문 사용하기  (0) 2023.02.14

함수란 (function)

하나의 기능을 수행하는 일련의 코드

구현된(정의된) 함수는 호출하여 사용하고 호출된 함수는 기능이 끝나면 제어가 반환됨

함수로 구현된 하나의 기능은 여러 곳에서 동일한 방식으로 호출되어 사용될 수 있음

함수의 예제 코드

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
package ch06;
 
public class MainTest1 {
 
    // 1리턴값이 int 매개변수 n1,n2,n3 이름은 intAdd
    static int intAdd(int n1, int n2, int n3) {
        return n1 + n2 + n3;
    }
 
    // 2리턴값이 double 매개변수 n1n2 이름은 double
    static double doubleAdd(double n1, double n2) {
        return n1 + n2;
    }
 
    // 3번 리턴값이 void 매개변수는 String article, 함수 이름은 printArticle 출력
    // 이름 그대로 출력기능만을 위하여 
    static void printArticle(String article) {
        System.out.println(article);
    }
 
    // 테스트 - 실행 코드 main
    public static void main(String[] args) {
        System.out.println(intAdd(123));
        System.out.println(doubleAdd(1010));
 
        // 오류 발생
        // System.out.println(printArticle("반가워~~"));
        //자체가 출력 가능
        printArticle("반가워");
    }
}
 
cs

함수의 예제 코드로 로또 랜덤 번호 뽑기

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
package ch06;
 
//Random  가지고오다-->LottoGame .java 파일로 
import java.util.Random;
 
public class LottoGame {
 
    // 반드시 어떠한 기능을 만들지 정의 하고 코드르 작성해 주세요
    // 랜덤 숫자 하나를 반환 하는 기능을 만들어보자
    static int randomNum() {
        // .......
        // JDK 가 만들어 준도구를 이용해보자
        Random random = new Random();
        // 랜덤값 하나 생성 반환 -->45
        // 0 부터 시작 한다 --> 0~44 반환 --> 46 ---->0~45
        //
        int resultNumber = random.nextInt(45+ 1;
 
        return resultNumber;
    }
 
    // 코드 실행 main 함수
    public static void main(String[] args) {
        // System.out.println(randomNum());
        int r1 = randomNum();
        int r2 = randomNum();
        int r3 = randomNum();
        int r4 = randomNum();
        int r5 = randomNum();
        int r6 = randomNum();
 
        System.out.println(r1 + " : " + r2 + " : " + r3 + " : " + r4 + " : " + r5 + " : " + r6);
    }// end of main
 
}// end of class
 
 
cs

'자바' 카테고리의 다른 글

메서드 (method)  (0) 2023.02.14
함수 호출과 스택 메모리  (0) 2023.02.14
객체 지향언어란?  (0) 2023.02.14
continue문 사용하기  (0) 2023.02.14
break문 사용하기  (0) 2023.02.14

클래스(class)

클래스는 객체를 정의하는 설계도입니다.

클래스란? 현실 세상에 존재하는 대부분의 것들은 클래스로 표현할 수 있습니다.

 

클래스와 객체의 의미를 이해하자

class : 객체의 설계도

객체 : 실제 메모리에 올라간 녀석(프로그래 세상에 존재하게됨)

객체의 속성을 정의 할때 : 맴버 변수, main 함수 안에 선언하는 변수는 지역변수 라고 한다

객체 (Object)

객체란 클래스(설계도)를 통해 현실 세계에 뿌리내릴 수 있는 것을 말합니다.

아직 현실 세계에 존재 하지는 않지만 존재할 가능성이 있는 것을 객체라고 합니다.

객체 지향적 프로그래밍 설계란?

이름을 바로 잡는 일이다. 곧 대상 사물의 의미를 정확히 나타낼 수 있는 바른 이름(정명론)

"임금은 임금답고 신하는 신하답고 아버지는 아버지답고 자식은 자식답게[군군신신 부부자자] 되는 것입니다."

"학생은 학생 다워야 한다. "

합당한 이름을 붙이고 그 취지에 맞게 상태(변수)와 행위(메서드)를 정의하여 만들고 다른 객체들과 협력하거나 상호 작용하게 코드를 설계한다.

!(.연산자를 이해하자)

'자바' 카테고리의 다른 글

함수 호출과 스택 메모리  (0) 2023.02.14
함수  (0) 2023.02.14
continue문 사용하기  (0) 2023.02.14
break문 사용하기  (0) 2023.02.14
while - 반복문  (0) 2023.02.14

반복문 내부에서 조건문(if)와 같이 사용하며, 조건이 맞는 경우(true 이면) 이후 반복문 블럭 내부의 다른 수행문들을 수행하지 않음

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
package ch04;
 
import java.util.Scanner;
 
public class ContinueMainTest2 {
//코드의 시작점
    public static void main(String[] args) {
 
        // 스캐너를 사용해서 사용자의 정수 값을 입력 받아서 배수에 갯수를 출력하는 프로그램을 만들어 보세요
        // 테스트 값은 1000,(3을 입력하면 ) 3의 배수의 갯수를 출력
        Scanner sc = new Scanner(System.in);
        System.out.println("숫자를 입력해주세요");
        final int MULTIPLE = sc.nextInt();
        System.out.println("몇까지 확인하시겠습니까");
        final int MAX = sc.nextInt();
        int num = 0;
        int sum = 0;
 
        for (num = 1; num <= MAX; num++) {
            if (num % MULTIPLE == 0) {
                // 만약에 3의 배수이면 화면에 출력 하지 마시오
                sum++;
                continue;
            }
            //System.out.println("num : " + num);
        }
 
        System.out.println(MULTIPLE+"의 배수의 갯수는"+sum+"입니다");
    }// end of main
 
}// end of class
 
cs

'자바' 카테고리의 다른 글

함수  (0) 2023.02.14
객체 지향언어란?  (0) 2023.02.14
break문 사용하기  (0) 2023.02.14
while - 반복문  (0) 2023.02.14
반복문 for문  (0) 2023.02.14

감싸고 있는 제어문의 블록을 빠져 나오는 기능

반복문에서는 주로 조건문(if)와 같이 사용하여 조건에 해당되는 경우 반복 수행을 멈추고 반복문 외부로 수행이 이동

여러 반복문이 중첩되어 있는 경우엔 break 문이 포함되어 있는 반복문만 빠져 나옴

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package ch04;
 
public class BreakTest1 {
//코드의 시작점 main
    public static void main(String[] args) {
        // 중간에 멈추는 Break 문
 
        for (int i = 1; i < 11; i++) {
            System.out.println("i :" + i);
            // 만약 i 값이 소수 7 이면 멈추어라
            if (i % 7 == 0) {
                break;// 중간에 멈추고 반복문 하나를 빠져나옴
            } // end of if
        } // end of for
    }// end of main
 
}// end of class
 
cs

 

'자바' 카테고리의 다른 글

객체 지향언어란?  (0) 2023.02.14
continue문 사용하기  (0) 2023.02.14
while - 반복문  (0) 2023.02.14
반복문 for문  (0) 2023.02.14
제어문 if문  (0) 2023.02.14

조건이 참(true)인 동안 반복수행하기

주어진 조건에 맞는 동안(true) 지정된 수행문을 반복적으로 수행하는 제어문

조건이 맞지 않으면 반복하던 수행을 멈추게 됨

조건은 주로 반복 횟수나 값의 비교의 결과에 따라 true, false 판단 됨

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package ch04;
 
public class WhileMainTest1 {
//코드의 시작점 main
    public static void main(String[] args) {
 
        // 1~1000 까지 연산 코드
 
        int num = 1;
        int sum = 0;
        int userInput = 345;
        
        while (num <= userInput) {
            System.out.println("현재값 : " + num); // 무한 루프에 조심해야함
            //sum = sum + num;
            sum += num;
            num++// 증감 연산자
        }
        System.out.println("연산의 대한 결과 값은 : " + sum);
 
    }// end of main
 
}// end of class
 
cs

do while - 반복문

do-while문

조건과 상관 없이 한번은 수행문을 수행

while문은 조건을 먼저 체크하고 반복 수행이 된다면, do-while은 조건과 상관 없이 수행을 한 번 하고나서 조건을 체크

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
package ch04;
 
import java.util.Scanner;
 
public class WhileMainTest3 {
//코드의 시작점 main(메인 쓰레드)
    public static void main(String[] args) {
 
        int num;
        int sum = 0;
        Scanner scanner = new Scanner(System.in);
        System.out.println("덧셈 정수값을 입력 해주세요");
        // 사용자가 num을 입력하면 프로그램을 종료하게 설계
        // 0이 아니라면 사용자가 입력한 값을 계속 덧셈해서 sum 에 담아주세요
        // do while 문으로 코드를 작성해주세요
 
        do {
            num = scanner.nextInt();
            sum += num;
        } while (num != 0);
        System.out.println("연산된 값 :" + sum + "입니다");
    }// end of main
 
}// end of class
 
cs

 

 

'자바' 카테고리의 다른 글

continue문 사용하기  (0) 2023.02.14
break문 사용하기  (0) 2023.02.14
반복문 for문  (0) 2023.02.14
제어문 if문  (0) 2023.02.14
연산자  (0) 2023.02.13

+ Recent posts