2016.08.09. Thu. 일곱번째 수업시간
오늘의 수업내용
면접시 자주 묻는 질문 유형
- 객체지향 언어 자바의 특징?
- interface와 abstract의 차이점?
- I.O 예외처리하는 이유?
- 생성자 constructor의 용도?
Method(함수)
- 접근지정자 public을 사용할 수 있다.
- static을 사용하면 Stack영역, 안쓰면 Heap영역
- return type을 지정
- 이름이 올때는 소문자가 앞에 오고, 뒤에 단어가 붙을 때 대문자를 사용
- 매개변수 입력
public static int printState (매개변수)
*static은 JVM 실행될 때 메모리 할당
*heap은 main에서 객체를 생성할 때 메모리 할당
*void = 반환값이 없다. (반환값의 dataType)
Main Method
1. maim method 특징
- main method를 가지는 Class ☞ Application, 객체
- main method가 없는 Class ☞ 객체
- main method가 있는 Class만 java라는 명령어를 실행할 수 있다.
- main method가 있는 Class만 JVM을 호출한다.
- JVM ☞ ; 단위로 코드를 실행한다. =>thread(실행단위)가 존재한다.
- main method는 thread를 가진다. (1thread)
2. main이 public(접근지정자: 외부 어디에서든 사용 가능)을 가지는 이유?
- main을 실행하는 곳은 외부이기 때문에
- main에서 실행하는 코드 자체가 반환하기 때문에 void 타입을 가진다.
- 반환 값을 받는 곳은 어플리케이션 내부인데, main 자체가 어플이기 때문에 반환값은 가질 수 없다.
- JVM이 stack영역에 있기 때문에
- static으로 선언되면 JVM이 실행될때 stack메모리에 값을 할당하기 때문에
- 실행할 코드를 stack에 가지고 있는 것이 동작이 빠르다.
- 마치 기본데이터 타입을 stack영역에 저장하는 것과 같다.
실습하기
ex) Scanner를 이용해서 ID와 PW를 입력하고 주어진 값과 같을경우 "로그인 성공", 다를경우 "로그인 실패"를 출력하자.
ID와 PW가 다를 경우 Do While문을 이용해서 다시 입력하게 한다.
다른 클래스의 메소드를 이용할 때 선언 하는 것의 유의한다.
package com.javalesson.ch05method;
import java.util.Scanner;
public class L03MultiParameter {
public static void main(String[] args) {
boolean login = false;
String id=""; int pw=0;
//밖에 선언하는 이유 1.재사용을 위해, 2.반복문안에서 매번 새롭게 선언되는 것을 방지
LoginTest loginT = new LoginTest();
do{
Scanner scan = new Scanner(System.in);
//스캐너가 do-while문 밖과 안의 차이
//while문 반복시 새로운 객체를 생성하면 비밀번호 입력시 남아 있던 enter가 새로운 객체에서는 존재하지 않는다.
try{//scan.nextInt()에 문자열을 입력하면 심각한 오류 발생->프로그램이 다운된다.
//이때 오류를 예외 처리하는 try catch를 이용하면 프로그램이 다운되지 않는다.
System.out.print("아이디는: ");
id = scan.nextLine();
System.out.print("비밀번호는: ");
pw= scan.nextInt();
loginT.loginDemo(id,pw);
}catch(Exception e){System.out.println(e.toString());}
}while(!loginT.login);
//LoginTest.loginDemo()를 호출해서 Login을 성공하시오.
//변수는 해당하는 대괄호 안에서만 존재한다.
loginT.printLogin();
}//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 실패");
//}
boolean login = false;
public void loginDemo(String paramId, int paramPw){
String id = "javalesson";
int pw = 1234;
if(id.equals(paramId)&&pw==paramPw){
login = true;
}else{
login = false;
}
}
public void printLogin(){
if(login==true){
System.out.println("login 성공");
}else{
System.out.println("login 실패");
}
}
}
'IT story > Java' 카테고리의 다른 글
D+9 Extends (상속) Animal예제, Frame예제. (0) | 2016.08.11 |
---|---|
D+8 class(overload, Calculator 출력, scope) (0) | 2016.08.10 |
D+6 Method(함수) Method, Parameter(매개변수), Multi Parameter (0) | 2016.08.08 |
D+6 Loop(반복문) While, Do While, Loop (0) | 2016.08.08 |
D+5 Loop(반복문) for (0) | 2016.08.06 |