Fundamental Notes/JAVA

java 실습

콩콩댕 2009. 1. 23. 22:50
반응형

ex>> Ex1.java

public class Ex1 {
    public static void main(String[] args) {
        System.out.println("go for it!");
    }
}


ex>> Ex2.java
public class Ex2 {
    public static void main(String[] args) {
        boolean var1; //지역변수 선언 boolean형
        //위의 var1변수에 대입할 수 있는 값은 true, false 다.
        //논리값. 다른 기본 유형에서 형 변환 불가. C/C++과 혼동하지 말기.  true나 false가 정수값인 1과 0으로 변환될 수 없음.


        var1 = true;

        //정수의 자료형은 byte < short < int < long 순으로 있다.
        // byte는 -128 ~ 127 까지만 쓸 수 있다.
        byte var2 = 127;
        short var3 = 10;
       
        //short var4 = 137;
        //short var4 = var2 + var3 ; // 자바에서는 32비트 이하의
        //자료형들이 연산을 하게 되면 자료형들 또한
        //연산이 되어 32비트 체제로 승격(Promotion)한다. (==>int 로)
        //승격(Promotion)으로 수정하면 다음과 같다.
        int var5= var2 + var3;

        //위의 내용을 다시 감등(demotion)으로 수정하면..
        short var6 = (short)(var2 + var3);


        float var7 = 3.4f; // 자바에서 소수점을 가지는 자원들은 기본이
        //double로 인식하므로 float형으로 지정할 때는 반드시 자원뒤에 알파벳 f
        //를 붙여야 한다.(대/소 구분없음)
      }
    }




ex>> Ex3.java
public class Ex3 {
    public static void main(String[] args) {
        //연산자
        // - 산술 : + , - , / , * , %(나머지 값 구하기)
        int var1 = 10;
        int var2 = 4;
        int var3 = var1%var2; // 결과값 2
        System.out.println("var3 = "+var3);  //자바에서 + 연산자는
        //산술 연산자이기도 하지만 피 연산자들 중
        //문자열이 있을 경우 나머지 피 연산자가 문자열로 변경된 후
        //문자열과 문자열을 "연결"하라는 "문자열 연결 연산자"가 된다.
       
        // - 대입 : = , += , -=, /= , *= , %=
        //int var4 = var1 + var2; //var2의 값의 변화가 없다.
        var2 += var1; //var2 = var2 + var1; //var2의 값에 var1의 값을 더하여 var2의 값이 변화를 가져왔다.
       
       
        // - 비교(조건) 왼쪽항이 기준이된다.
        // == : 같다.
        // >= : 크거나 같다.
        // <= : 작거나 같다.
        // != : 같지 않다.
        System.out.println("var1 >= var2 : "+(var1 >= var2));
        System.out.println("var1 != var2 : "+(var1 != var2));

        // - 증감 : ++, --
        ++var1; //var1의 값이 1 증가 11
        var1++; //var1의 값이 1 증가 (단독으로 쓰일때는 같은 결과) 12
        int var4 = ++var1 + var2++; //결과는 13 + 14 ==> 27
        // var4 = 27 , var2 = 15
        System.out.println("var4 = "+var4);
        System.out.println("var1 = "+var1);
        System.out.println("var2 = "+var2);

        // - 논리 : && (그리고), || (또는)
        boolean var5 = ++var1 > var2 && ++var2 > var1;
        // 변수값   true 14   > 15  &&  15 > 14 ; // && 연산자는 앞의 결과가 true 라야
        // 뒤의 연산자를 수행한다. 앞의 결과가 false이면 뒤의 연산자는 수행하지 않는다.
        System.out.println("var5 = "+var5);//
        System.out.println("var2 = "+var2); // 증감연산자를 수행하지 못했다.
        //이유는 &&연산자는 모든 조건이 true여야 true를 반환할 수 있다. 그런데 첫번째
        //조건에서 부터 false가 발생하여 &&연산자 뒤에 있는 두 번째 연산을 수행하지 못한 것이다.
        System.out.println("var1 = "+var1);//

        boolean var6 = ++var1 > var2 || ++var2 > var1 || var1-- != --var2;
        System.out.println("var6 = "+var6);  //true
        System.out.println("var2 = "+var2);  // 16
        System.out.println("var1 = "+var1);  // 15

    }

}





