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 |