728x90

 

해당 클래스의 상속관계를 알아야할 때

어떤 상속관계인지 몰라 공식API문서 찾기 어려울 때나

알더라도 여러 카테고리 거쳐 찾는 번거로움을 느낀다면?

해당 메소드가 반환을 어떻게 하는지 궁금하다면?

 

이클립스에서 알고자하는 코드에 마우스 포인터를 올리면 뜨는 노란 툴팁보면

아래로 내려가면

Overrides : 상속관계를 알려주는 부분

returns : 반환타입을 알려주는 부분

가 있다

Overrides : toString() 메소드가 최상위 클래스인 Object를 상속했다는 의미이다. 즉, 부노는 Object 자식은 toString()

returns : 객체의 대표값 문자열로 반환한다는 의미이다.

어떤건 int정수로 어떤건 boolean으로 true/false로 반환하니 잘체크하면 많은 도움이 된다

 

 

728x90
반응형
728x90

이클립스에 뜨는 많은 영어와 문자들

그냥 지나치기 쉬웠을텐데 알아두면 유용한 팁이다

API문서에서 하나하나 찾을 번거로움을 덜고 코딩 중에 바로바로 이클립스에서 타입 확인하는 방법이다

 

 

해당 코드에 마우스 포인터를 올려두면 뜨는 노란툴팁에서

볼드되어 뜨는 가장 첫줄에 반환타입과 제네릭설정 되어있다면 제네릭이 뭘로 제한되어있는지도 알려주고 

해당 메소드나 클래스의 상속관계,경로 등을 알려주니 필히 체크하자

 

 

 

728x90
반응형
728x90

@Override

public boolean equals(Object obj) 

@Override
	public boolean equals(Object obj) {
		// 객체 비교
		if (this == obj) { // this는 주소값 비교할려고 넣은 것
			return true;
		}
		if(obj == null) {
			return false;
		}
		if(getClass() != obj.getClass()) { // 내 클래스 정보와 상대방의 클래스 정보가 같은지 비교
			return false;
		}
		
		pModelVo02 other = (pModelVo02)obj; // 다운캐스팅 : obj->Snack
		if(name == null) {      // other는 레퍼런스 변수
			if(other.name != null) { 
				return false;
			}
		}else if(!name.equals(other.name)) { // 이름에 대한 비교
			return false;
		}
		
		if(weight != other.weight) { // 목록에 대한 비교
			return false;
		}
		return true;
	}

 

@Override

public int hashCode()

	@Override
	public int hashCode() {
		final int PRIME = 31; // 컴퓨터가 이해하기 좋은 숫자가 31이라함
		int result = 1;
		
		result = PRIME * result + (name == null ? 0 : name.hashCode()); // 내 해쉬코드가 아니라 스트링의 해쉬코드를 가져오는 것
		result = PRIME * result + weight; // 형이 안맞아서 에러나니 캐스팅 또는 소수점 없게끔 계산
		
		return result;
	}

 

@Override

public int compareTo(Object o)

	@Override
	public int compareTo(Object o) {
	    // Dog 이름 오름차순
		// Object o를 다운 캐스팅 해줘야함
		pModelVo02 otherP = (pModelVo02)o;
		
		String other = otherP.name;
		
		int result = name.compareTo(other); // compareTO 자체가 인트값 반환
		return 0;
	}

 

 

728x90
반응형
728x90

 

 

 

package controller;
import java.util.ArrayList;
import model.vo.pModelVo01;

public class pController01 {