ex>> ForTest4.java
public class ForTest4 {
    public static void main(String[] args) {
        /*
         *  for문은 반복문이며 구성은 다음과 같다.
         *  구성)
         *      for( 초기식 ; 조건식 ; 증감식 )
         *          처리문;
         *
         * 초기식은 for문 처음에만 수행.
         *
         *  그럼 1부터 10까지 출력해보자!
         */
        for(int i=0; i<10; i++)     // i++은 ++i해도 무관(다른 연산자 없으므로)
            System.out.println("i : " + (i+1));
        //  System.out.println("i : " + i+1);
        //  이렇게하면 01 11  12 .... 출력된다.(연산자 우선순위)
        //  초기식 int i는 for문 안에서만 사용가능.(scope)
        //  즉, for문이 끝나면 메모리에서 소멸~
    }
}








ex>> ForTest5.java
public class ForTest5 {
    public static void main(String[] args) {
        /*
         *  1부터 20까지의 수들 중 3의 배수들만 출력하여라!
         */
        for(int i=1 ; i<=20 ; i++)
            if(i%3 == 0)
                System.out.println(i);
        for(int i=3 ; i<=20 ; i+=3)
            System.out.println(i);
    }
}





ex>> ForTest7.java
public class ForTest7 {
    public static void main(String[] args) {
        /*
         * 중첩 반복문
         * 1 2 3 4 5 6 7 8 9 10
         * 1 2 3 4 5 6 7 8 9 10
         * 1 2 3 4 5 6 7 8 9 10
         * 출력
         */
        for(int k=0 ; k<3 ; k++){
            for(int i=1 ; i<11 ; i++)
                System.out.print(i + " ");
            System.out.println();
        }
    }
}






ex>> ForTest8.java
public class ForTest8 {
    public static void main(String[] args) {
        /*
         * 구구단 찍어라!
         * 2*1  3*1  4*1 5*1 .....
         * 2*2  3*2 ...
         * 2*3 ...
         * ...
         */
        for(int i=1; i<10 ; i++){
            for(int j=2; j<10 ; j++){
                System.out.print(j + " * " + i + " = " + (j*i) + "\t");
            }
            System.out.println();
        }
    }

}










ex>> IfTest1.java
/* 제어문 */
// - 분기문 : if문
//          : switch문
// - 반목문 : for문
//          : while문
//          : do~while문
// - continue : 반복문에 많이 사용
// - break : 반복문에 많이 사용

/* if문 구성 */
// 1) if(조건)     * 조건의 결과는 반드시 boolean형이어야 한다.
//      처리문1;   //조건을 만족할때 수행
//      처리문2;   //무조건 수행
//                 //{ } 안에 넣어야 처리문1, 처리문2를 조건 만족시에만 수행
// 2) if(조건)
//      처리문1;   //조건을 만족시
//    else
//      처리문2;   //조건을 불만족시
// 3) if(조건1)
//      처리문2;   //조건1을 만족시
//    else if(조건2)
//      처리문2;   //조건1에 불만족하고 조건2에 만족시
//    else
//      처리문3;   //조건1과 조건2 모두를 불만족시

public class IfTest1 {
    public static void main(String[] args) {
        // a의 값이 95이상일 때 "A+"
        // a의 값이 90~94일 때 "A-"
        // a의 값이 85~89일 때 "B+"
        // 나머지는 "다시"
        int a = 100;

//        if(a >= 95  )
//            System.out.println("A+");
//        else if(a >= 90 && a <= 94)
//            System.out.println("A-");
//        else if(a >= 85 && a <= 89)
//            System.out.println("B+");
//        else
//            System.out.println("다시");
//        불필요한 비교

        if(a >= 95  )
            System.out.println("A+");
        else if(a >= 90)    //여기까지 왔다는 것은 a의 값이 95이상이 아니다.
            System.out.println("A-");
        else if(a >= 85)
            System.out.println("B+");
        else
            System.out.println("다시");
    }
}






ex>> SwitchTest2.java
public class SwitchTest2 {
    public static void main(String[] args) {
        /*
         * switch문은 if문과 비교 성질이 틀린다.
         * switch문 : 특정값으로 분기
         * if문 : 범위값으로 분기
         *
         * 왠만한건 if문으로 다 가능하지만,
         * switch문이 값과 값의 비교에서는
         * 가독성면에서나 코딩할 때
         * 더 좋을때가 있다.
         *
         *
         * 유니코드값은 정수화되어 사용된다(char형)
         * 아래의 조건값은 반드시 정수형(byte, short, int, char)
         * (32비트 이하만 가능하다)
         * switch(조건값){
         *      case 비교값1 :
         *          // 조건값과 비교값1이 일치할 경우
         *          // 수행하는 문장들;
         *      break;     ---> break 안 넣으면
         *                      비교값2가 일치할 경우 수행될 문장까지 수행된다.
         *                      (비교값2 비교 안하고~)
         *      case 비교값2 :
         *          // 조건값과 비교값2가 일치할 경우
         *          // 수행하는 문장들;
         *      break;
         *      default:
         *          // 조건값이 비교값1~비교값n까지 일치하는 것이
         *          // 없을 때 수행하는 문장들;
         * }
         */
       
        // 앞의 if문 예제를 switch문으로 하면~....걍 하지마ㅡㅡ;
        int a = 99;
        switch(a){
            case 100:
                System.out.println("A+");
                break;
            case 99:
                System.out.println("A+");
            default:
                System.out.println("글쎄다~");
        } // end of switch
    }
}








