반응형

상속이란 ?

 

자식 클래스는 부모 클래스에서 정의된 변수나 메소드를 자기 자신 것처럼 사용할 수 있다.

 

상속 형태

class 부모클래스명 {

        변수;

        메소드;

}

 

clasee 자식클래스명 extends 부모클래스명 {

        실행할 문장; 

}

 

오버라이딩

- 부모로부터 상속받은 메소드를 자식 클래스에서 자기 자신 클래스의 기능에 맞도록 재정의하는 기능

 

바로 예시로 들어가보겠습니다

동일 패키지에 존재한다는 가정하에 클래스 파일을 분리해서 만들었습니다.

 

부모클래스

GrandF.java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class GrandF {
 
    public String name = "홍길동할아버지";
    protected String gahun = "열심히하자";
 
    public GrandF() {
        System.out.println("할아버지 생성자입니다");
    }
 
    public void say() {
        System.out.println("할아버지가 말씀하셨다.");
    }
 
}
 
 

3-4번 줄 : name과 gahun이라는 변수명과 변수 값을 정해줍니다.

6-7번 줄 : 생성자를 한번 더 복습해보았습니다.

10-11번 줄 : say라는 메소드를 생성해주었습니다.

 

자식클래스

gajok.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
26
27
28
29
30
31
32
33
34
public class Fatherr extends GrandF {
 
    public String gabo = "지역변수"// 은닉화
 
    public Fatherr() {
        super(); // 부모 생성자 호출. 아규먼트에의해 선택적으로 호출
     
    }
 
    @Override
    public void say() {
        // TODO Auto-generated method stub
        System.out.println("자바 공부를 합시다");
    }
 
    public void showData() {
 
        String gabo = "멤버변수";
 
        System.out.println("gabo : " + gabo); // 멤버변수
        System.out.println("gabo : " + this.gabo); // 지역변수
        System.out.println("gabo : " + super.name);
 
    }
 
    public static void main(String[] args) {
        Fatherr fa1 = new Fatherr();
        fa1.say();
        fa1.showData();
 
    }
 
}
 
 

5번 줄 : GrandF 클래스를 gr이라는 새로운 객체로 생성해준다.

6번 줄 : super()는 부모 클래스의 생성자를 호출하기때문에 "할아버지 생성자"를 호출합니다.

10번 줄 : 기존  부모클래스에서 "할아버지가 말씀하셨다"를 호출해야하지만 자식클래스에서 상속을 받았기 때문에 "자바 공부를 합시다"가 출력됩니다.

16번 줄 : 변수별로 어떤 차이점을 가지는지 보여주기위해 작성하였습니다.

28번 줄 : 오버라이딩한 내용을 출력합니다.

 

 

 

반응형

'JAVA > JAVA' 카테고리의 다른 글

8 - 생성자(Constructor)  (0) 2020.03.04
7 - 메소드  (0) 2020.03.04
6 - 클래스 ( class )  (0) 2020.03.03
5 - 배열(Arrary)  (0) 2020.03.03
4 - 조건문 if & switch  (0) 2020.03.03
반응형

생성자란?

 

new 연산자에 의해서 객체 생성시 항상 실행하는 것으로, 객체 초기화시에 사용된다.

 

특징

 

- 객체를 생성할 때 멤버 변수의 값을 쉽게 초기화하기 위함이다.

- 클래스 이름과 동일하다.

- 클래스에 인자 있는 생성자를 정의하고, 빈 생성자도 같이 사용하고 싶다면 반드시 정의해주어야 한다.

- 하나의 클래스 안에 여러개의 생성자를 정의할 수 있다.

 

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
class ProDuctions {
 
    String name;
    int price;
 
    public ProDuctions() {
        // TODO Auto-generated constructor stub
 
    }
 
    public ProDuctions(String name) {
        // TODO Auto-generated constructor stub
        this.name = name;
    }
 
    public ProDuctions(int price) {
        // TODO Auto-generated constructor stub
        this.price = price;
    }
 
    public ProDuctions(String name, int price) {
        // TODO Auto-generated constructor stub
        this.name = name;
        this.price = price;
    }
 
}
 
