2019. 3. 13. 19:37ㆍJAVA
-----------------------return---------------------------------
return을 만나면 지금 실행되는 메소드를 종료하는것과
값을 반환하는 기능을한다.
즉 빠른 종료이다.
---------예시-------------------------------
public void login(int memberNo, int password){
// members배열에서 for문을 사용해서 Member를 하나씩 가져온다.
// memberNo와 Member객체의 번호가 일치하는 사용자가 있으면
// 그 사용자(Member객체)의 가입시 비밀번호와 전달받은 비밀번호를 비교한다.
// 비밀번호가 일치하면 그 사용자정보(Member객체) 를 session에 담는다.
Member foundMember = null;
for(Member member : members){
if(member != null && member.getNo() == memberNo){
foundMember = member;
break;
}
}
// 메소드의 빠른 종료
// 올바르지 않은 경우를 먼저 검사해서 그 경우에 해당되면 메소드의 실행이 즉시 중단되개 하는것
// 고객정보가 존재하지 않으면 즉시 실행 중단
if (foundMember == null) {
System.out.println("고객번호와 일치하는 고객이 존재하지않습니다. \n");
return;
}
// 비밀번호가 일치하지 않으면 즉시 실행 중단
if (foundMember.getPassword() != password) {
System.out.println("비밀번호가 일치하지 않습니다.\n");
return;
}
// 올바르지 않을 경우를 전부 통과한 경우
// 로그인처리 작업을 수행한다.
session = foundMember;
System.out.println("로그인이 완료되었습니다.");
System.out.println("["+foundMember.getName()+"]님 환영합니다.\n");
-------------------------익명 객체-----------------------------
익명객체
- 객체 생성할 수 없는 인터페이스/추상클래스를 가지고 객체 생성시점에
추상화된 메소드를 즉석에서 구현해서 객체를 생성한것
- 별도의 구형클래스 정의없이 객체 생성이 가능하다.
예시 1)---------------------------------------
public interface Pen{
void draw();
}
예시 2)---------------------------------------
public class PenApp{
public static void main(String[] args){
Pen redPen = new Pen() {
public void draw() {
System.out.println("빨갛게 그리기");
}
};
redPen.draw();
Pen bluePen = new Pen(){
public void draw() {
System.out.println("파랗게 그리기");
}
};
bluePen.draw();
}
}
실행결과)-----------------------------------------
---------- 실행 ----------
빨갛게 그리기
파랗게 그리기
출력 완료 (0초 경과) - 정상 종료
====================================================
예시 1-1)---------------------------------------------------
public class PhotoShop{
// Pen 인터페이스를 구현한객체를 전갈받아서 선을 그리는 메소드
public void drawLine(Pen pen){
pen.draw();
System.out.println("선을 그립니다.");
}
}
예시 1-2)---------------------------------------------------
public class PhotoShopApp {
public static void main(String[] args){
PhotoShop ppoShop = new PhotoShop();
Pen redPen = new Pen(){
public void draw(){
System.out.println("빨갛게....");
}
};
ppoShop.drawLine(redPen);
ppoShop.drawLine(new Pen(){
public void draw(){
System.out.println("파랗게");
}
});
// 람다식 자바8에 추가된 기능
ppoShop.drawLine(() -> System.out.println("노랗게"));
}
}
실행결과)----------------------------------------
---------- 실행 ----------
빨갛게....
선을 그립니다.
파랗게
선을 그립니다.
노랗게
선을 그립니다.
출력 완료 (0초 경과) - 정상 종료
///인터페이스 앞에는 public abstract 가 기본적으로 붙어있는것이다.
==========================================================
예시1)---------------------------------------------------------
public interface Mouse{
void click();
void dbClick();
void wheel();
}
예시2)----------------------------------------------------------
public abstract class MouseAdapter implements Mouse{ // abstract 를 쓴건 안써도 되지만 아무 내용이 없는것이라 누군가 객체생성해서 만들까봐 만든것임.
public void click(){
}
public void dbClick(){
}
public void wheel(){
}
}
예시3)-----------------------------------------------------------
public class MouseApp {
public static void main(String[] args){
Mouse m1 = new Mouse(){
public void click(){
System.out.println("공격포인트를 클릭한다");
}
public void dbClick(){
}
public void wheel(){
}
};
// 어댑트 패턴이라고한다.
Mouse m2 = new MouseAdapter(){
public void click(){
System.out.println("공격포인트를 클릭한다");
}
};
}
}
---------------------------------------이클립스-------------------------
/** - 주석
javadocs - API문서 만드는 파일
api 오른쪽 단추 -> Export -> javadoc ->next -> javadoc command에 C:\Program Files\Java\jdk1.8.0_201\bin\javadoc.exe -> next -> VM option에 -locale ko_KR -encoding UTF-8 -charset UTF-8 -docencoding UTF-8 -> next -> yes all
-> 그럼 자바파일에서 doc폴더생기고 index보면 생김
Alt + Shift + r = 클래스명 변경
Alt + Shift + s -> r = getter setter단축키
Alt + Shift + s -> o = 생성자에 모두 입력받을수있는것
Alt + Shift + s -> s = toString 재정의
Alt + Shift + j = 큰주석
Alt + / = 작은주석
------------------------------------Object--------------------------------
Object란
자바의 최상위 부모 클래스이다.
즉 대부분의 객체는 Object를 상속받는다.
void copy(Object o){
}
라 지정하면 이 메소드안에는 모든 객체를 넣을 수 있다.
테스트 참조 Contact c = new Contact();----------------------------
hashcode() = 객체마다 부여되는 일련번호로 정수값을 받아온다.
예 ) int has = c.hashCode();
System.out.println(hash);
--출력 --
366712642
toString() = 객체의 정보를 문자열로 제공하는 메소드
설계도의 이름 +"@"+해시코드값(16진수)
예 ) String info = c.toString();
System.out.println("객체의 정보 : "+info);
--출력 --
객체의 정보 : demo2.Contact@15db9742
(패키지명).(클래스이름)@(해시코드)
System.out.println(c);
System.out.println(c.toString());
------위의 두갑이 똑같이 나온다. c에는 원래 번지값이있으나 toString을 알아서 실행한다.
---출력---
demo2.Contact@15db9742
demo2.Contact@15db9742
equals() = 전달받은 다른 객체와 이 객체가 동일한 객체인지 여부를 반환한다.
예 ) Contact c = new Contact(10, "김유신", "010-1232-1232", "kimus@naver.com");
Contact cc = new Contact(20, "김공고", "010-2223-2223", "kkk@navet.dvo");
boolean res1 = c.equals(cc);
System.out.println(res1);
-----출력------
false
예)----------------------------
Conract c = new Contact();
cc = c;
System.out.println(c.equals(cc));
-----출력-------
true
이럴경우 물리적인 같은클라스만 같다고 나와서 논리적인 값이 같은때 true라하게 재정의를하는데
equals는 hashcode를 받고 비교해서 hashcode와 equals둘다 재정의해야한다.
@Override
public int hashCode() {
return no;
}
@Override
public boolean equals(Object obj) {
if(no == ((Contact)obj).no) {
return true;
}else {
return false;
}
}
이렇게 하기도 하는데
Alt + Shift + r -> h 에서 둘다 재정의 가능하다.
'JAVA' 카테고리의 다른 글
StringBuffer, StringBuilder, StringTokenizer, while, System, currentTimeMillis, getProperty, getenv, arraycopy, Arrays, Wrapper, 오토박싱, 오토언박싱, Random, Date (0) | 2019.03.15 |
---|---|
object, 마크업 메소드, String 메소드들, Integer.parseInt, Double.parseDouble (0) | 2019.03.14 |
중첩 클래스, 익명객체 (0) | 2019.03.12 |
final, final 클래스, final 메소드, 인터페이스 (0) | 2019.03.11 |
super(), super, 추상클래스, 추상메소드, 템플릿 클래스, 템플릿 패턴 (0) | 2019.03.08 |