1. Stack, Last in First Out (LIFO) : 마지막에 들어온 값이 첫번째로 나간다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Stack;
 
public class StackTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[] stackArray = {"벤츠""아우디""현대""bmw""람보르기니"};
        
        Stack<String> stack = new Stack<String>();
        for(String carName : stackArray) {
            stack.push(carName);
        }
        
        while(!stack.isEmpty()) {
            //isEmpty : Collection 인터페이스에서 제공
            //요소가 없으면 true 반환
            
            System.out.println(stack.pop());
        }        
    }
}
cs

 

<결과값>


 

2. Queue, First In First Out(FIFO) : 첫번째로 나온 값이 첫번째로 나간다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.LinkedList;
 
public class QueueTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[] QueueArray = {"개나리""난초""코스모스""장미"};
        
        LinkedList<String> queue = new LinkedList<String>();
        
        for(String flower : QueueArray) {
            queue.offer(flower);
        }
        System.out.println("queue의 크기" + queue.size());
        
        String data = " ";
        while((data = queue.poll()) != null) {
            System.out.println(data);
        }
        System.out.println("queue의 크기: " + queue.size() ); //while에서 다씀.
 
    }
}
cs

<결과 창>

'풀스택 > java' 카테고리의 다른 글

Java_ HashSet + Lotto  (0) 2022.04.29
String에서 제공하는 메소드들  (0) 2022.04.29
자바_ Eclipse 단축키 모음  (0) 2022.04.19
자바_인터페이스 예제 Car  (0) 2022.04.19
자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14
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
import java.util.HashSet;
import static java.lang.System.out;
 
public class HashSetTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[] nationArray = {"미국""영국""캐나다""대한민국""미국"};
        
        HashSet<String> hs1 = new HashSet<String>();
        HashSet<String> hs2 = new HashSet<String>();
        
        for(String nation : nationArray) {
            if(!hs1.add(nation)) {
                //add : Collection 인터페이스에 정의되어 있다. 
                //요소추가가 성공하면 true로 반환.
                hs2.add(nation); //중복값 들어감.
            }
        }
        out.println("hs1 : " + hs1);
        out.println("hs2 : " + hs2);
        
        hs1.removeAll(hs2); //hs1에 hs2(미국)을 제거.
        out.println("hs1 : " + hs1);
        out.println("hs2 : " + hs2);
 
    }
}
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
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
 
public class HashSetLotto {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HashSet<Integer> hashSet = new HashSet<Integer>();
                
        for(int i =0; hashSet.size() <6; i++) {
            //size()
            //Collection 인터페이스에서 제공하는 클래스 
            //컬렉션에 저장된 요소개수를 반환
            int num = (int)(Math.random()*45+1 ; //1~45
            //컬렉션에는 객체타입만 들어갈 수 있다. 
            //AutoBoxing 되면서 추가
            hashSet.add(num); //중복제거            
        }
        //set은 정렬 기능 없다. 
        List<Integer> list = new LinkedList<Integer>(hashSet);
        Collections.sort(list);
        System.out.println(list);
 
    }
}
cs

 

--

Hashset 아닌 TreeSet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.TreeSet;
 
public class TreeSetLotto {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        TreeSet treeSet = new TreeSet();
        
