method 호출 원리는 변함이 없다 | Return data type 과 method 호출은 관련이 없다!
1 - ① - ⑶하나의 패키지 내 하나의 클래스에서 리턴 있고 입력 없는메서드 선언 및 호출
<<실행순서 서술하기>>
① a 메서드 호출 ② a 메서드 실행 "01 a 메서드 실행" 문자열을 콘솔창에 실행 ③ return 값 "1루타" 를 메서드 호출한 곳으로 리턴 ④ String data type으로 result 변수 선언 "1루타" 문자열을 result 변수에 대입 ⑤ result 변수에 담겨있는 "1루타" 문자열을 포함하여 콘솔창에 출력
리턴값은 하나인데 조건에 따라서 리턴값이 바뀔 수 있다.
현재는 리턴값 하나가 리턴된다. 여러개 리턴은 나중에 가능할 것!
1 - ① - ⑷ 하나의 패키지 내 하나의 클래스에서 리턴 있고 입력 있는 메서드 선언 및 호출
입력된 id와 dbid가 같고 입력된 pw와 dbpw가 같으므로 log 변수에 담긴 값은 1
② return 값 log 변수에 담겨있는 값 1을 메서드를 호출한 곳으로 리턴
③ int data type 으로 result 변수를 선언하고 정수 1을 result 변수에 대입
④ logre 메서드를 호출, 실행
result 변수에 담겨있는 값은 정수 1 > log 변수에 입력.
log 변수에 담긴 값이 1이라면 " 로그인 성공! 환영합니다. 입력된 atype, aname의 집사님" 문자열을 출력하고 atype이 강아지 문자열일 경우 log 변수에 담긴 값 1 고양이 문자열일 경우 log 변수에 담긴 값 2 강아지 또는 고양이 문자열이 아닐 경우 log 변수에 담긴 값 3
log 변수에 담긴 값이 2라면 "PW를 확인하세요." 문자열 출력 log 변수에 담긴 값이 3이라면 "등록되지 않은 ID 입니다." 문자열 출력
log 변수에 입력된 값이 1이고 atype에 입력된 값이 고슴도치 문자열이기 때문에 log 변수에 담겨있는 값은 정수 3
⑤ return 값 log 변수에 담겨있는 값 3을 메서드를 호출한 곳으로 리턴 int data type으로 result2를 선언하고 정수 3을 result2 변수에 대입한다.
⑥ typsort 메소드를 호출, 실행
result2 변수에 담겨있는 값은 정수 3 > log 변수에 입력.
log 변수에 담긴 값이 1이라면 강아지 나이 : aage 살 문자열 출력. 입력받은 aage의 나이가 1보다 작거나 같으면 log 변수에 담긴 값 11 2보다 크거나 같고 4보다 작거나 같으면 log 변수에 담긴 값 12 5보다 크거나 같고 10보다 작거나 같으면 log 변수에 담긴 값 13 그 외는 log 변수에 담긴 값 14
log 변수에 담긴 값이 2라면 고양이 나이 : aage 살 문자열 출력. 입력받은 aage의 나이가 1보다 작거나 같으면 log 변수에 담긴 값 21 2보다 크거나 같고 4보다 작거나 같으면 log 변수에 담긴 값 22 5보다 크거나 같고 10보다 작거나 같으면 log 변수에 담긴 값 23 그 외는 log 변수에 담긴 값 24
log 변수에 담긴 값이 3이라면 기타 동물 등록은 고객 센터에 문의 바랍니다. 문자열 출력
log 변수에 담긴 값이 3이기 때문에 기타 동물 등록은 고객 센터에 문의 바랍니다. 문자열을 출력한다.
package Dog.and.Cat;
public class Login {
public static void main(String[] args) {
int result = uInsert ("id002", "pw002");
logre (result, "윤깨물", "고슴도치");
typsort(result, 21);
agegroup (result);
}
public static void agegroup (int log) {..
public static int typsort(int log, int aage) {..
public static int logre (int log, String aname, String atype) {..
public static int uInsert (String id, String pw) {..
}
오류내용
문법상의 오류는 없었지만 의도와 다른 내용이 출력되었다.
고슴도치이기 때문에 이 내용이 출력되어야 한다.
오류 수정
메서드 호출부분에서 result 값을 계속 같은 result 값으로 받았기 때문에 발생한 오류였다! 새로운 변수 result2를 int data type 으로 지정해주고 result2 다음 메서드에서 새로운 result2의 값을 받았더니 원하는 내용이 출력되었다.
- 객체를 참조하는 형태 type - String class : 참조형에 속하지만 기본형처럼 사용. 불변객체. 기본형 비교는 == / String 객체간 비교는 .equals() 메소드 사용 - Wrapper class : 기본형을 클래스로 감싼 형태 기본형에 null을 넣고싶다면 래퍼클래스를 활용. ex 기본형 대응 래퍼 클래스 byte Byte short Short int Int long Long float Float double Double char Char boolean Boolean * 참고 : void 의 래퍼 클래스 Void 도 존재
* 인터페이스
interface MyInterface {
void add(T value);
}
인터페이스를 만드는 것은 새로운 참조 자료형을 만드는 것과 같다. 자료형이기 때문에 자신을 구현한 객체의 주소를 가질 수 있다. (인터페이스에 정의된 메소드만 사용 가능)
* 배열형
public class ArrayType {
public static void main(String[] args) {
int [] i = new int[2];
Long [] l = new Long[2];
Object[][] o = null;
}
}
기본형으로도 만들 수 있고 참조형으로도 만들 수 있다.
자료형에 대해 []를 선언함으로 배열을 지정. (배열형 변수 또안 배열의 주소를 가지고 있기 때문에 클래스형의 특징과 일치) 같은 객체의 주소를 바라보게 만들면 동일한 배열을 가리킨다.
4) method name : uInsert 5) 매개변수 data type / name - 첫번째 매개변수 data type:String *첫번째 매개변수 name : name - 두번째 매개변수 data type: int *두번째 매개변수 name : age - 세번째 매개변수 data type:char *세번째 매개변수 name : gender 로 메서드가 선언 되었다. *********메서드 호출 원리 (가장 중요!)********* 1) 메서드name 일치 2) 매개변수 개수와 입력 개수 일치 3) 매개변수 data type에 일치하는 값이 각각의 매개변수에 입력되어야 메서드가 호출
* 조건의 false/true를 확인하는 방법
method body 내에 조건식만 출력해보기
<<조건식>>
예제1-1) int/ if, else if
예제 1-2) int/if, else
예제 3) String/ if 안의 if, else
예제4) char/ if, else if, else
*Method Overloading
하나의 클래스에서 동일한 이름의 메서드를 입력받는 데이터의 개수와 data type을 다르게 프로그래밍 할 수 있는 방법.