public class ProductionMain {
 
    public static void main(String[] args) {
        ProDuctions pd = new ProDuctions();
        System.out.println("pd.name : " + pd.name + "   pd.price : " + pd.price);
 
        ProDuctions pd1 = new ProDuctions("감자");
        System.out.println("pd1.name : " + pd1.name + "   pd1.price : " + pd1.price);
 
        ProDuctions pd2 = new ProDuctions(50000);
        System.out.println("pd2.name : " + pd2.name + "   pd2.price : " + pd2.price);
 
        ProDuctions pd3 = new ProDuctions("고구마"123456);
        System.out.println("pd3.name : " + pd3.name + "   pd3.price : " + pd3.price);
 
    }
 
}
 

 

6-8 줄 : 빈 생성자를 정의

11-13 줄 : 객체 생성시 name 값을 초기화 시키고 this 생성자를 통해 자신 객체를 참조한다. this의 생성 이유는 클래스에서 정의된 멤버 변수임을 정의하기 위해서이다.

 

16-18 줄 : price 값을 초기화시키면서 객체를 생성할 수 있는 생성자를 정의하는 부분

21-24 줄 : name과 price 값을 초기화시키고 생성자를 정의

 

32-42 줄 : 각 다른 생성자를 호출해서 객체를 생성하고 각 변수 값을 출력한다.

 

 

반응형

'JAVA > JAVA' 카테고리의 다른 글

9 - 상속  (0) 2020.03.04
7 - 메소드  (0) 2020.03.04
6 - 클래스 ( class )  (0) 2020.03.03
5 - 배열(Arrary)  (0) 2020.03.03
4 - 조건문 if & switch  (0) 2020.03.03
반응형

메소드

 

- 메소드는 클래스가 수행할 수 있는 기능 정의

 

메소드 형태

 

리턴할 타입 메소드명 (파라미터1....) {

   내용;

}

 

- 메소드에 인자를 전달할 경우 값이 그대로 전달된다. 예시를 보여드리겠습니다.

 

int hap(int num1, int num2) {

      return num1 + num2;

}

위와 같은 메소드를 정의하고 다음과 같이 호출 할 수 있습니다.

int result = hap(100,200)

 

간단한 예를 들어보겠습니다.

 

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 CarSpeed { 

 

    int speed; 

    public String irum; 

    

    //메소드 정의

    void speedhap(CarSpeed myCar) {

        

        myCar.speed += 50;

        

    }

}

 

public class MyCar { 

 

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        

        CarSpeed myCar = new CarSpeed();

        

        //변수 사용

        myCar.speed = 60;

        myCar.irum = "홍길동";

        

        //메소드사용

        

        

        myCar.speedhap(myCar);

        System.out.println(myCar.speed);

    }

 

}

 

 

1줄 - 변수 speed와 irum을 정의해주었습니다.

28줄 - speedhap 메소드를 실행하면 객체변수 speed의 값이 변경됩니다.

따라서 출력 결과는 다음과 같습니다.

 

 

출력 결과

 

1

110

 

메소드 오버로딩

 

- 같은 이름의 메소드를 한 클래스에 여러 개 정의할 수 있다.

 

메소드 오버로딩의 규칙

 

1) 파라미터의 타입이나 개수가 달라야 한다.

 

void 메소드명(int price);

void 메소드명(String name);

 

void 메소드명(int price, String name);

 

2) 파라미터의 이름은 오버로딩 성립에 영향을 주지 않는다.

 

void 메소드명(int x);

void 메소드명(int y);

 

3) 리턴 타입은 오버로딩 성립에 영향을 주지 않는다.

 

void 메소드명(int x);

int 메소드명(int x);

 

예문을 보도록 하겠습니다.

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
 
class ProDuctions {
 
    String name;
    int price;
 
 
    public void display() {
        name = "감자";
        price = 456789;
 
        System.out.println("상품명 : " + name + " // 가격 : " + price );
    }
 
    public void display(String name) {
 
        System.out.println("상품명 : " + name + " // 가격 : " + price);
    }
 
    public void display(String name, int price) {
 
        System.out.println("상품명 : " + name + " // 가격 : " + price);
    }
 
}
 