        for(int i =0; treeSet.size() <6; i++) {
            //size()
            //Collection 인터페이스에서 제공하는 클래스 
            //컬렉션에 저장된 요소개수를 반환
            int num = (int)(Math.random()*45+1 ; //1~45
            //컬렉션에는 객체타입만 들어갈 수 있다. 
            //AutoBoxing 되면서 추가
            treeSet.add(num); //중복제거            
        }
        System.out.println(treeSet);
    }
}
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
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
//String에서 제공하는 메소드를 살펴보자. (api)
public class StringTest4 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String source1 ="aaabbbcccdddeeefffaaabbbcccdddeeefff";
        String source2 ="AAAbbbcccdddeeefffaaabbbcccdddeeefff";
        
        //char charAt(int index)
        //인자값으로 지정된 인덱스 위치의 문자 하나 반환
        System.out.println("원본문자열 : " +source1 );
        System.out.println("첫번째 문자  : source1.charAt(0) : "
                 +source1.charAt(0) );
        System.out.println("네번째 문자  : source1.charAt(0) : "
                +source1.charAt(3) );
        
        //int indexOf(String searchStr)
        //인자로 지정된 문자열을 원본문자열에서 검색해서 문자열이 존재하는
        //인덱스 번호를 반환
        System.out.println("aaa 문자열의 인덱스 번호 : " 
                + source1.indexOf("aaa"));
        
        //int lastIndexOf(String searchStr)
        //인자로 지정된 문자열을 원본문자열에서 뒤에서부터 검색해서 
        //문자열이 존재하는 인덱스 번호를 반환
        System.out.println("aaa 문자열의 인덱스 번호 : " 
                + source1.lastIndexOf("aaa"));
        
        //String substring(int startIndex)
        //startIndex 문자부터 마지막 문자까지 반환
        System.out.println("네번째 문자부터 마지막문자까지 추출  : source1.substring(3) : "
                +source1.substring(3) );
        
        //String substring(int startIndex, int endIndex)
        //startIndex 문자부터 endIndex -1 문자까지 반환
        System.out.println("네번째 문자부터 6번째문자까지 추출  : source1.substring(3,6) : "
                +source1.substring(3,6) );
        
        //String replace(String oldStr, String newStr)
        //oldStr을 newStr로 치환해줌
        System.out.println("원본문자열에서 aaa를 ggg로 변경 : " +
                source1.replace("aaa""ggg"));
        
        //boolean endsWith(String endStr)
        //문자열이 인자로 지정된 문자열로 끝나는지 판단
        //주로 확장자 확인할때 사용됨
        System.out.println("원본문자열이 fff로 끝나는지 확인 : "
                + source1.endsWith("fff"));
        
        //boolean startsWith(String startStr)
        //문자열이 인자로 지정된 문자열로 시작되는지 판단
        System.out.println("원본문자열이 aaa로 시작되는지 확인 : "
                + source1.startsWith("aaa"));
        
        //boolean contains(String searchStr)
        //원본문자열에 인자로 지정한 문자열이 포함되어 있는지를 판단
        System.out.println("원본문자열에 bbb문자열이 있는지 판단: " + source1.contains("bbb"));
        
        //int length()
        //문자열의 길이 반환
        System.out.println("원본문자열의 길이 : " + source1.length());
        
        //boolean equals(String str) '대소문자'를 구분하여서 문자열 비교
        System.out.println("source1 과 source2를 대소문자를 구분하여 비교: source1.equals(source2) :" 
                + source1.equals(source2));
        
        //boolean equalsIgnoreCase(String str)  '대소문자'를 구분하지 않고 문자열 비교
        System.out.println("source1 과 source2를 대소문자를 구분하여 비교: source1.equalsIgnoreCase(source2) :" 
                + source1.equalsIgnoreCase(source2));
        
        //String toUpperCase() 대문자로 변경
        System.out.println("source1을 대문자로 변경 : " + source1.toUpperCase());
        
        //String toLowerCase() 소문자로 변경
        System.out.println("source2을 소문자로 변경 : " + source2.toLowerCase());
        
        //String[] split(String delims) delims(인자)를 기준으로 원본문자열을 쪼갠다. 
        String source3 = "aaa,bbb,ccc";
        System.out.println(source3);
        String[] splitStrArray = source3.split(","); //,를 기준으로 분리된다. 
        System.out.println("");
        
        for(String str : splitStrArray) {
            System.out.println(str);
        }
        System.out.println();
        
        //String trim() 공백제거
        String source4 = " java ";
        System.out.println("원본문자열: '" + source4 + "'");
        System.out.println("공백제거후 source4 문자열 : source4.trim() : '"
                + source4.trim() + "'");    
        
        
        
        
        
    }
}
 
cs

'풀스택 > java' 카테고리의 다른 글

Java _ Stack 과 Queue 이해  (0) 2022.04.29
Java_ HashSet + Lotto  (0) 2022.04.29
자바_ Eclipse 단축키 모음  (0) 2022.04.19
자바_인터페이스 예제 Car  (0) 2022.04.19
자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14

<Eclipse 단축키>