	public void firstR() {
		
//		ArrayList list = new ArrayList();
		ArrayList<pModelVo01> list = new ArrayList<pModelVo01>(3); // 지네릭스 : 데이터타입 한정
		
		System.out.println(list); // 결과값 : []
								  // 리스트 자체가 대괄호 자동생성
		// 1. add(E e):boolean : 추가
		list.add(new pModelVo01("1번", 1));
		list.add(new pModelVo01("2번", 2));
		list.add(new pModelVo01("3번", 3));
		System.out.println(list);
		System.out.println("리스트 길이 : "+list.size());
//		list.add("hi",0);
		
		// 2. add(int index, E elemnet) : 자리 지정 추가
		list.add(0, new pModelVo01("0번",0));
		System.out.println(list);
		System.out.println("리스트 길이 : "+list.size());
		list.add(0, new pModelVo01("===",0));
		System.out.println(list);
		System.out.println(list.size());
		
		// 3.  remove(int index):E : 삭제
		list.remove(0);
		System.out.println(list);
		pModelVo01 a = list.remove(0); // .remove()의 삭제한 반환값  확인용 변수 
		System.out.println(a);
		System.out.println(list);
		System.out.println(list.size());
		
		
		//4 remove(Object o):boolean 
		
		pModelVo01 pm = new pModelVo01("1번",1);
		list.remove(pm);
		System.out.println(list); // 주소값이 다르기에 삭제 안한 것
		
		ArrayList<String> remve = new ArrayList<String>();
		remve.add("ㄱ");
		remve.add("ㄴ");
		remve.add("ㄷ");
		System.out.println(remve); // [ㄱ, ㄴ, ㄷ]
		System.out.println(remve.remove(new String("ㄷ")));
		System.out.println(remve); // [ㄱ, ㄴ]
		
		// set(int index, E e)
		// 해당 인덱스번호의 내용을 교체
		list.set(0, new pModelVo01("2번",2));
		list.set(2, new pModelVo01("2번",2));
		System.out.println(list); // [2번(2점), 2번(2점), 2번(2점)]
		
		// get(int index):E
		list.get(0);
		pModelVo01 tmp = list.get(0);
		System.out.println(tmp); // 2번(2점)
		
		System.out.println("==========================");
		// contains(Object) : boolean
		list.contains(new pModelVo01("2번",2));
		System.out.println(list);
		System.out.println(list.contains(new pModelVo01("2번",2)));
		System.out.println(remve.contains(new String("ㄴ")));
		
		// indexOf: int 
		// 해당 인덱스 번호 반환
		remve.add("ㄷ");		
		remve.add("ㄹ");		
		remve.add("ㅎ");		
		int aa = remve.indexOf(new String("ㅎ"));
		int aaa = list.indexOf(new pModelVo01("2번",2));
		System.out.println(aaa);
		
		// clear():void
		// isEmpty():boolean
		list.clear();
		remve.clear();
		System.out.println(list);
		System.out.println(remve);
		System.out.println(list.isEmpty());
		System.out.println(remve.isEmpty());
		
	}
	
}
728x90
반응형
728x90

 

 

 

 

 

package controller;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.TreeSet;

import model.vo.pModelVo02;


public class pController02 {

	public void firstR() {
		
		// HashSet
		HashSet<pModelVo02> hset =new HashSet<>();
		
		hset.add(new pModelVo02("힘내",1));
		hset.add(new pModelVo02("포기 ㄴ",2));
		System.out.println(hset);
		
		pModelVo02 pmv = new pModelVo02("a",0);
		hset.add(pmv);
		hset.add(new pModelVo02("추가",3));
		System.out.println(hset);
		
		HashSet<String> strSet = new HashSet<String>();
		strSet.add("안녕");
		strSet.add(new String("안녕"));
		System.out.println(hset);
		System.out.println(strSet);
		strSet.remove(new String("안녕"));
		System.out.println(strSet);
	
	}
	public void second() {	

		// LinkedHashSet
		// 순서 유지
		LinkedHashSet<pModelVo02> lhSet = new LinkedHashSet();
		
		lhSet.add(new pModelVo02("a",1));
		lhSet.add(new pModelVo02("b",2));
		lhSet.add(new pModelVo02("c",3));
		System.out.println(lhSet);
		
		// TreeSet
		// 정렬 가능
		// 정렬 기능 + 기준 필요
		// 기준이 되는 오버라이딩은 String class 제네릭으로 대체
		TreeSet<String> tSet = new TreeSet<>();
//		tSet.add(new String("A",1));
//		tSet.add(new String("B",2));
		System.out.println(tSet);
		
		tSet.add("A");
		tSet.add("C");
		tSet.add("B"); 			  // 추가 순서는 ACB
		System.out.println(tSet); // 결과는        ABC (정렬 적용 확인)
		
		
		
	}
	
}

 

