본문 바로가기

JAVA/기본다지기

JAVA 5일차 필기

com.javalesson에

새로운 패키지 ch04loop 생성, 새로운 클래스 L01For.java 생성

package com.javalesson.ch04loop;

public class L01For {
    public static void main(String[] args) {
        char[] weeks ={'월','화','수','목','금','토','일'};
        //{'월','화','수','목','금','토','일'} -> 반복문과 삼항연산자 이용
       
        /* for()
         * int i=0; i<10; i++
         * i를 반복문의 조건으로 사용, 초기값은 0
         * i가 10보다 작을 때 까지 반복.
         * i는 {}의 로직이 끝나면 ++된다.
         * 반복문에서 한사이클은 {}이다.
         */
        for(int i=0;i<weeks.length;i++){
            String st = (i==0)?"{":"";
            String ed = (i==6)?"}":",";
            System.out.print(st+weeks[i]+ed);
        }
       
        //2x1=2  2x2=4  2x3=6 ...
        int dan = 2;
        for(int i=0;i<10;i++){
            System.out.println(dan+"x"+i+"="+dan*i);
        }
       
        //2단부터 9단까지 세로로
        for(int i=1;i<=9;i++){
            for(dan=2;dan<=9;dan++){
                System.out.print(dan+"x"+i+"="+i*dan+"\t");
            }
            System.out.println();
        }
       
        //*
        //**
        //***
        //****
        //*****  
        for(int i=4;i>=0;i--){
            for(int j=i;j<5;j++)
            {
                System.out.print("*");
            }
            System.out.println();
        }
        //    *
        //   **
        //  ***
        // ****
        //*****   
        for(int i=0;i<5;i++){
            for(int j=i+1;j<5;j++){
                System.out.print(" ");
            }
            for(int k=i+1;k>0;k--){
            System.out.print("*");
            }
            System.out.println();
        }
        //     *
        //   ***
        //  *****
        // *******
        //*********
        for(int i=0;i<5;i++){
            for(int j=i+1;j<5;j++){
                System.out.print(" ");
            }
            for(int k=2*i+1;k>0;k--){
            System.out.print("*");
            }
        System.out.println();

        }//1부터 100까지 정수중에서 3의 배수의 총합
        int sum=0;
        for(i=3;i<=100;i+=3){
            sum += i;
        }System.out.println(sum);       
    }//main end
}//class end


ch04loop 패키지에 새로운 클래스 L02While.java 생성

package com.javalesson.ch04loop;

import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;

public class L02While {
    public static void main(String[] args) {
        //검사식, 배열 출력
        //array([]) = ArrayList(collection framework)
        List list = new ArrayList();//다형성, 설계도, 인터페이스
        //new ArrayList() 객체를 데이터타입이 ArrayList가 아닌 List에 담을 수 있는 이유 아래에서
        list.add("월요일");
        list.add("화요일");
        list.add("수요일");
        list.add('목');
        list.add(5);
        list.add(6.0);
        list.add("일요일");
        //datatype에 제한이 없다. -> Object 타입을 기본으로 하고 있어서.
        Object[] a = {"월요일",'화',3,4.0,"금요일"};
        //list는 길이에 제한이 없다. 때문에 길이가 아니라 size라 부른다.
        System.out.println(list.size());
        System.out.println(a.length);
       
        for(int i=0; i<list.size(); i++){
            System.out.print(list.get(i)+",");//a[i]
        }
        System.out.println();
        Iterator it = list.iterator();
        while(it.hasNext()){
            System.out.print(it.next()+",");
        }
        System.out.println();
        /* Iterator : collection framework에서 collection에 저장되어 있는
         * 요소들을 읽어오는 방법을 표준화 한 방법 중의 하나이다.
         * boolean hasNext() : Iteration이 다음 값을 가지고 있다면 true를 return한다.
         * Object next() : Iteration의 다음 elements를 return한다.
         */


        //while문으로 별찍기
        int i=0,cnt=0;
       

        while(cnt<=4){
            i=0;
             while(i<=cnt){
                System.out.print("*");
                i++;
                }
            System.out.println();
            cnt++;
        }
       
        cnt =0;
        while(cnt<=4){
            i=0;
            while(i<=4-cnt){
                System.out.print("*");
                i++;
                 }
            System.out.println();
            cnt++;
        }
       
        cnt =0;
        while(cnt<=4){
            i=0;
            while(i<=3-cnt){
                System.out.print(" ");
                i++;
            }
            i=0;
            while(i<=cnt){
                System.out.print("*");
                i++;
            }
            System.out.println();
            cnt++;
        }


        cnt =0;
       
        while(cnt<=4){
            i=0;
            while(i<=3-cnt){
                System.out.print(" ");
                i++;
            }
            i=0;
            while(i<=(2*cnt)){
                System.out.print("*");
                i++;
            }
            System.out.println();
            cnt++;
        }
    }//main end
}//class end


 위 그림에서와 같이 ArrayList 클래스는 List(Interface)를 Implements로 상속하고 있기 때문에 ArrayList() 객체를 부모 클래스인 List에도 담을 수 있다.


 또한 →(implements) 의 경우에는 여러 갈래로 뻗어나가고 있지만(다중 상속이 가능하다) →(extends)의 경우에는 하나만 상속할 수 있다.