- Ctrl + Shift  + F - 소스 코드 자동 정리
- Ctrl + F11 - 실행(디버깅)
- Ctrl + Space - 입력 보조 장치 강제 호출 → 입력하는 도중에 언제라도 호출 가능
- Ctrl + D - 한 줄 삭제
- Ctrl + I - 들여쓰기 자동 수정
- Ctrl + Shift + '/' - 블록 주석(/* */)
- Ctrl + Shift + '\' - 블록 주석 해제
- Ctrl + '/' - 주석(//)
- Ctrl + F6 - Editor 창간의 이동
- Ctrl + 1 - 빠른 교정, 문맥에 맞게 소스 교정을 도와줌. 
               (클래스, 메소드를 필요한 위치에 자동 생성해줌)
- Ctrl + Shift + O - imoort문 자동 생성
- F6 - 디버깅 한줄씩 실행(step over)
- Alt + UP, Alt + Down - 줄바꿈, 해당 라인을 위아래로 이동
- Ctrl + Alt + Down - 복사 후 아래 붙여넣기
- Alt + Shift + UP - 블록 설정, 소스 코드를 블록단위로 설정
- Alt + Shift + Down - 블록 해제, 소스 코드를 블록단위로 해제

- Alt + Shift + x -> j  - 코드 실행.
- Ctrl + Shift + T - 클래스 찾기
- Shift + Alt +S → Generate Gettes and Setters - 
                           변수 get/set 함수생성, 여러개를 한번에 생성할 수 있음
- Ctrl + F -> 해당 단어 찾아서 치환



- F2 : Rename 이름변경

'풀스택 > java' 카테고리의 다른 글

Java_ HashSet + Lotto  (0) 2022.04.29
String에서 제공하는 메소드들  (0) 2022.04.29
자바_인터페이스 예제 Car  (0) 2022.04.19
자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14
자바 _ 상속관련 내용  (0) 2022.04.11

<문제>

interface: Speed

             필드명:   int SPEED= 10;

             메소드:   void upSpeed(int inc); //입력받은 속도가 양수인 경우

            voie downSpeed(int dec);    / //입력받은 속도가 음수인 경우

            void stop(); //입력받은 속도가 0 인 경우

interface: Display

             메소드 :  void  disp();         //계산,출력

class:Car

          필드명 : int inputVelocity;                 //입력받을속도

           int velocity;            //현재속도

          메소드 : void input();            //속도를 입력받고 disp()

Car 클래스를  Speed, Display  구현 받아서 처리

<**입.출력**>

속도입력 :  50

현재속도는  60km/h 입니다.

속도입력 : -20

현재속도는 40km/h 입니다.

속도입력 : -40

정지하셨습니다.

 

 

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
import java.util.Scanner;
 
interface Speed{
    int SPEED = 10;
    void upSpeed(int inc);
    void downSpeed(int dec);
    void stop(); //입력속도 0인 경우
}
interface Display extends Speed{
    void disp();
}
class Cars implements Display {
 
    
    int inputVelocity;//입력받을속도
    int velocity = SPEED;            //현재속도
    //void input();            //속도를 입력받고 disp() 
    
 
    @Override
    public void disp() {
        if(velocity < 0 ) {
            stop();
        }
        if(inputVelocity >0) {
            upSpeed(inputVelocity);
        }
        else {
            downSpeed(inputVelocity);
        }
        
    }
    
    @Override
    public void upSpeed(int inc) {
        velocity +=inc;
        System.out.println("현재 속도는 " + velocity +"km/h입니다." );
        
    }
 
    @Override
    public void downSpeed(int dec) {
        // TODO Auto-generated method stub
        velocity +=dec;
        System.out.println("현재 속도는 " + velocity +"km/h입니다." );
        
    }
 
    @Override
    public void stop() {
        // TODO Auto-generated method stub
        System.out.println("정지하셨습니다.");
    }
 
    
}
 
public class Car_1{
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int inputVelocity;
        Cars car = new Cars();
        
        while(true) {
            System.out.println("속도 입력: ");
            car.inputVelocity = scanner.nextInt();
            
            
            car.disp();
            
            if (car.velocity <=0) {
                car.stop();
                break;
            }
        }
        
    }        
    
}
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
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
 
import java.util.Scanner;
 
interface Speed{
    int SPEED = 10;
    void upSpeed(int inc);
    void downSpeed(int dec);
    void stop(); //입력속도 0인 경우
}
interface Display extends Speed{
    void disp();
}
 
class car11 implements Speed, Display{
    int inputVelocity;
    int velocity = Speed.SPEED;
    void input() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("속도 입력: ");
        inputVelocity = scanner.nextInt();
    };
    @Override
    public void disp() { 
        // TODO Auto-generated method stub
        //속도 계산
        if(inputVelocity >=0) {
            upSpeed(inputVelocity);
        }
        else {
            downSpeed(inputVelocity);
        }
        
        //출력
        if(velocity <= 0) {
            stop();
        }
        else {
            System.out.println("현재 속도는 " + velocity +"km/h입니다.");
        }
    }
    @Override
    public void downSpeed(int dec) {
        // TODO Auto-generated method stub
        velocity += dec; // +하는 이유 -로 넘어오기 때문에
        
    }@Override
    public void stop() {
        // TODO Auto-generated method stub
        System.out.println("정지하셨습니다.");
        
    }@Override
    public void upSpeed(int inc) { //up, down따로 만들필요없었다..?
        // TODO Auto-generated method stub
        velocity += inc;
        
    }
//여기에 Override 안쓰면 car11에 빨간줄 뜸.
 
public class Car_1_correctanswer {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        car11 car = new car11();
        boolean stop = false;
        