public class ProductionMain {
 
    public static void main(String[] args) {
        ProDuctions pd = new ProDuctions();
 
        pd.display();
 
        pd.display("고구마");
 
        pd.display("왕감자"50000);
 
    }
 
}
 
 

9 - 13번, 33째 줄 - 선언한 변수에 변수 데이터값을 "감자"와 456789로 지정 해주었으므로 감자와 456789를 출력 할 것이다. 

16 - 18, 35번째 줄 - 메소드 오버로딩을 통해 파라미터 name을 새롭게 정의하여 "고구마"와 456789를 출력한다.

21 - 23, 37번째 줄 - 메소드 오버로딩을 통해 name과 price를 다시 정의하여 "왕감자"와 50000을 출력한다.

 

출력결과

1
2
3
상품명 : 감자 // 가격 : 456789
상품명 : 고구마 // 가격 : 456789
상품명 : 왕감자 // 가격 : 50000

 

반응형

'JAVA > JAVA' 카테고리의 다른 글

9 - 상속  (0) 2020.03.04
8 - 생성자(Constructor)  (0) 2020.03.04
6 - 클래스 ( class )  (0) 2020.03.03
5 - 배열(Arrary)  (0) 2020.03.03
4 - 조건문 if & switch  (0) 2020.03.03
반응형

클래스

자바에서 생성되는 프로그램의 최소 단위

 

클래스를 만드는 주된 이유

- 나만의 타입 코드를 클래스를 생성하기 위해서

 

 

클래스 형식

class 클래스명 {

     변수 정의;

     메소드 정의;

 

}

 

클래스 형식 예시

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Bank {
    
    // 클래스에서의 변수 지정
    String name;
    int num;
    int addmoney;
    
    // 메소드 지정
    void addMoney() {
        System.out.println("돈을 넣었습니다.");
    }
    
    void minusMoney() {
        System.out.println("돈을 뺏습니다.");
    }
 
 
}
 
 

객체 생성

Car mycar1; // Car 클래스 타입인 mycar1 레퍼런스 변수를 선언

mycar1 = new Car(); // new 연산자를 사용해서 메모리상에 mycar1 객체를 생성

그림으로는 다음과 같이 표현이 가능합니다

 

 

 

 

객체를 생성하고 객체의 변수와 메소드 사용하는 예시를 들어보겠습니다.

 

변수와 메소드를 정의해준 클래스

Car.java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Car { // 접근지정자 class 클래스명(대문자로 시작하고 source명과 동일해야함)
    // 멤버 필드(전역변수) : 속성(특성, 구성 요소)
 
    
    int speed; 
    public String irum; 
    
    //메소드 정의
    void speedUp() {
        speed++;
    }
    
    void speedDown() {
        speed--;
    }
 
}
 
 

객체를 생성하고 위에 만든 Car.java를 사용해보겠습니다.

MyCar.java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class MyCar { 
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        Car myCar = new Car();
        
        //변수 사용
        myCar.speed = 60;
        myCar.irum = "홍길동";
        
        //메소드사용
        System.out.println("차주인은 : "+myCar.irum + " 현재 속도는 : " +myCar.speed);
        myCar.speedUp();
        System.out.println("speedUp하였습니다. 현재 속도는 : " + myCar.speed);
        
        myCar.speedDown();
        System.out.println("speedDown하였습니다. 현재 속도는 : " + myCar.speed);
        
    }
 
}
 
 

 

6번째 줄 - Car 클래스를 새로운 객체 myCar로 생성합니다.

9-10번째 줄 - Car 클래스에 정의되어있는 변수를 사용합니다.

13-18번째 줄 - Car 클래스에 정의되어있는 메소드를 불러와서 사용합니다.

 

출력 결과

1
2
3
4
차주인은 : 홍길동 현재 속도는 : 60
speedUp하였습니다. 현재 속도는 : 61
speedDown하였습니다. 현재 속도는 : 60
 

 

이번에는 변수의 종류에 대해서 알아보도록 하겠습니다.

 

default 현재 패키지 내에서 호출 가능
private 캡슐화 - 현재 클래스 내에서만 홏출 가능
public 현재 프로젝트 내에서 호출 가능

 

 

 

 

 

