[23.01.25] 64일차 [백엔드]

W·2023년 1월 25일
0

국비

목록 보기
95/119
  • Student 클래스
package test;

public class Student {
	//멤버변수
	String name;
	int number;
	//생성자
	public Student(String name,int number ) {
		this.name=name;
		this.number=number;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", number=" + number + "]";
	}
	
	@Override
	public boolean equals(Object obj) {
		if(obj instanceof Student) {
			Student student=(Student)obj;
			if(this.number == student.number) {
				return true;
			}else {
				return false;
			}
		} return false;
	
	}
	@Override
	public int hashCode() {
		return number;
	}
	@Override
	protected Object clone() throws CloneNotSupportedException {
		return super.clone();
	}
	 	
}
  • Test1
package test;

public class Test1 {

	public static void main(String[] args) throws CloneNotSupportedException{
		// Object toString(), equals()
		// hasCode() 주소값
		// hash 해시 : 정보를 저장, 검색 사용하는 자료구조
		//          : 정보를 저장, 정보를 가져올 때 사용
		// hash 함수 : 정보가 저장된 위치 반환
		// 해시코드 값(메모리 위치 값, 기억장소 주소 값)
        // getClass().getName() + "@" + Integer.toHexString(hashCode());
		
		String str1=new String("abc");
		String str2=new String("abc");
		System.out.println(str1.hashCode()); // 96354
		System.out.println(str2.hashCode()); // 96354
		
		Integer int1 = new Integer(100);
		Integer int2 = new Integer(100);
		System.out.println(int1.hashCode()); // 100
		System.out.println(int2.hashCode()); // 100
		
		Student s1 = new Student("홍길동", 1);
		Student s2 = new Student("홍길동", 1);
		System.out.println(s1.hashCode()); // 1
		System.out.println(s2.hashCode()); // 1
		
		// clone() 복제
		// 원본은 유지해 놓고 복사본 사용
		Student copys1 =(Student)s1.clone();
		
	}
}
  • Test2
package test;

public class Test2 {

	public static void main(String[] args) {
		// String 클래스 : 문자열 관련 내장객체
		// 내장객체 java.lang.String
		
		// 힙메모리(인스턴스) 
		String str1 = new String("abc");
		String str2 = new String("abc");
		
		// 주소비교
		System.out.println(str1==str2); // false
		// equals 재정의
		System.out.println(str1.equals(str2)); // true
		
		// 상수값으로 저장(상수 풀)
		String str3 = "test";
		String str4 = "test";
		
		System.out.println(str3==str4); // true
		System.out.println(str3.equals(str4)); // true
		
		// String => char value[] char 배열
		// public final calss String => 문자열 변경 못함
		System.out.println("======================");
		// 문자열 연결
		String javaStr = new String("java");
		String jspStr = new String("jsp");
		System.out.println(javaStr);
		System.out.println("기억장소 주소:"+ System.identityHashCode(javaStr));

		// concat() 문자열합치기
		javaStr = javaStr.concat(jspStr);
		System.out.println(javaStr);
		System.out.println("기억장소 주소:"+ System.identityHashCode(javaStr));

		// 문자열 메서드 뽑아내기 0부터 시작
		String str = "Java Programming";
		System.out.println(str.substring(0,1)); // Java Programming
		System.out.println(str.substring(5,16)); // Programming
		
		// 문자열 1글자 뽑아내기
		System.out.println(str.charAt(5)); // P

		// 문자열 비교 => true/false
		System.out.println(str.equals("jsp")); // false

		// 문자의 위치값
		System.out.println(str.indexOf('P')); // 5
		
		// 문자열 길이
		System.out.println(str.length()); // 16
	
		// 문자열 변경
		str=str.replace("Java", "jsp");
		System.out.println(str); // jsp Progamming
		
		// 문자열 분리
		String strSplit[] = str.split(" ");
		System.out.println(strSplit[0]); // jsp
		System.out.println(strSplit[1]); // Programming
	}
}
  • Test3