        while(!stop) {
            car.input();
            if(car.velocity <=0) {
                stop = true;
            }
        }
 
    }
}
 
cs

'풀스택 > java' 카테고리의 다른 글

String에서 제공하는 메소드들  (0) 2022.04.29
자바_ Eclipse 단축키 모음  (0) 2022.04.19
자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14
자바 _ 상속관련 내용  (0) 2022.04.11
자바 메소드, 함수  (0) 2022.04.06

부모 클래스 : Person2

자식 클래스 : President, Student, Employee1

 

위에 클래스를 응용하는 메인 클래스 : CastingTest

 

 

<부모 클래스>

1
2
3
4
5
6
7
8
9
10
11
12
public class Person2 {
 
    String name;
    int age;
    String addr;
    int x = 10;
    
    void showSleepingStyle() {
        System.out.println("일반사람들의 수면 스타일은 다양하다.");
    }
}
 
cs

 

<자식 클래스>

 

1
2
3
4
5
6
7
8
9
10
public class President extends Person2{
    String nation;
    int salary;
    
    @Override //show+ ctrl space
    void showSleepingStyle() {
        // TODO Auto-generated method stub
        System.out.println("대통령은 과도한 업무로 항상 수면시간이 부족하다.");
    }
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Student extends Person2{
    String schoolKind;
    int grade;
    
    @Override
    void showSleepingStyle() {
        // TODO Auto-generated method stub
        System.out.println("학생들의 수면스타일은 규칙적이다.");
    }
    
    //부모클래스에 정의되어있지않고 자식클래스에만 정의된 메소드
    public void study() {
        System.out.println("공부를 한다.");
    }
}
cs
1
2
3
4
5
6
7
8
9
10
public class Employee1 extends Person2 {
    String department;
    int x =30;
    
    @Override
    void showSleepingStyle() {
        // TODO Auto-generated method stub
        System.out.println("직장인은 잦은 회식으로 수면시간이 부족하다."); 
    }
}
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
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
public class CastingTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        President president1 = new President();
        
        //1. 자식클래스 타입의 객체(객체를 가리키는 레퍼런드 값)를
        //부모클래스 타입의 레퍼런스 변수에 할당하면
        Person2 person2 = president1;
        
        //2. 부모 클래스 타입의 객체(객체를 가리키는 레퍼런드 값)를
        //자식클래스 타입의 레퍼런스 변수에 할당하면
        //President president2 = person2; //컴파일 오류남.
        //명시적인 캐스팅(down)이 필요하다.
        if(person2 instanceof President) {
            President president2 = (President)person2;
        }
        //President president2 = (President)person2;
        
        //3. 자바에서는 부모타입의 레퍼런스 변수가 자식클래스객체를 참조할 수 있지만
        //자식 클래스 타입의 레퍼런스 변수가 부모객체를 참조할 수는 없다. 
        Person2 person3 = new Person2();
        
        if(person2 instanceof President) {
            President president3 = (President)person2;
        }
        else {
            System.out.println("캐스팅 불가.");
        }
        
        //다운캐스팅을 할때는 다운캐스팅을 할 수 있는 지를 판단해야한다. 
        //이때 사용되는 연산자가 instanceof
        
        //4.자바에서 캐스팅을 부모클래스와 자식클래스 간에서만 가능하다. 
        Student student1 = new Student();
        //President president4 = (President)student1;
        
        //5. 부모 클래스에는 정의되지 않고 자식클래스에만 정의된 메소드는 부모클래스를 통해서 호출할 수 없다. 
        Person2 person4 = new Student();
        //person4.study(); //이럴 경우에 다운 메서드를 사용해야한다. 
        Student student2 = (Student)person4; 
        student2.study(); //"공부를 한다."
        
        //6. 부모 클래스에 정의된 클래스를 자식클래스에서 오버라이딩 했을때
        // 부모 클래스 타입의 레퍼런스 변수로 해당 메소드를 호출하면 항상 해당 객체에 오버라이딩된 객체가 출력된다.
        // 즉, 메소드의 다형성이 제공된다. 
        Person2 person5 = new Student();
        person5.showSleepingStyle();
        person5 = new President();
        person5.showSleepingStyle();
        person5 = new Employee1();
        person5.showSleepingStyle();
        
        //7. 변수
        //자바에서 호출되는 변수는 컴파일 타입에 결정됨. 
        //즉, 레퍼런스 변수 타입에 정의된 변수가 호출됨.
        Person2 person6 = new Employee1();
        System.out.println("person6.x = " + person6.x );
        
        Employee1 employee1 = (Employee1)person6;
        System.out.println("employell.x = " + employee1.x);
    }
}
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
//다형성
 
