2016.08.08 Mon. 여섯번째 수업
오늘은 내용이 살짝 어려워서 글을 두 번에 나눠서 올립니다.
오늘의 수업 내용
- Method (Stack & Heap 영역)
- Parameter (매개변수를 이용해서 성적 출력하기)
- Multi Parameter (멀티 매개변수를 이용해서 성적 출력하기)
package com.javalesson.ch05method;
public class L01Method {
L01Method(){
System.out.println("L01Method 호출");
}
void heap(){}
public static void stackMethod(){
System.out.println("stackMethod 호출");
//일반 메소드는 thread가 실행될때 heap 영역에 메모리를 가진다.
//heap(); //heap()에 오류가 뜨는 이유는 참조할 메모리 위치가 없기 때문이다.
L01Method m = new L01Method();
//new연산자로 heap메모리에 L01Method()객체를 생성하여 메모리에 할당-> 변수 m이 위치를 참조
m.heap(); //객체 m이 가지고 있는 자원 heap()을 설계
}
public void heapMethod(){
System.out.println("heapMethod 호출");
stackMethod();
this.heap();//this는 해당 클래스 내부의 static이 아닌 것 접근
//L01Method.heap();//class명으로 접근하는 것은 static만 접근
//heap()을 사용할 수 있는 이유
//heapMethod()가 메모리에 할당되는 시점은 new 연산자로 heap 메모리에 생성할 때 이다.
//new연산자로 생성된 객체 내부에는 heapMethod()와heap() 모두 존재 한다.
//때문에 this(객체내부 접근) 접근자로 this.heap()을 접근할 수 있다.
L01Method.stackMethod();
//stackMethod()는 static으로 선언된 메소드로 JVM이 class파일을 실행 준비할때 stack메모리에 할당한다.
//stackMethod()는 이미 메모리에 할당돼서 참조할 위치가 있다.
//그래서 class명.method();으로 접근 가능
}
//public을 입력하면 다른 Package에서 접근이 가능하고, 없으면 동Package에서만 접근 가능
public static void main(String[] args) {
//heapMethod(),stackMethod()를 호출해 보시오.
//heap메모리를 참조하는 메소드는 new 연산자로 객체를 생성후 호출
//stack메모리를 참조하는 메소드는 바로 호출가능
//stack메모리에 있는 static함수
L01Method.stackMethod(); //다른 클래스 메소드 접근시 사용
stackMethod();//클래스 내부이기에 가능
L01Method m = new L01Method();//생성자 호출
//new 연산자로 생성된 객체는 heap 메모리에 저장
m.heapMethod();
//m.stackMethod();//호출은 가능하지만 권장하지 않는다.
}//main end
}//class end
2. Parameter (매개변수를 이용해서 성적 출력하기)
메소드를 호출 하는 것을 다시 한번 살펴보자!
package com.javalesson.ch05method;
public class L02Parameter {
public void paramDemo(int score, String param_name){
//int score = 88;
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;
}
char plus ='0';
//(조건식)?true:false;
plus =((((score+5)/10-score/10)==1)||score==100)?'+':'0';
//조건을 더해서 100점일때 A+가 되도록 해라.
System.out.println(param_name+"학생의 성적은 "+grade+plus+"입니다.");
}//성적 프로그램
public static void main(String[] args) {//args Parameter -> 매개변수
int score=100;
String name = "김장수";
//학생성적을 출력하자.
//paramDemo() 매개변수를 준다.
new L02Parameter().paramDemo(score,name);
}//main end
}//class end
3. Multi Parameter (멀티 매개변수를 이용해서 성적 출력하기)
다른 함수 2곳을 호출 할 때 어떻게 선언하는지 다시 한번 확인하기!
Boolean으로 판별할 때 return 넣는거 이해하기
다른 클래스 참조 하는 거 이해하기
package com.javalesson.ch05method;
import java.util.Scanner;
public class L03MultiParameter {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("아이디는: ");
String id = scan.nextLine();
System.out.println("비밀번호는: ");
int pw= scan.nextInt();
//LoginTest.loginDemo()를 호출해서 Login을 성공하시오.
loginTest l = new loginTest();
new loginTest().printLogin(l.loginDemo(id,pw));
}//main end
}//class end
class loginTest{
//public void loginDemo(String id, int pw){
//if( (id.equals("javalesson")) && (pw==1234) ){
// System.out.println("login 성공");
//}else{
// System.out.println("login 실패");
//}
public boolean loginDemo(String id, int pw){
boolean login=false;
if(id.equals("javalesson")&&pw==1234){
return true;
}else{
return false;
}
}//loginDemo end
public void printLogin(boolean login){
if(login==true){
System.out.println("login 성공");
}else{
System.out.println("login 실패");
}
}//printLogin end
}//class end
'IT story > Java' 카테고리의 다른 글
D+8 class(overload, Calculator 출력, scope) (0) | 2016.08.10 |
---|---|
D+7 Method(함수) main method 설명, Login창 만들기(multi parameter) (0) | 2016.08.09 |
D+6 Loop(반복문) While, Do While, Loop (0) | 2016.08.08 |
D+5 Loop(반복문) for (0) | 2016.08.06 |
D+4 제어문(if문 & switch문) (0) | 2016.08.04 |