package test;

public class Test3 {

	public static void main(String[] args) {
		// String => 문자열 변경, 연결 => 기억장소 새롭게 할당
		// => 기억장소 (메모리) 낭비
		// StringBuffer, String Builder
		// => 문제점 해결 final 없음
		String javaStr = new String("java");
		System.out.println("기억장소 주소 : "+ System.identityHashCode(javaStr));
	
		StringBuffer buffer = new StringBuffer(javaStr);
		System.out.println("buffer 기억장소 주소 : " + System.identityHashCode(buffer));
		
		buffer.append(" and");
		buffer.append(" jsp");
		buffer.append(" Programming is fun");
		System.out.println(buffer);
		System.out.println("buffer 기억장소 주소 : " + System.identityHashCode(buffer));
		
		//Stringbuffer => String
		javaStr = buffer.toString();
		System.out.println(javaStr);
		
	}

}
  • Test4
package test;

public class Test4 {

	public static void main(String[] args) {
		// p375 Wrapper 클래스
		// 기본자료형 => 클래스 정의 내장객체 java.lang
//		boolean => Boolean
//		byte => Byte
//		char => Character =>
//		short => Short
//		int => Integer =>
//		long  => Long
//		float => Float
//		double => Double

		// 기본 자료형
	    int i1 = 100;
		// 참조형 java.lang.Integer 클래스 => 내장객체
	    Integer i2 = new Integer(100);
	    // 정수형 <= Integer클래스 변경
	    // int i3 = i2 ; // 자동변경
	    int i3 = i2.intValue();
	    
	    // 정수형 <= 문자열 변경
	    int num = Integer.parseInt("100");
	    
	    Integer num1 = new Integer(200);
	    int num2 = 300;
	    int sum = num1 + num2 ; // num1 => int 변경
	    // .intValue() 변환(언박싱) => 참조형을 기본형으로 변경
	    int sum2 = num1.intValue()+num2;
	    System.out.println(sum);
	    // 기본자료형을 참조형(Integer)변경 => 오토박싱
//	    Integer num3 = Integer.valueOf(num2);
	    Integer num3 = num2;
	    
	}
}
  • Test5
package test;

public class Test5 {

	public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
		// p378 Class 클래스
		// .java 컴파일(번역) => 실행파일 .class
		// 실행파일.class 저장된 정보 사용
		// java.lang.Class 내장객체
		
		Student s = new Student("홍길동",1);
		Class c = s.getClass();
		System.out.println(c.getName());
		
		Class c2 = Student.class;
		System.out.println(c2.getName());
		
		Class c3 = Class.forName("test.Student");
		System.out.println(c3.getName());

		// 객체생성 => 기본생성자
		Student ss = (Student)c3.newInstance();
		System.out.println(ss);
		
		// p384 Class.forName()
		// 클래스 정보를 프로그램 로딩될때 메모리에 가져옴
		// JDBC 프로그램 안에
		// => com폴더 mysql폴더 cj폴더 jdbc폴더 Driver.class파일
		// 실행 이후에 클래스 로딩이 필요할 경우
		// 동적 로딩(dynamic loading)
		// 오라클, MySQL, MS-SQL 데이터 베이스 연동
		// => 모든 데이터베이스 드라이버를 컴파일 할 필요 없음
		// => 시스템 구동할 때 => 데이터베이스 드라이버 결정되면
		// => 해당 드라이버만 로딩
		Class.forName("com.mysql.cj.jdbc.Driver");
		// 유의점 "com.mysql.cj.jdbc.Driver" 문자열로 되어있어야
		// 문자열 틀리면 에러 발생
		// 실행할 때 오류 발생
		
		// Object - toString(), equals()
		// String - 객체생성, equals()
		// Integer - parseInt(문자열), 오토박싱, 언박싱
		// Class - forName() 동적바이딩
	}

}

0개의 댓글