//요구사항
//만약 사람중에 학생이면 study() 메소드를 호출하라. (instansof)
class PersonInfo {
    void printSleepingStyle(Person2 person) {
        if(person instanceof Student) {
            Student student = (Student)person;
            student.study();
        }
        person.showSleepingStyle();
    }
}
public class ParameterPloyTest1 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        PersonInfo personInfo = new PersonInfo();
 
        personInfo.printSleepingStyle(new Student());
        personInfo.printSleepingStyle(new President());    
        personInfo.printSleepingStyle(new Employee1());
    }
}
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
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
 
//가전제품 구매 
 
class Gajun{
    
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return "Gajun";
    }
}
 
class Tv extends Gajun{
    @Override
    public java.lang.String toString() {
        // TODO Auto-generated method stub
        return "Tv";
    }
}
 
class Computer extends Gajun{
    @Override
    public java.lang.String toString() {
        // TODO Auto-generated method stub
        return "Computer";
    }
}
class dryir extends Gajun{
    @Override
    public java.lang.String toString() {
        // TODO Auto-generated method stub
        return "dryir";
    }
}
 
class Buyer{
    //현재까지 주문한 목록을 보여줘라.
    Gajun[] gajunArray = new Gajun[3];
    int index = 0;
    void order(Gajun gajun) {
        gajunArray[index++=gajun;
        System.out.println(gajun + "를 주문했습니다.");
    }
    
    void showOrderList() {
        String orderItem = "";
        for (int i = 0; i < gajunArray.length; i++) {
            orderItem += (i == 0)? gajunArray[i] : "," +gajunArray[i];
        }
        System.out.println("주문목록 : " + orderItem);
    }
}
 
public class ParameterPloyTest2 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Buyer buyer = new Buyer();
        buyer.order(new Tv());
        buyer.order(new Computer());
        buyer.order(new dryir());
        
        buyer.showOrderList();
    }
}
cs

<출력결과>

'풀스택 > java' 카테고리의 다른 글

자바_ Eclipse 단축키 모음  (0) 2022.04.19
자바_인터페이스 예제 Car  (0) 2022.04.19
자바 _ 상속관련 내용  (0) 2022.04.11
자바 메소드, 함수  (0) 2022.04.06
7일차_조건, 반복문 예제  (0) 2022.04.04
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
//this()
//자기 자신 클래스의 다른 생성자를 호출
//여러개의 생성자에서 공통적으로 수행해야하는 작업을 특정 생성자에만 정의해서 중복코드를 제거 
 
//요구사항
//음료수 클래스를 정의한다.
//속성은 음료수명과 가격이 있다. 음료수명은 기본값이 물, 800원.
 
//this()를 사용하는 규칙
//1. this()는 생성자의 첫번째 실행문으로 사용되어야 한다. 
//2. this()는 recursive call 지원 안함. 
 
class Drink{
    String name;
    int price;
    
    public Drink() { //생성자는 그냥 공백에서 Ctrl+space -> enter
        // TODO Auto-generated constructor stub
        this("물, 800");    
    }
    public Drink(int price) { 
        // TODO Auto-generated constructor stub
        this("물, pirce");
        /*
         * this.name = "물"; this.price = price;
         */    
    }
    public Drink(String name, int price) { 
        // TODO Auto-generated constructor stub
        this("name, 800");    
    }
    public Drink(String name) { 
        // TODO Auto-generated constructor stub
        //this(name, price) //recursive call
        this.name = "name";
        this.price = price;        
    }
}
public class ThisConstructorTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
    }
 
}
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
38
39
40
41
42
43
44
45
46
47
48
//상속.
//상속은 물려주는 것. 
//부모 클래스를 확장한다.
//오버라이딩 = 재정의한다. 
 
class Parent{
    int parentVar;
    
    void ParentMethod() {
        System.out.println("parent method");
    }
}
 
class Child extends Parent{
    int childVar;
    
    void childMethod() {
        System.out.println("child method");
    }
}
class GrandChild extends Child{
    int grandVar;
    
    void grandMethod() {
        System.out.println("grand method");
    }
}
 
public class ExtendsTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Child child = new Child();
        child.childMethod();
        child.ParentMethod();
        
        System.out.println("child.parentVar ="+ child.parentVar);
        System.out.println("child.childvar = " + child.childVar);
        GrandChild grandChild = new GrandChild();
        System.out.println("grandChild.parentVar = "+ grandChild.parentVar);
        System.out.println("grandChild.childVar = "+ grandChild.childVar);
        System.out.println("grandChild.grandVar = "+ grandChild.grandVar);
        
        grandChild.ParentMethod();
        grandChild.childMethod();
        grandChild.grandMethod();
    }
}
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
//자바에서 부모클래스에 정의된 정의나 메소드를 자식 클래스에서 재정의하면
//부모 클래스에서 정의한 변수나 메소드는 은폐된다. 
class OverridingParent{
    int money =100;
    