반응형

'JAVA > JAVA' 카테고리의 다른 글

8 - 생성자(Constructor)  (0) 2020.03.04
7 - 메소드  (0) 2020.03.04
5 - 배열(Arrary)  (0) 2020.03.03
4 - 조건문 if & switch  (0) 2020.03.03
3 - 반복문 for & while  (0) 2020.03.03
반응형

배열

성격과 크기가 일치하는 여러개의 기억 장소에 대해 대표명을 주고 첨자로 각 기억장소를 구분

반복처리에 효과적이다 !

 

배열 선언

 

방법1) 데이터 타입[] 배열 변수명

방법2) 데이터 타입 배열 변수명[];

ex) String[] name;

ex) int num[];

 

배열 생성

 

배열은 자바에서 객체 취급한다.

new 연산자에 의해 객체를 생성하고 할당받을 때는 배열의 크기를 정해준다.

데이터는 배열의 크기만큼 사용 가능하고

배열의 크기는 지정 이후 변경이 어렵습니다.

 

ex) name = new String[5];

ex) num = new int[10];

 

소스를 통해 알아보겠습니다.

 

변수 ar에 크기 5에 할당하는 배열을 주었습니다.

 

알아두면 유용한 문법 ! 

배열변수명.length : 배열의 크기를 알 수 있습니다 !
ar[0] 의 값은 10
ar[1] 의 값은 20 으로 할당해주었습니다.
ar[4] 의 값은 ar[0] 과 ar[1]의 데이터 값을 더한 값이므로 40
ar[3] 은 설정해준 값이 없으므로 0을 출력합니다.

 