ex>> SwitchTest3.java
import java.util.Scanner;

public class SwitchTest3 {
    public static void main(String[] args) {
        // Scanner 객체를 이용하여 키보드로부터 값(int형)을 받는 방법
        // 현재 시스템의 모니터(콘솔창)에 출력하려면 System.out
        // 반대로 현재 시스템의 키보드를 의미하는 것은
        // 무조건 System.in

        Scanner scan = new Scanner(System.in);
        // 쉽게 Scanner는 자료형(단지 기본적인 자료형이 아니다.)
        // scan은 변수명이라고 생각하면 쉽다~
        int data = scan.nextInt();  // 키보드로부터 정수 받기

        // data의 값이 1~12중 하나라고 가정하자!
        // 1,3,5,7,8,10,12 일 경우는 "31일까지 입니다."
        // 2는 "29일까지 입니다."
        // 4,6,9,11일 경우는 "30일까지 입니다."
        // 위의 조건을 switch문을 이용하여 완성하세요.
        switch(data){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println("31일까지 입니다.");
                break;
            case 2:
                System.out.println("29일가지 입니다");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println("30일가지입니다.");
                break;
            default:
                System.out.println("잘못 입력하셨습니다.");
        }
    }
}







ex>> ContinueTest3 .java
public class ContinueTest3 {
    public static void main(String[] args){
        // continue문은 반복문에 쓰이며 다음 반복 회차로 인양하는 제어문이다.
        for(int i=1 ; i<=10 ; i++){
            if(i%3 == 0)
                continue;   //반복문을 탈출하지 않고 다음 회차로 넘어간다!
            System.out.println(i);
        } // end for
    }
}










ex>> WhileTest1.java
/*
 *   while(조건)      // 결과는 반드시 boolean 형인 조건식, 선비교 후처리
 *      처리문1;
 *   처리문2;
 *
 *      for문(초기,조건,증가 3가지)은 무한루프에 빠질 수 있는 가능성이 적다.(초보자일시)
 *      while문(조건 하나만)은 무한루프에 빠질 수 있다.
 */
public class WhileTest1 {
    public static void main(String[] args) {
        int a = 10;
        while(a < 20){
            System.out.println(a);
            a++;
        }
        System.out.println();
       
        int b = 10;
        while(b++ < 20) // 우선 비교연산자 부터 수행하여 b가 20보다 작다는 것을
            System.out.println(b);  // 먼저 확인한 후 b의 변수를 1 증가 시킨다.
        // 그러므로 출력할 때는 증가된 값을 출력하게 된다.
    }
}








ex>> DoWhileTest2.java
public class DoWhileTest2 {
    public static void main(String[] args){
        // dowhile문의 구성
        //  do{
        //      처리문;
        //  }while(조건식);     <- 마지막 세미콜론 잊지말자!!
        //
        // do-while문은 선 처리, 후 비교다
        // 그러므로 무조건 1번은 수행하게 되어 있다.

        int a = 10;
        do{
            System.out.println(a);
        }while(--a > 0);    // 비교연산자를 수해하기 전에 a의 값을 1 감소한다.
        // 그러므로 마지막에는 0을 출력하지 않게 된다.
    }
}









ex>> BreakTest4.java
public class BreakTest4 {
    public static void main(String[] args) {
        int a=0;
        while(++a <= 10){
            if(a%3 == 0)
                break; //가장 가까운 반복문 탈출!
            System.out.println(a);
        } //end while

        int i = 0;
        while(++i < 4){ //3번 반복
            for(int k=65 ; k<80 ; k++){
                //대문자 i의 코드 값은 화면에 출력하지 않게 하기 위해
                //continue문을 사용해 보자!
                if(k == 'I')    //정수와 문자비교, 'I'의 아스키값 구할 필요없다.
                    continue;
                    //break;    //continue와 break의 비교?????
                                //다중 반복문에서 가장 근접한 하나의 반복문만 빠져나갈수 있다. 그래서 레이블을 사용. BreakLabelTest5.java 보자.
                if(k%5 == 0)
                    System.out.println();   //줄 바꿈
                else
                    System.out.printf("%3s",(char)k);
                    // %3s : 3자리 표현 ->두칸공백, 한칸문자~
            }
            System.out.println("---------------------------");
        }
    }
}






