본문 바로가기

JAVA/기본다지기

JAVA 4일차 필기

this 접근자


this.name = name ->( . )에 주목해야한다.

(this 접근자로 name에 접근하여 name을 넣었다. 는 의미)

this 접근자는 클래스 내부에서만 사용할 수 있다.

this는 클래스 내부의 모든 자원에 접근 할 수 있지만 main()은 접근하지 않는 것이 좋다.(무한루프 등 에러의 원인이 될 수 있음)

this는 static 영역에서 사용 할 수 없다.(객체를 생성해서 객체로 접근해야 한다.)


( . ) = 앞에 명시한 클래스 내부에 있는 모든 자원(클래스에 맞닿아 있는 것들(변수와 함수 등))에 접근 할 수 있다. 객체지향 언어에서 ( . )은 매우 중요한 개념이다.

       

※ 패키지 에서의 ( . )은 경로


main()은 JVM의 자원.


매개변수 = 생성자의 자원

전역변수 = 클래스의 자원


L08Array array = new L08Array("월");


System.out.println(array.name)

System.out.println(new Array("월").name)

                        instance 객체

두 문장은 같다.


하지만 위 문장의 경우에는 한번 생성해 놓은 변수에 접근만 하면 되지만, 아래 문장의 경우에는 또 변수를 생성하기 때문에 효율적이지 못하다.


클래스는 단순한 설계도, 호출해야만 객체가 된다.


com.javalesson 밑에

새로운 패키지 ch03control 생성, 그 밑에 L01If.java 클래스 생성

package com.javalesson.ch03control;

public class L01If {
    public static void main(String[] args) {
        /* if - 조건문
         * if()<- 참과 거짓 boolean을 이용해 조건문을 만든다.
         * 보통 비교연산자를 많이 사용한다.
         * ==,<=,>=,<,>,!(not),!=,equals()
         * &&(and) ||(or)
         * A && B = A와 B의 교집합
         * A || B = A와 B의 합집합
         */
        boolean flag = 10>2;
        if(flag){
            System.out.println("()의 조건이 true");
        }
        if(!flag){
            System.out.println("()의 조건이 false");
        }
        //점수를 넣으면 성적이 나오는 성적 출력 시스템.
       
        int score = 90;
        String grade = "A+";
        if(score>=95){
            grade = "A+";
        }
        else if(score>=90){
            grade = "A";
        }
        else if(score>=85){
            grade = "B+";
        }
        else if(score>=80){
            grade = "B";
        }
        else if(score>=75){
            grade = "C+";
        }
        else if(score>=70){
            grade = "C";
        }
        else if(score>=65){
            grade = "D";
        }
        else{
            grade = "F";
        }
        System.out.println("학생의 성적은 "+grade+"입니다.");
       
        //유효문자를 검사하는 시스템 -> 영문자만 문자로 취급
        //(a~z or A~Z)의 문자를 검사한다.
        char x = 'Z';
       
        if((x>=65 && x<=90) || (x>=97 && x<=122)){ //ASCII Code로
        //if((x>='a' && x<='z') || (x>='A' && x<='Z')){ // 이렇게도 가능
            System.out.println(x+"는 유효문자입니다.");
        }else{
            System.out.println(x+"는 사용할 수 없습니다.");
        }
    }//main end
}//class end


ch03control 패키지에 새로운 클래스 L02Switch.java 생성

package com.javalesson.ch03control;

public class L02Switch {
    public static void main(String[] args) {
        /* Switch문은 동작속도가 if문보다 10배정도 빠르고
         * 조건에 대한 파악이 쉽다.(조건문이 쉽다)
         * ->if문이 조건식이 더 다양하다.
         * Switch문에 조건문으로 사용되는 key값은 기본데이터 타입만 가능(상수 수업때)
         */
        int state = 2;
        switch(state){
        case 1: System.out.println("시스템 동작"); break;
        case 2: System.out.println("시스템 대기"); break;
        case 3: System.out.println("시스템 정지"); break;
        default: System.out.println("시스템 오류"); break;
        }
        //break;를 사용하는 이유-> switch문이 빠른 것과 연관있음
        정해진 조건을 만족하고 break;가 되어 빠져나가면 그 아래에 있는 코드는 실행하지 않기 때문.
        int key = 10;
        String month = "";
        switch(key){
        case 1: month = "Jan"; break;
        case 2: month = "Feb"; break;
        case 3: month = "Mar"; break;
        case 4: month = "Apr"; break;
        case 5: month = "May"; break;
        case 6: month = "Jun"; break;
        case 7: month = "Jul"; break;
        case 8: month = "Aug"; break;
        case 9: month = "Sep"; break;
        case 10: month = "Oct"; break;
        case 11: month = "Nov"; break;
        case 12: month = "Dec"; break;
        default: month = "Invalid Month"; break;
        }
        System.out.println("오늘은 "+month+"입니다.");
       
        //A~F까지 내는 성적시스템 switch문으로 "+"가 없다. 90~ 80~ 70~
       
        int score = 100;
        char grade = 'A';
        switch(score/10){
        case 10: case 9: grade = 'A'; break;
        case 8: grade = 'B'; break;
        case 7: grade = 'C'; break;
        case 6: grade = 'D'; break;
        default: grade = 'F'; break;
        }
        System.out.println("학생의 성적은 "+grade+"입니다.");
    }//main end
}//class end


ch03control 패키지에 새로운 클래스 L03SwitchEx.java 생성

package com.javalesson.ch03control;

import java.util.Scanner;

public class L03SwitchEx {
    public static void main(String[] args) {
        int kor_score, eng_score, mat_score;
        String grade = "B";
        Scanner scan = new Scanner(System.in);
        System.out.print("국어점수를 입력하세요: ");
        kor_score = scan.nextInt();
        System.out.print("영어점수를 입력하세요: ");
        eng_score = scan.nextInt();
        System.out.print("수학점수를 입력하세요: ");
        mat_score = scan.nextInt();
        //switch 문으로 만든 성적 프로그램으로 3개 점수의 평균 점수와 학점을 출력하세요.
        //switch 문으로 '+' -> 95~ 85~
        char plus = ' ';
        int avg = (kor_score + eng_score + mat_score)/3;
        switch(avg/10){
        case 10: case 9: grade = "A"; break;
        case 8: grade = "B"; break;
        case 7: grade = "C"; break;
        case 6: grade = "D"; break;
        default: grade = "F"; break;
        }
        plus = (((avg+5)/10-avg/10)==1)?'+':' ';//삼항연산 임의의 boolean 식 ? true일때 출력 : false일때 출력;
        System.out.println("평균 점수는 "+ avg + "점 입니다.");
        System.out.println("평균 학점은 "+ grade + plus + "입니다.");
    }//main end
}//class end


값을 바꾸지 않고 출력만 하는


double d = 27.6666666666;
System.out.printf("%.2f",d);


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

JAVA 5일차 필기  (1) 2016.08.05
JAVA 4일차 심화  (0) 2016.08.04
JAVA 3일차 필기  (0) 2016.08.03
JAVA 2일차 필기  (1) 2016.08.02
JAVA 1일차 필기  (0) 2016.08.01