    public void parentMethod() {
        System.out.println("parent method");
    }
}
 
class OverridingChild extends OverridingParent{
    String money = "500원";
    
    @Override //코드상에 설정을 할 수 있는 기능. 아래에 정의하는 메소드가 부모클래스에 정의되는 메소드를 
오버라이딩하는 메소드라는 의미.
    public void parentMethod() {
        // TODO Auto-generated method stub
        System.out.println("overriding method");
    }
}
public class OveerridingTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        OverridingChild overridingChild = new OverridingChild();
        overridingChild.parentMethod();
        
        overridingChild.money ="100원";
    }
}


cs
 
   

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Employee{
    
    String name;
    String department;
    int salary;
    
    String getInformation() {
        return "이름 : " + name + ", 부서: " + department + ", 급여: " + salary;
    }
}
 
class Salesman extends Employee{
    int commisstion;
    
    String getInformation() {
        /*//밑에 방법이 더 간단.
         * return "이름 : " + name + ", 부서: " + department + ", 급여: " + salary + "수당: " +
         * " commission";
         */        
        return super.getInformation() + ", 수당:" +commisstion;
    }    
}
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
class Super {
    String name = "홍길동";
}
class Sub extends Super{
    String name = "김영희";
    
    String getLoclaName() {
        String name = "김철수";
        return name;
    }
    String getThisName() {
        String name = "김철수";
        return this.name; //위에 name이 있기에 this를 사용함. 로컬변수가 위에 있으므로 멤버변수를 사용하기 위해서 this사용.
    }
    String getSuperName() {
        String name = "김철수";
        return super.name; 
    }
}
public class ThisSuperTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Sub sub = new Sub();
        System.out.println("sub.getLocalName = " + sub.getLoclaName() );
        System.out.println("sub.getThisName = " + sub.getThisName() );
        System.out.println("sub.getSuperName = " + sub.getSuperName() );
    }
}
cs

'풀스택 > java' 카테고리의 다른 글

자바_인터페이스 예제 Car  (0) 2022.04.19
자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14
자바 메소드, 함수  (0) 2022.04.06
7일차_조건, 반복문 예제  (0) 2022.04.04
2일차 _ 이클립스 다운방법  (0) 2022.03.29

8일차(4월 6일) 

 

 

1. 메소드를 이해하기 위해서 차의 속성을 가지고 코드 생성. 

첫번째 코드는 두번째 코드박스에서 불러와서 사용된다. 

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
public class Car {
    //속성
    String carName;
    String CarColor;
    int carYear;
    int carSpeed;
    int displacement;
    
    //메소드 
    //리턴타입 메소드명(데이터타입 파라미터명){
    //실행문;
    //}
    
    //리턴타입: 메소드 기능을 수행한 후 메소드를 호출한 곳으로 반환
    //데이터타입
    //반환하는 데이터가 있으면 리턴타입으로 viod로 지정한다. 
    
    //overloading 오버로딩
    //클래스 내에서 동일한 이림의 메소드를 여러개 정의 할 수 있도록 해주는 기능.
    void run() {
        System.out.println("달린다.");
    }
    void stop() {
        System.out.println("멈춘다.");
    }
    void speedup() {
        carSpeed++;
    }
    void speedup(int velocity) {
        carSpeed+= velocity;
    }
    void speeddown() {
        carSpeed--;
    }
    void speeddown(int velocity) {
        carSpeed-= velocity;
    }
    void start() {
        System.out.println("시동을 건다.");
    }
}
 
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
public class CarMain {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Car myCar = new Car(); //생성자. //객체를 만들땐 new를 쓴다.
        System.out.println("myCar.carSpeed = " + myCar.carSpeed);
        System.out.println("myCar.carName = " + myCar.carName);
 
        myCar.carSpeed = 2;
        myCar.carName = "포르쉐";
        
        System.out.println("myCar.carSpeed = " + myCar.carSpeed);
        System.out.println("myCar.carName = " + myCar.carName);
        
        System.out.println("===메소드 호출===");
        myCar.run();
        myCar.speedup();
        System.out.println("myCar.speedup()");
        System.out.println("myCar.carSpeed = " + myCar.carSpeed);
        
        myCar.speeddown(100);
        System.out.println("speeddown(100)");
        System.out.println("myCar.carSpeed = " + myCar.carSpeed);
        
        
        Car yourCar = new Car(); //생성자, 객체2
        
