- primitive data type들을 객체로 사용 가능하게 해주는 class. - Wrapper class는 산술 연산을 위해 정의된 클래스가 아니므로, 인스턴스*에 저장된 값을 변경할 수 없다. - 값을 참조하기 위해 새로운 인스턴스를 생성하고, 생성된 인스턴스의 값만을 참조할 수 있다.
primitive data type 과 상응하는 wrapper class
primitive data type
wrapper class
byte
Byte
short
Short
int
Integer
long
Long
float
Float
double
Double
boolean
Boolean
char
Character
Boxing 과 Unboxing
- Boxing : 기본 타입의 데이터를 래퍼 클래스의 인스턴스로 변환하는 과정 - Unboxing : 래퍼 클래스의 인스턴스에 저장된 값을 다시 기본 타입의 데이터로 꺼내는 과정
* 인스턴스(Instance) : 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부른다.
회원관리클래스(설계도면!) >>>>통해서>>>> 새로운 객체 생성 > 새 주소 생성 > 데이타/메소드 영역 생김 > (id 영역에 id001값)데이터 세팅할 수 있다. -끝-
다시 주소를 찾아가 >> id 값 꺼내온다 .(getting)
package kr.or.ksmart.A;
public class User {
//*전역변수 (global variable) = 필드 (field) = 멤버 = 멤버필드
// - 클래스 블록 안쪽 메서드 블록 바깥쪽에 선언되어있는 변수
//프로퍼티 (property)
//변수의 영역 기준 (블록기준)
// - 중괄호 밖에 선언된 변수는 안쪽에서 사용 가능
// - 중괄호 안에 선언된 변수는 밖에서 사용 불가
//User class에서 값을 세팅/게팅하는 개념X
String uid;
String upw;
String uphone;
char ugender;
int uage;
String ulevel;
}
package kr.or.ksmart.A;
public class AA01 {
public static void main(String[] args) {
User u01 = new User();
}
}
User class data type으로 u01객체참조변수를 선언하고 User생성자메서드로 새로운 객체를 생성하고 생성된 객체의 주소값을 u01객체참조변수에 할당한다.
package kr.or.ksmart.A;
public class AA01 {
public static void main(String[] args) {
User u01 = new User();
System.out.println(u01 + "<- u01");
System.out.println(u01.uid + "<- u01.uid");
//u01객체참조변수에 할당된 주소(User class를 통해 생성된 객체)에 찾아가서
//data 영역 uid 전역변수에 담겨있는 값 null을 꺼내와서 (getting) 콘솔창에 출력한다.
u01.uid ="id001";
//u01객체참조변수에 할당된 주소(User class를 통해 생성된 객체)에 찾아가서
//data 영역 uid 전역변수에 id001 값을 세팅(입력)한다.
System.out.println(u01.uid + "<- u01.uid");
//u01객체참조변수에 할당된 주소(User class를 통해 생성된 객체)에 찾아가서
//data 영역 uid 전역변수에 담겨있는 값 id001을 꺼내와서 (getting) 콘솔창에 출력한다.
}
}
1 - ② - ⑵하나의 패키지내서로다른 클래스에서 리턴 없고 입력 있는메서드 선언 및 호출
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의 값을 받았더니 원하는 내용이 출력되었다.
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을 다르게 프로그래밍 할 수 있는 방법.