package model.vo;

public class pModelVo02 {

	private String name;
	private double weight;
	
	public pModelVo02() {}
	public pModelVo02(String name, double weight) {
		this.name = name;
		this.weight = weight;
	}


	// getter & setter
	public void setName(String name) {
		this.name = name;
	}
	public void setWeight(double weight) {
		this.weight = weight;
	}
	public String getName() {
		return name;
	}
	public double getWeight() {
		return weight;
	}
	
	//toString
	@Override
	public String toString() {
		return name+"("+weight+"kg)";
	}

}

 

package run;
import controller.pController02;

public class pRun02 {
	public static void main(String[] args) {
		
		pController02 p = new pController02();
//		p.firstR();
		p.second();

	}
	
}

 

728x90
반응형
728x90

 

 

 

 

package model.vo;

public class pModelVo01 {

	private String name;
	private int score;
	
	public pModelVo01() {}
	public pModelVo01(String name, int score) {
		this.name = name;
		this.score = score;
	}
	
	// getter & setter
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	
	
	// toString
	@Override
	public String toString() {
//			return name(score점); 이 줄이 아래 코드 의미...
		return name+"("+score+"점)";
	}
		
		
	
}

 

package controller;
import java.util.ArrayList;
import model.vo.pModelVo01;

public class pController01 {

	public void firstR() {
		
//		ArrayList list = new ArrayList();
		ArrayList<pModelVo01> list = new ArrayList<pModelVo01>(3); // 지네릭스 : 데이터타입 한정
		
		System.out.println(list); // 결과값 : []
								  // 리스트 자체가 대괄호 자동생성
		list.add(new pModelVo01("1번", 0));
		list.add(new pModelVo01("2번", 2));
		list.add(new pModelVo01("3번", 3));
		list.add(new pModelVo01("4번", 3));
		System.out.println(list);
//		list.add("hi",0);
//		
		
	}
	
}

 

728x90
반응형
728x90

array 초기화 3가지

 

1) 인덱스 이용

 

2) 중괄호{ } 이용

 

3) for문 이용

 

import java.util.Scanner;

public class practice_everyday13 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		
		int[] arr0; 		// 배열선언
		arr0 = new int[5];	// 배열할당
		
		// array 초기화 3가지
		// 1)인덱스
		int[] arr = new int[3];
		arr[0] = 1;
		arr[1] = 2;
		arr[2] = 3;
		
		for(int i=0; i<arr.length;i++) { // 출력용 for문
			System.out.print(+arr[i]);
		}
		
		// 2)중괄호 {}
		int[] arr2 = {1,2,3};
		
		for(int i=0; i<arr2.length;i++) { // 출력용 for문
			System.out.print(+arr2[i]);
		}
		
		// 3)for문 초기화
		int[] arr3 = new int[4];
		for(int i = 0; i<arr3.length; i++) {
			arr3[i] = i*10+1; 			// for문 초기화
			System.out.println(arr3[i]);
		}
		
	}
	
		
}

 

728x90
반응형
728x90

 

 

 

 

 

 

import java.util.Scanner;

public class practice_everyday13 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		// 삼항연산자 (2중) + do while문
		int num1;
		int num2;
		do { 
			System.out.print("수1 입력 : ");
			num = sc.nextInt();
			System.out.print("수2 입력 : ");
			num2 = sc.nextInt();
			System.out.println(num1 == num2 ? "같아 멈춰":(num1>num2 ? "1이 커":"2가 커"));
			
		}while(num1 !=num2);
			
		// for문 초기화 생략
		int num3 = 5;
		int i = 0;
		for(; i < num3; i+=2) { // 초기화 생략 : int i +=0;
			System.out.println(i);
		}	
    }
}
728x90
반응형
728x90

아래 이미지는 1번 파일을 0번 파일이 상속했다

자식 클래스 부모 클래스의 이름을 눌러보면 부모클래스와 연결되어있는 코드들의 색깔이 진해진다

이 코드들은 중복이기에 삭제하여도 부모와 자식 클래스의 정보가 연동된다

 