        yourCar = myCar; //같은 객체를 가르킨다.
        System.out.println("yourCar = myCar");
        System.out.println("speeddown(100)");
        System.out.println("myCar.carSpeed = " + myCar.carSpeed);
    }
 
}
 
cs

 

 

 

 

 

2. 응용한다. 은행 서비스 만든다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Account {
 
    int balance =0//잔액을 저장하는 속성
    
    void deposit(int account) { //입금처리
        balance += account;
        System.out.println(account + "원이 입금 되었입니다.");
    }
    void withdraw(int account) { //출금처리
        if(balance - account < 0) {
            System.out.println("잔액이 부족합니다.");
        }
        else {
            balance -= account;
            System.out.println(account + "원이 출금되었입니다.");
        }
    }
    void showBalance() { //현재의 잔액을 출력
        //현재 계좌의 잔액은 ()월 입니다.
        System.out.println("현재 계좌의 잔액은 " + balance + "입니다.");
    }
}
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.util.Scanner;
 
public class Banking {
 
    public static void main(String[] args) {
        
        boolean stop = false;
        Account account = new Account();
        Scanner scanner = new Scanner(System.in);
        // TODO Auto-generated method stub
        //프로그램이 실행되면 아래와 같이 메뉴를 출력한다. 
        // 1. 입금
        // 2. 출금
        // 3. 잔액조회
        // 4. 프로그램 종료
        
        //1번이나 2번 메뉴를 선택하면 금액을 보인다. 
        //1번 선택시, 입금액 :
        //2번 선택시, 출금액 :
        //그리고 입출금 처리한다. 
        
        //3번메뉴를 선택하면 현재 잔액을 출력
        //4번메뉴를 선택하면 프로그램 종료.
        
        while(!stop) {
            System.out.println();
            System.out.println("다음을 선택하세요. ");
            System.out.println("1. 입금");
            System.out.println("2. 출금");
            System.out.println("3. 잔액조회");
            System.out.println("4. 프로그램 종료");
            
            int num = scanner.nextInt();
            int money = 0;
            
            switch(num) {
                case 1 : 
                    System.out.print("입금액 : ");
                    money = scanner.nextInt();
                    account.deposit(money);
                    break;
                case 2 :
                    System.out.println("출금액");
                    money = scanner.nextInt();
                    account.withdraw(money);
                    break;
                case 3:
                    account.showBalance();
                    break;
                case 4:
                    System.out.println("종료되었습니다.");
                    stop = true;
            }
        }
    }
}
 
cs

 

 

1. 사과를 담는데 필요한 바구니(버켓)의 수를 구하는 코드.

예) 사과의 수가 123개이고 하나의 바구니에는 10개의 사과를 담을 수 있다면, 13개의 바구니가 필요할 것이다.

 

-사과 수를 바구니로 나누고, 딱 나누어 떨어지지 않는다면 +1을 해준다. (나머지가 존재하면 +1을 해준다.)

1
2
3
4
5
6
7
8
9
10
11
public class Main {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int numOfApples = 123;
        int sizeOfBucket = 10;
        int numOfBucket = (numOfApples/sizeOfBucket)+(numOfApples/sizeOfBucket !=0 ? 1 : 0);
 
        System.out.println("필요한 바구니의 수 :"+numOfBucket);
        }
}
cs

 

 

 

 

2. num 의 값에 따라 양수,음수,0을 출력하는 코드를 작성 하시요.

 

-삼항 연산자 사용.

1
2
3
4
5
6
7
8
public class Main {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int num = 10;
        System.out.println(num > 0 ? "양수" : (num==0) ? "0" :" 음수");
    }
}
cs

 

 

 

 

3. num의 값 중 에서 100자리 이하를 버리는 코드를 작성 하시요.

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
import java.util.Scanner;
 
public class n0404_3 {
    //num의 값 중 에서 100자리 이하를 버리는 코드를 작성 하시요.
    //예를 들어 322인 경우 300 이 되며 234 인 경우에는 200 이 된다.
    //가장 어려움.
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        System.out.print("숫자 : ");
        String strNumber = scanner.next();
        int intNumber = Integer.parseInt(strNumber);
        
        int digit = strNumber.length();
        int number =1;
        
        for (int i =1; i<digit; i++) {
            number *= 10;
        }
        
        int goalNumber = intNumber / number * number;
        System.out.println("goalNumber = " + goalNumber);
    }
}
cs

 

 

4. ch 값이 영문자 이거나 숫자일 경우만 b b의 값이 true 가 출력되게 코드를 작성하세요..

