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 |