1
2
3
4
5
6
int ar[] = new int[5]; // 배열의 크기를 5로 할당
        System.out.println("ar의 크기 : " + ar.length);
        ar[0= 10; ar[1= 20;
        ar[4= ar[0+ ar[1];
        System.out.println("ar[4]의 크기 : " + ar[4]);  // ar[0]의 10과 ar[1]의 20을 더하여 30 출력
        System.out.println("ar[3]의 크기 : "+ar[3]); // ar[3]은 정해준 데이터 값이 없어 0 출력
1
2
3
ar의 크기 : 5
ar[4]의 크기 : 30
ar[3]의 크기 : 0

다차원 배열

 

int num[][] = new int[][]; // 2차원 배열 - [행][열]

 

차원이 늘어갈수록 for는 다중으로 입력해주어야한다.

ex) 2차원 배열은 for문 2개

 

su 배열에 3행 4열의 크기를 주었습니다.

 

num은 10으로 for문을 통해 해당하는 배열의 행과열에 num 값을 1씩 증가시켜서 저장했습니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
        int su[][] = new int[3][4];
 
        int num = 10;
 
 
        for(int i=0; i <su.length; i++) {
            for(int j=0; j<su[i].length; j++) {
 
            su[i][j] = num++;
            System.out.print(su[i][j] + " ");
            }
            System.out.println();
        }
 

출력 결과

1
2
3
4
10 11 12 13 
14 15 16 17 
18 19 20 21 
 

가변배열

 

예를 들어 설명하겠습니다.

 

int[][] scores = new int[2][] 으로 열은 따로 설정되어있지 않습니다.

이같은 열을

2,3번째 줄과 같이 유동적으로 설정이 가능합니다. 이것을 가변배열이라고합니다.

1
2
3
4
int[][] scores = new int[2][];
        scores[0= new int[2];
        scores[1= new int[3];
        System.out.println(scores.length + " " + scores[0].length + " " + scores[1].length);

 

4번째 줄을 출력하면 다음과 같은 결과값이 나옵니다.

 

1
2 2 3

 

해당 관련 연습문제

2020/03/03 - [JAVA/JAVA 프로그래밍 응용] - 배열을 이용한키보드로 5개의 점수를 입력받아 출력하기

반응형

'JAVA > JAVA' 카테고리의 다른 글

7 - 메소드  (0) 2020.03.04
6 - 클래스 ( class )  (0) 2020.03.03
4 - 조건문 if & switch  (0) 2020.03.03
3 - 반복문 for & while  (0) 2020.03.03
2 - 연산자  (0) 2020.03.03
반응형

if문

 

- 실행할 문장이 '참'이면 실행해주고 '거짓'이면 실행하지 않습니다.

- if문 구성

 

if ( 조건식 ) {

   실행할 문장;

}

 

예문을 들어보겠습니다.

 

num변수의 값을 2로 주었습니다.

num 값이 3보다 크거나 같으면 '크다'와 '참'을 출력하고 거짓이면 '작다'와 '거짓'을 출력한다.

 

두번째로

num2 변수의 값을 5로 주고

num2 값이 3보다 작으면 '작다2'와 '참2'를 출력하고, 거짓이면 '크다2'와 '거짓2'를 출력한다.

// 조건 판단문 if
        int num = 2;
        
        if(num >= 3) {
            System.out.println("크다");
            System.out.println("참");
        }
        else {
            System.out.println("작다");
            System.out.println("거짓");
        }
        
        int num2 = 5;
        if(num2 < 3) {
            System.out.println("작다2");
            System.out.println("참2");
        }
        else {
            System.out.println("크다2");
            System.out.println("거짓2");
        }

 

작다
거짓
크다2
거짓2

 

 

다중 if문

 

if문 안에 if문이 또 존재하는 것으로 바로 예문을 들어보겠습니다.

 

변수 jum의 값을 75로 주었습니다.

if문을 통해 90이상이면 '수'를 출력

80이상이면 '우'를 출력

70이상이면 '미'를 출력

60이상이면 '양'을 출력

그 외는 '가'를 출력 하는 소스입니다.

 

int jum = 75;
        String re = "평가 결과 : ";
        
        if(jum >= 90) {
            re += "수";
        }
        else if(jum >= 80) {
            re += "우";
        }
        else if(jum >= 70) {
            re += "미";
        }
        else if(jum >= 60) {
            re += "양";
        } else {
            re += "가";
        }
 
        System.out.println(re);

 

평가 결과 : 미

 

 

 


 

Switch 문

 

조건이 여러 개일 경우 if문 대신에 사용 가능한 조건문입니다.

 

Switch문 형식

 

switch(변수) {

case 변수1 : 

       실행문;

       break;

 

case 변수2 : 

       실행문;

       break;

 

default:

       실행문;

}

 

예제로 넘어가겠습니다.

 

num 변수의 값을 20으로 정해주었습니다.

switch문을 통해 num 값이 20인 경우 20을 출력하고 30인 경우 30인 경우 30을 출력 그 외 '기타'로 출력합니다.

 

        int num = 20;
        
        switch(num) {
        case 20:
            System.out.println("20");
            break;
            
        case 30:
            System.out.println("30");
            break;
        default:
            System.out.println("기타");
                break// option
        }

 

20

 

if문과 switch문 공부한 문제

 

2020/03/03 - [JAVA/JAVA 프로그래밍 응용] - if문과 switch문 활용하여 년과 월을 받아 해당하는 월의 일 수 체크

반응형

'JAVA > JAVA' 카테고리의 다른 글

6 - 클래스 ( class )  (0) 2020.03.03
5 - 배열(Arrary)  (0) 2020.03.03
3 - 반복문 for & while  (0) 2020.03.03
2 - 연산자  (0) 2020.03.03
1 - 데이터 타입 & 형 변환  (0) 2020.03.02
반응형

반복문

 

for문

반복 횟수가 정해져 있는 문장을 실행할 때 사용

예를 들도록 하겠습니다

        int a;
        int sum=0;
        
        for (a = 1; a <= 10 ; a+=2) { //for( 초기; 조건; 증감) for문은 초기치와 목적치에만 영향을 받게 해줘야 함
            System.out.print(a + " ");
            sum += a; // 누적        
       }

해당 소스를 보면 변수 a는 1부터 10까지 2씩 증가한다는 조건을 확인할 수 있습니다.

 

        System.out.println("\nfor 탈출 후 a값은 ? " + a);
        System.out.println("합은 " + sum);

1 3 5 7 9 를 출력하게 된다.

 

 

다른 몇가지 예를 들어보겠습니다.

 

 

1) for문을 통하여 아스키코드 대문자 A - Z 를 출력하는 방법을 보여드리겠습니다.

 

for(int i = 65; i <=99; i++) {
            System.out.print((char)i + " ");
        }
 

i가 출력문에서 65가 들어가야하지만 앞에 (char)로 형 변환을 주었기 때문에 A를 출력하게 된다.

그러므로 결과값은 

 

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c 과 같이 출력 된다.

 

 

 

2) 거꾸로 아스키코드 문자를 정수로 출력하는 반복문을 실행해보겠습니다.

 

for(int i = 'A'; i <= 'Z'; i++) {
            System.out.print((Integer)i + " ");
        }
 

출력문에서 i가 A부터 출력 되어야 하지만 앞에 (Integer)로 형 변환을 주었습니다.

그러므로 이번 결과값은 다음과 같습니다.

 

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 

 

 

 

3) 증감식을 다르게 주어보겠습니다.

 

for(int i = 90; i >=65; i-=2) {
            System.out.print((char)i + " ");
        }
 

이번에는 i의 조건이 90부터 65까지 줄어드는 것을 반복합니다. 그런데 증감식을 확인해보면 2씩 줄어들고 출력에서 형 변환을 준 것을 볼 수 있습니다. 그렇다면 이번 결과값은 다음과 같습니다.

 

Z X V T R P N L J H F D B 

 

 

 

4) for문 안에 초기값과 증감식을 2개씩 줘보겠습니다.

 

for(int a = 0, b = 5; a <= 5; a++, b++) {
            System.out.println(a + " " + b);
        }
 

 

초기값을 각각 a = 0 과 b = 5 주고 a++ , b++ 로 1씩 증가시키면

0 5
1 6
2 7
3 8
4 9
5 10

과 같이 출력됩니다.

a가 만족하는 값 5까지 반복하고 for문을 탈출합니다.

 


 

다중 for문

 

 

for문 안에 for문에 들어가있는 것을 다중 for문이라고 합니다.

바로 예를 들어보도록 하겠습니다.

for(int m = 1; m <= 3; m++) {
        System.out.println("m : " + m);
        for(int n = 1; n<=4; n++) {
            System.out.print("n = " + n);
        }
        System.out.println();
    }
r

돌아가는 방식은 이렇습니다.

 

- m이 1인 경우 m 값을 출력하고 다음 for문으로 들어갑니다.

- n이 1부터 시작하고 for문이 만족하는 4까지 반복 출력해주고 내부 for문을 빠져나갑니다.

위와 같은 과정을 m이 3이 될 때까지 반복하고 나옵니다.

 

출력값은 다음과 같습니다.

 

m : 1
= 1n = 2n = 3n = 4
m : 2
= 1n = 2n = 3n = 4
m : 3
= 1n = 2n = 3n = 4

continue문

 

ex: for(초기값; 조건식; 증감식) {
        for(초기값; 조건식; 증감식) {
            
            실행문;
            continue// 안쪽 for문으로 이동            
            continue// ex for문으로 
        }
    }

 

 

여기서 ex는 라벨로 별명을 주어준것과 비슷한 의미이다.

 

 

for(int aa = 1; aa <= 10; aa++) {
            
        if(aa == 3continue;  // aa가 3이면 하단 문맥을 생략하고 다시 위로 올라감
        
        System.out.println(aa);
        
        // if(aa == 5) return; // return을 만나면 메인의 중괄호를 끝냄
        if(aa == 5break// 해당되는 구간에서 반복문을 탈출 시킴
        System.out.println("nice");
   }

 

결과

1
nice
2
nice
4
nice
5
nice
6
nice
7
nice
8
nice
9
nice
10
nice
 

break문

 

가장 가까운곳의 반복문이나 다음에 나올 내용인 switch문을 빠져나간다.

 

continue 설명때 사용한 소스코드에서 break문을 사용해보도록하겠습니다.

for(int aa = 1; aa <= 10; aa++) {
            
            if(aa == 3continue;
            
            System.out.println(aa);
 
            if(aa == 5break// 해당되는 구간에서 반복문을 탈출 시킴
            System.out.println("nice");
        }
 

 

결과값

 

1
nice
2
nice
4
nice
5

while문

 

같은 반복문이지만 for문과 달리 조건이 만족할때만 반복한다.

 

        int w = 1;
        
        while(w <= 5) {
            System.out.println("w : " + w);
            w++// 반복문 탈출 문장이 반드시 필요
        }
 

 

w의 초기값은 1로 주어졌으며, 5가 되기전까지 만족하므로 반복하여 실행하게 된다.

 

w : 1 
w : 2 
w : 3 
w : 4 
w : 5 

do ~ while문

 

while문과 동일하지만 차이점이 있다면 do~while문은 조건식이 뒤에주어집니다.

 

        w = 1;
        do {
            System.out.println("w = " + w );
            w++;
        }while(w<= 5);
 
 
결과값은동일합니다.
 
= 1
= 2
= 3
= 4
= 5

 

반복문에 관련하여 공부한 문제

2020/03/03 - [JAVA/JAVA 프로그래밍 응용] - for문을 이용하여 어떤 수1의 배수이면서 수2의 배수의 개수와 그들의 합

2020/03/03 - [JAVA/JAVA 프로그래밍 응용] - for문을 이용한 구구단 찍기

반응형

'JAVA > JAVA' 카테고리의 다른 글

6 - 클래스 ( class )  (0) 2020.03.03
5 - 배열(Arrary)  (0) 2020.03.03
4 - 조건문 if & switch  (0) 2020.03.03
2 - 연산자  (0) 2020.03.03
1 - 데이터 타입 & 형 변환  (0) 2020.03.02
반응형

연산자의 우선순위는 다음과 같다

종류 연산자 우선순위
최우선 연산자 [] , {}, ()

높음

|

|

|

|

 

낮음

단항 연산자 ++ , -- , !
산술 연산자  +, -, *, /, %
시프트 연산자 << , >> 
비교 연산자 >, <, >=, <=, ==, !=
논리 연산자 &&, ||
삼항 연산자 (조건식) ? : 
대입 연산자 =, *=, +=

사칙연산의 경우 다들 아시는 부분이니까 예시를 들도록 하겠습니다 !

 

산술연산자

        int a = 5;
        int b = 3;
 
        
        // 산술연산자
        System.out.println(a); // 5 출력
        System.out.println(b); // 3 출력
        System.out.println("a + b = " + (a+b)); // 8 출력
        System.out.println("a / b = " + (a/b));     // 1 출력    
        System.out.println("a % b = " + (a%b)); // 2 출력 (2는 나머지)
        System.out.println("a / b = " + (a/(float)b)); // 1.666.. 출력(float형식이라 소수점까지 반환!)
 
        System.out.println(a / 0.0); // Infinity
        System.out.println(a % 0.0); // 나머지 NaN 출력
        
        System.out.println(3 + 4 * 5); // 23 출력
        System.out.println((3 + 4* 5); // 35 출력
 

단항연산자

 

        //누적
        int no = 1;
        no = no + 1// 2 저장
        
        no += 1// 3 저장
        no++// 4 저장
        System.out.println("no : " + no); // 4 출력
        
        //증감 연산자
        int imsi = 5
        int result = ++imsi + 1
        System.out.println(imsi + " " + result); // 6과 7 출력
        
        int imsi2 = 5;
        int result2 = imsi2++ +1// imsi2의 값5가 1을 더하고 그 값을 result2에 준 후 imsi2 값 증가
        System.out.println(imsi2 + " " + result2); // 6과 6 출력
        System.out.println(imsi2); // 6출력
        System.out.println();
        
        
        //부호
        int imsi3 = 3;
        System.out.println(imsi3); // 3 출력
        System.out.println(-imsi3); // -3 출력
        System.out.println(-imsi3 * -1); // 3출력
 

 

소스에서 볼 수 있듯 ++imsi 는 전위 연산자이고,, imsi2++ 는 후위 연산자이다

여기서 전위 연산자란 연산 실행전에 먼저 실행 시키는 것이고, 후위 연산자란 연산 실행 후에 실행 하는 것이다.

그래서 imsi의 경우 5로 데이터 값을 주었지만 전위연산자를 통해 연산 실행 전에 실행하여 출력하였기 때문에

각각 6과 7이 출력된다.

imsi2의 경우는 후위 연산자를 사용하였기 때문에 연산을 실행하고 하여 각각 6과 6이 출력 되는 것이다.

 

추가! 문자열 사용!

        String ss1 = "대한";
        String ss2 = "민국";
        String ss3 = ss1 + ss2; // ss3에 대한민국 저장
        System.out.println("ss3 " + ss3); // 대한민국 출력
        
        System.out.println("ss3 " + ss3 + "2010"); // 대한민국2010
        System.out.println("ss3 " + ss3 + 2010); // 대한민국 2010
        
        System.out.println(10 + 20); // 30
        System.out.println(10 + Integer.parseInt("20")); // 30
        
        System.out.println(10 + "20"); // 1020
        System.out.println(10 + Integer.toString(20)); // 1020

숫자 + 숫자를 계산하는 경우 ! 30으로 출력 된다.

하지만 숫자 + "문자"와같은 경우는 10 + 문자10으로 계산하여 1020이 출력된다.

Integer.parseInt 문법은 문자를 정수로 바꿔주는 역할 !

Integer.toString 문법은 정수를 문자로 바꿔주는 역할 !

유용하게 쓰이니 알아두면 좋다

 

비교 연산자

a > b : a는 b보다 크다

a < b : a는 b보다 작다

a == b : a와 b의 값이 같은지 여부

a != b : a값이 b의 값과 다르면 true

        int a = 5;
        System.out.println(a > 3); // true
        System.out.println(a < 3); // false
        System.out.println(a == 3); // false
        System.out.println(a != 3); // true

 

논리 연산자

'참' 값이면 true를 출력 '거짓' 값이면 false를 출력

조건1 && 조건2 : 조건1도 만족하고 조건2도 만족하는 경우 true 아니면 false

조건1 || 조건2 : 조건1 또는 조건2를 만족하는 경우 true 아니면 false

        int a = 5;
        int b = 10;
        System.out.println(a > 3 && b <= 10); // true
        System.out.println(a >= 3 && b == 7); // false
        
        System.out.println(a > 6 || b <= 10 ); // true a는 6보다 크거나 b는 10보다 작거나 같다
        System.out.println(a > 3 || b < 5); // true
        
        
        System.out.println(a > 6 || b <= 10); // true
        System.out.println(a > 7 || b < ( 5 + 10)); // true
 

쉬트프 연산자

>>

 : 오른쪽으로 비트, 부호비트 이동
>>>  : 오른쪽으로 비트, 비부호 비트 이동
<<  : 좌측으로 해당하는만큼 비트 이동하고 오른쪽 비는 만큼 0으로 채운다.
 
        int ii = 8, ij;
        System.out.println("ii : " + ii + " " + Integer.toBinaryString(ii)); // 8 1000
        
        ij = ii << 1// 쉬프트 연산자 좌로 1보 남는 오른쪽은 0으로
        System.out.println("ij : " +ij); // 16
                
        ij = ii >> 2// 쉬프트 연산자 우로 2보 남는 왼쪽은 부호와 같은 값으로
        System.out.println("ij : " +ij); // 2
        
        ij = ii >>> 2// 쉬프트 연산자 우로 2보 남는 왼쪽은 0으로
        System.out.println("ij : " + ij); // 2
 

삼항 연산자

변수 = (조건) ? 참 : 거짓

조건이 참이면 : 기준 왼쪽 출력 거짓이면 오른쪽 출력

        // 삼항 연산자
        int re = (ii > 5)?100 : 50 + 20 ; // 변수 = (조건)?참:거짓
        System.out.println("re : " + re);
반응형

'JAVA > JAVA' 카테고리의 다른 글

6 - 클래스 ( class )  (0) 2020.03.03
5 - 배열(Arrary)  (0) 2020.03.03
4 - 조건문 if & switch  (0) 2020.03.03
3 - 반복문 for & while  (0) 2020.03.03
1 - 데이터 타입 & 형 변환  (0) 2020.03.02

+ Recent posts