ex>> BreakLabelTest5.java
public class BreakLabelTest5 {
    public static void main(String[] args) {
        int i = 0;
       
        bk:while(++i < 4){  //label은 반복문의 바로 앞에만 사용가능~!
            for(int k=1 ; k<=5 ; k++){
                if(k == 3)      // k가 3이면 모든 반복문을 빠져나가자!
                    break bk;
                System.out.printf("%3d", k);
            }
            System.out.println();
        }

        // 반복문 안에 switch~case문을 같이 사용할 때 label 사용하면 된다.
        // 그냥 쓰면 switch~case문만 빠져나가기 때문이다.
        // 다음 BreakLabelTest6.java 예제 보자~
    }
}




ex>> BreakLabelTest6.java
import java.util.Scanner;

public class BreakLabelTest6 {
    public static void main(String[] args) {
        hb:while(true){    //무한 루프
            System.out.println("입력 : ");
            Scanner scan = new Scanner(System.in);
            String msg = scan.nextLine();       //키보드로부터 한줄 받기 - 100, 200, 300
            int var = Integer.parseInt(msg);   //숫자를 입력했다고 가정 : 문자열->숫자
            switch(var){
                case 100:
                    System.out.println("100을 입력하셨군요");
                    for(int i=0 ; i<var ; i++)
                        System.out.printf("%3d", i);
                    break;
                case 300:
                    System.out.println("300을 입력하셨습니다. 종료");
               //     break;  // 반복문을 탈출하는 것이 아니라 switch문을 탈출하는 문장!
                    break hb;   //hb라는 별칭(Label)이 붙은 반복문을 탈출!
                case 200:
                    System.out.println("200");
            } // end switch
        } // end while
    }
}






ex>> Computer.java
/*
 * 클래스를 만드는 행위는 프로그래머의 사고를
 * 추상적으로 코드화 하는 것이다.
 *
 * 우리가 필요한 것은 컴퓨터다.
 *
 * 모델명
 * 제조자
 * cpu
 * 메인보드
 * 메모리 용량
 * HDD 용량
 * DVD 존재 여부
 * VGA
 */

class Computer{
    // 멤버 변수들 선언
    String model;
    String vender;
    String cpu;
    String mainboard;
    int memory;
    int hdd;
    boolean dvd;
    String vga;

    // setter getter 만드는 팁!!
    // 커서를 멤버 영역에 두고
    // art+insert 또는 마우스 오른쪽버튼 insert Code 선택
    // 만들 메서드 선택하면 된다.

    // 기능을 의미하는 메서드들 정의
    // 특정한 값을 받아서 model 변수에 대입하는 기능(메서드)
    public void setModel(String model){
        this.model = model;
    }

    // model의 값을 반환하는 기능(메서드)
    public String getModel(){
        return model;
    }

    public String getCpu() {
        return cpu;
    }

    public void setCpu(String cpu) {
        this.cpu = cpu;
    }

    public boolean isDvd() {
        return dvd;
    }

    public void setDvd(boolean dvd) {
        this.dvd = dvd;
    }

    public int getHdd() {
        return hdd;
    }

    public void setHdd(int hdd) {
        this.hdd = hdd;
    }

    public String getMainboard() {
        return mainboard;
    }

    public void setMainboard(String mainboard) {
        this.mainboard = mainboard;
    }

    public int getMemory() {
        return memory;
    }

    public void setMemory(int memory) {
        this.memory = memory;
    }

    public String getVender() {
        return vender;
    }

    public void setVender(String vender) {
        this.vender = vender;
    }

    public String getVga() {
        return vga;
    }

    public void setVga(String vga) {
        this.vga = vga;
    }
}




ex>> ComputerTest.java
public class CompuerTest {
    public static void main(String[] args) {
        // Computer 객체 생성
        Computer c1 = new Computer();
        c1.setModel("똥컴");  // c1의 setModel 메서드 호출하면서 "똥컴" 문자열 전달
        System.out.println(c1.getModel());
        //String str = c1.getModel();   //c1객체를 통하여 getModel메서드 호출하면
        //System.out.println(str);     //String객체를 받는다. 그것을 출력하여 확인!

        Computer c2 = new Computer();   //c1과는 다른 객체가 생성되었다.
        String str2 = c2.getModel();
        System.out.println(str2);       // null

    }

나는야 자바 초보자 콩콩댕~ 투투가 짱임~



 

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

Java에서 double형 연산 오류  (0) 2012.09.27
[JAVA] 09. 04. 01 - MVC 스윙 모델  (0) 2009.04.01
자바 초보자가 자주 범하는 실수들  (0) 2009.01.23
Java Applet?  (0) 2009.01.23
Formatted Output  (0) 2009.01.23