1
2
3
4
5
6
7
8
9
10
public class Main{
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        char ch ='z' ;
        boolean b = ( ch >= 'A' && ch <='Z' ||  ch >= 'a' && ch <='z' || ch >='0'&& ch <= '9' );
 
        System.out.println(b);
    }
}
cs

 

 

 

5. 4개의 값을 입력받아 처리하시오.

Input name: 장윤정

Input gender: F

Input age:  25

Input tall: 173.3

(성별 : M 이면 "남자", 나머지 "여자" - 삼항연산자 이용)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Scanner;
 
public class Main{
    //4개의 값을 입력받아 처리하시오
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        System.out.println("Input name :");
        String name = scanner.next();
        System.out.println("Input gender :");
        String gender = scanner.next();
        System.out.println("Input age :");
        int age = scanner.nextInt();
        System.out.println("Input tall :");
        double tall = scanner.nextDouble();
        
        System.out.println(name);
        System.out.println(gender.equals("f") ? "여자" : "남자");
        System.out.println(age);
        System.out.println(tall);
    }
}
cs

 

 

 

6. 다음과 같이 연산되도록 코드를 완성하세요..

1-2+3-4+5-6....=100이상

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Main{
    public static void main(String[] args) {
        int i=1, ans=0;
        while(ans<=100){
            if(i%2==1)
                ans += i ;
            else 
                ans -= i;
            i++;
        }
        System.out.println(i);
    }
}
 
cs
1
2
3
4
5
6
7
8
9
10
11
public class Main{
    public static void main(String[] args) {
        int i=1, ans=0;
        while(ans<=100){            
            ans+=i%2 == 0 ? -i : i;
            i++;
        }        
        System.out.println(i);
    }
}
 
cs

답 : 202

 

 

7. 두 개의 주사위를 던졌을 때 두 수의 합이 6 이 되는 모든 경우가 몇 개인지를 계산하는 코드를 생성 하시요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Main{
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int sum =0;
        
        for (int i =1; i<=6; i++) {
            for (int j =1; j<=6; j++) {
                if (i+j==6)
                    sum++;
            }
        }
        System.out.println(sum);
    }
}
 
cs

답 : 5

 

 

'풀스택 > java' 카테고리의 다른 글

자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14
자바 _ 상속관련 내용  (0) 2022.04.11
자바 메소드, 함수  (0) 2022.04.06
2일차 _ 이클립스 다운방법  (0) 2022.03.29
1일차 _ 자바(java) 설치방법  (0) 2022.03.28

1. 이클립스 다운

 

어제 홈페이지에서 파일 zip파일이다. 

압축을 해제한다. 경로는 어제 만든 javastudy 에.

 

 

이렇게 생성되고

 

.

eclipse.exe 파일을 클릭한다. 

 

경로는 우리가 만든 workspace에 하고, Lanch를 누른다. 

이 화면이 뜨고 기다리면 아래와 같이 뜬다.

 

welcom 왼쪽 버튼을 누른다.

Create a java project 클릭

바로 finish

 

 

src 오른쪽 new -> class

Name에 클래스 명을 쓰고

public static void main(String[] args) 체크한다.

 

 

main에 치고, 이렇게 치고 실행한다. 

실행 단축키는 alt + shift + x 를 누른 후에 j를 누른다. 

alt + shift + x 를 누르면 하단에 아래와 같이 뜬다. 

그런후에 j를 누르면 실행된다.

 

 

 

 

특정라인 움직임 

alt + 방향기

 

전체 들여쓰기 관리

ctrl+a 누른 후 ctrl + i 

 

여러줄 주석 

주석할 부분 드래그 후 Ctrl + Shift + / 

주석 해제 Ctrl + Shift + \

 

 

 

버전이 다를때

클래스 마우스 오른쪽 Properties 클릭

Java Build Path - Libraries ->JRE System Library[jre] 클릭 후 오른쪽에 edit 누르면 창이뜸.

Alternate JRE : jre로 변경후 Finish

그리고 컴파일러 확인하기 위해서 

Java Compiler에서 1.8인지 확인한다.

 

 


식별자 이름 규칙

 

클래스(main함수이름)는 대문자로 시작

메소드(함수)는 소문자로 시작

 

 


 

 

해당 파일에서 cmd 여는 방법

shift + 오른쪽 -> 여기에 PowerShell 창 열기

 

명령어 치기. 그러면 아래사진처럼 폴더에 다양하게 무언가 나타남.

'풀스택 > java' 카테고리의 다른 글

자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14
자바 _ 상속관련 내용  (0) 2022.04.11
자바 메소드, 함수  (0) 2022.04.06
7일차_조건, 반복문 예제  (0) 2022.04.04
1일차 _ 자바(java) 설치방법  (0) 2022.03.28

+ Recent posts