삭제 전

삭제 후

0번 parent 

1번 child1

2번 child2

상속관계가 0 -> 1 -> 2

1번이 0번을 상속하고 2번이 1번을 상속한 것

 

1번 child1에서 parent에 받았던 a,b부분들을 주석 처리해서 2번 child2에서 보면 정보가 그대로인 걸 알 수 있다

 

public class practice_everyday04 {
	public static void main(String[] args) {
		
		// run
		practice_everyday04_0 pe1 = new practice_everyday04_0();
		pe1.println();
		
		practice_everyday04_1 pe2 = new practice_everyday04_1();
		pe2.println();
		
		practice_everyday04_2 pe3 = new practice_everyday04_2();
		pe3.println();
		
	}	
}
public class practice_everyday04_0 {
	
	// Parent
	private int a;
	private int b;
	
	public practice_everyday04_0() {}
	public practice_everyday04_0(int a, int b) {
		this.a = a;
		this.b = b;
	}
	//getter & setter
	public int getA() {
		return a;
	}
	public void setA(int a) {
		this.a = a;	
	}
	public int getB() {
		return b;
	}
	public void setB(int b) {
		this.b = b;
	}
	
	
	public void println() {
		System.out.println("parent");
	}
	
}

 



public class practice_everyday04_1 extends practice_everyday04_0 {
		
	// child1
//	private int a;
//	private int b;
	private int c;
	
	public practice_everyday04_1() {}
	public practice_everyday04_1(int a, int b, int c) {
//		this.a = a;
//		this.b = b;
		this.c = c;
	}
	
	// getter & setter
	// setter : 데이터를 변수에 저장하는 메소드
	// getter : 저장된 데이터를 불러오는 메소드
//		public int getA() {
//			return a;
//		}
//		public void setA(int a) {
//			this.a = a;	
//		}
//		public int getB() {
//			return b;
//		}
//		public void setB(int b) {
//			this.b = b;
//		}
		public int getC() {
			return c;
		}
		public void setC(int c) {
			this.c = c;
		}
		
	@Override	
	public void println() {
		System.out.println("child1");
	}
	
}

 

// 상속 & overriding
public class practice_everyday04_2 extends practice_everyday04_1{
	
	// child2
	private int a;
	private int b;
	private int c;
	private int d;
	
	public practice_everyday04_2() {}
	public practice_everyday04_2(int a, int b, int c, int d) {
		this.a = a;
		this.b = b;
		this.c = c;
		this.d = d;
	}
	
	// getter & setter
		public int getA() {
			return a;
		}
		public void setA(int a) {
			this.a = a;	
		}
		public int getB() {
			return b;
		}
		public void setB(int b) {
			this.b = b;
		}
		public int getC() {
			return c;
		}
		public void setC(int c) {
			this.c = c;
		}
		public int getD() {
			return d;
		}
		public void setD(int d) {
			this.d = d;
		}
	@Override
	public void println() {
		System.out.println("child2");
	}
		

	
	
		
}

 

728x90
반응형
728x90

 

try with resource

자동으로 close() 해주는 구문

close()를 위해 finally 구문을 사용할 필요도 없어진다 

 

 

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class practice_everyday10 {
		
		// 1.바이트 기반+보조 : 입력
	public void Stream_outputByte() {
		// 목적 : 파일에 바이트기반으로 데이터를 빠르게 쓰고 싶다
		try (BufferedOutputStream bos = new BufferedOutputStream(
				new FileOutputStream("D:\\test\\test.txt"))){
			
			bos.write(65);
			byte[] arr = {66,67,68,69};
			bos.write(arr);
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void Stream_inputByte() {
		// 목적 :파일에 있는 데이터를 바이트 기반으로 빠르게 읽어오고 싶다
		try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\test\\test.txt"))) {
			
			int val;
			while((val=bis.read()) != -1) {
				System.out.println(val);
			}	
		} catch (IOException e) { //IOException이 FileInputStream의 부모이기에 따로 예외처리하지않아도 같이 처리
			e.printStackTrace();
		}
		
	}	
}

 

 

728x90
반응형

+ Recent posts