다형성(Polymorphism)

 대말은 단형성(monomorphism)으로 단형성 프로그램 언어에서는 각각 한 가지 의미로 식별되는 이름과 결합되어 있어, 다른 동작을 구현하기 위해서는 서로 다른 이름을 써야 하지만, 자바는 다형성(polymorphism)을 가지고 있어서 같은 메소드 이름을 이용해서 여러가지 기능을 구현할 수 있다.

오버로딩(Overloading)

 부모와 자식 클래스가 서로 상속관계에 있으며 동일한 이름의 메소드를 가지고 있는 경우에, 같은 메소드라도 ( )안에 들어가는 매개변수의 값을 변화시켜 다른 기능을 구현할 수 있는 기능.

오버라이딩(Overriding)

 부모 클래스 또는 인터페이스를 상속받아 자식 클래스에서 동일한 이름의 메소드를 부모 클래스에서 가지고 있던 기능과 관계없이 재정의하여 사용할 수 있는 기능. 하나의 코드(클래스(설계도), 인터페이스)를 가지고 여러 객체를 처리할 수 있다.


상속(Inheritance) : 부모 클래스(superclass)가 가지고 있는 기능이나 형태를 자식 클래스에서 물려받아 사용하는 것.


추상(abstract)클래스 : 반드시 하나 이상의 추상 메소드(기능은 없고 형태만 있는 메소드)를 가지며, 사용하기 위해서 반드시 모든 추상메소드를 구현해야 한다. 바디(body:{ })를 가질 수 없다.


인터페이스(Interface) 클래스 : 오로지 추상메소드로만 구성되어있고, 메소드의 선언만 가능하다. 인터페이스의 메소드는 표준화된 공통 기능을 가진다. 사용하기 위해서 반드시 모든 추상메소드를 구현해야 한다.


상속의 2가지 형태 extends와 Implements의 차이

class A extends B = A클래스가 B라는 클래스를 상속받아서 A의 기능에 B의 기능을 추가하겠다.

class A implements C = A클래스가 C라는 인터페이스 클래스의 형태를 이용하여 기능을 구현하겠다.

extends

 일반 클래스와 abstract 클래스 상속에 사용.

부모 클래스에 구현되어 있는 모든 기능을 자식 클래스에서 바로 사용할 수 있다. 추상메소드가 있다면 구현해야한다.

Implements

 interface 클래스 상속에 사용.

부모 클래스에서 상속은 받지만 정해진 뼈대만 상속을 받을 뿐 구체적인 기능은 직접 구현해야 한다.

'JAVA > 기본다지기' 카테고리의 다른 글

JAVA 7일차 필기  (0) 2016.08.09
JAVA 6일차 필기  (0) 2016.08.08
JAVA 4일차 심화  (0) 2016.08.04
JAVA 4일차 필기  (0) 2016.08.04
JAVA 3일차 필기  (0) 2016.08.03