Data Scientist 옌

매일 발전하는 IT문제해결사

국비지원교육 (22.01-22.07)/강의노트

22-02-21(월) 018일차 [Java] 컬렉션 프레임워크, Variable Case, Equal test, String test

옌炎 2022. 4. 20. 02:06
728x90

수업내용


1교시 (09:30-10:20)

  • Variable_Case

2교시 (10:30-11:20)

  • Variable_Case
package a.b.c.ch4;

/*
 	함수 안에 있는 변수 : 지역변수
 	클래스 안에 있는 변수 : 멤버변수
 	
 	변수 : 데이터를 담는 상자
 	
 	기초자료형은 변수에 리터럴(값)을 담는다.
 	참조자료형은 변수에 주소값을 담는다.
 		참조자료형에서 값을 가르키려면 주소값을 사용해서 가르켜야 한다.
 */

import java.util.ArrayList;
import java.util.Date;
import java.util.Calendar;

public class Variable_Case {

	public void variableCaseTest(int i
								,String s
								,int iv[]
								,ArrayList aList
								,Date d
								,Calendar c
								,VariableVO vo) {
		
		System.out.println("VariableCaseTest() ::: i >>> : " + i);
		System.out.println("VariableCaseTest() ::: s >>> : " + s);
		System.out.println("VariableCaseTest() ::: iv >>> : " + iv);
		System.out.println("VariableCaseTest() ::: aList >>> : " + aList);
		System.out.println("VariableCaseTest() ::: d >>> : " + d);
		System.out.println("VariableCaseTest() ::: c >>> : " + c);
		System.out.println("VariableCaseTest() ::: vo >>> : " + vo);			
	}
	
	public ArrayList variableCaseTest_1(ArrayList aList) {
		
		if (aList != null && aList.size() > 0) {
			
			for(int i=0; aList.size() > 0; i++) {
				System.out.println("variableCaseTesT_1() ::: aList.get(" + i + ") >>> : " + aList.get(i));
			}
		}
		
		return aList;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	
		/*
			1. 지역변수
			2. 기초자료형
			3. 리터럴(값) : 정수, 실수, 논리
		*/
		int i = 0;
		
		/*
			1. 지역변수
			2. 참조자료형
			3. 주소값 : 객체를 가리키는 위치 값 : 패키지명.클래스이름@16진수값
			4. 참조자료형은 값(리터럴)을 직접 가리키지 않고 주소값을 통해서 가리켜야 한다.
		*/
		String s = "abc";
		int iv[] = new int[] {1, 2, 3};
		ArrayList aList = new ArrayList();
		Date d = new Date();
		Calendar c = Calendar.getInstance();
		VariableVO vo = new VariableVO();
		
		System.out.println("main() ::: i >>> : " + i);
		System.out.println("main() ::: s >>> : " + s);
		System.out.println("main() ::: iv >>> : " + iv);
		System.out.println("main() ::: aList >>> : " + aList);
		System.out.println("main() ::: d >>> : " + d);
		System.out.println("main() ::: c >>> : " + c);
		System.out.println("main() ::: vo >>> : " + vo);
		
		Variable_Case vc = new Variable_Case();
		
		vc.variableCaseTest(i, s, iv, aList, d, c, vo);
		
		ArrayList aList_1 = new ArrayList();
		aList_1.add(i);
		aList_1.add(s);
		aList_1.add(iv);
		aList_1.add(aList);
		aList_1.add(d);
		aList_1.add(c);
		aList_1.add(vo);
		
		ArrayList aList_2 = vc.variableCaseTest_1(aList_1);
		
		if (aList != null && aList.size() > 0) {
			
			for (int n=0; n < aList.size(); i++) {
				System.out.println("main() ::: aList_2.get(" + n + ") >>> : " + aList_2.get(n));
			}
		}	
	}
}

class VariableVO {
	String s;
	int i;
}

3교시 (11:30-12:20)

  • 회원 가입(입력), 수정, 삭제, 조회
  • MemberVO
package a.b.c.ch4.mem.vo;

public class MemberVO {
	
	private String mid;
	private String mpw;
	private String mname;
	private String mhp;
	private String maddr;
	
	public MemberVO() {
	
	}
	
	public MemberVO(String mid, String mpw, String mname, String mhp, String maddr) {
	
		this.mid = mid;
		this.mpw = mpw;
		this.mname = mname;
		this.mhp = mhp;
		this.maddr = maddr;
	}
	
	public String getMid() {
		return mid;
	}
	public String getMpw() {
		return mpw;
	}
	public String getMname() {
		return mname;
	}
	public String getMhp() {
		return mhp;
	}
	public String getMaddr() {
		return maddr;
	}
	public void setMid(String mid) {
		this.mid = mid;
	}
	public void setMpw(String mpw) {
		this.mpw = mpw;
	}
	public void setMname(String mname) {
		this.mname = mname;
	}
	public void setMhp(String mhp) {
		this.mhp = mhp;
	}
	public void setMaddr(String maddr) {
		this.maddr = maddr;
	}
}
  • MemberService
package a.b.c.ch4.mem.service;

import java.util.ArrayList;

import a.b.c.ch4.mem.vo.MemberVO;

public interface MemberService {

	// 회원 가입, 수정, 삭제, 조회
	public ArrayList<MemberVO> memSelect();
	public int memInsert(MemberVO mvo);
	public int memUpdate(MemberVO mvo);
	public int memDelete(MemberVO mvo);
}
  • MemberServiceImpl
package a.b.c.ch4.mem.service;

import java.util.ArrayList;

import a.b.c.ch4.mem.vo.MemberVO;

public class MemberServiceImpl implements MemberService {

	@Override
	public ArrayList<MemberVO> memSelect() {
		// TODO Auto-generated method stub
		System.out.println("MemberServiceImpl.memSelect() 시작 >>> :");
		
		return null;
	}

	@Override
	public int memInsert(MemberVO mvo) {
		// TODO Auto-generated method stub
		System.out.println("MemberServiceImpl.memInsert() 시작 >>> :");
		
		return 0;
	}

	@Override
	public int memUpdate(MemberVO mvo) {
		// TODO Auto-generated method stub
		System.out.println("MemberServiceImpl.memUpdate() 시작 >>> :");
		
		return 0;
	}

	@Override
	public int memDelete(MemberVO mvo) {
		// TODO Auto-generated method stub
		System.out.println("MemberServiceImpl.memDelete() 시작 >>> :");
		
		return 0;
	}

}

4교시 (12:30-13:20)

  • 회원 가입(입력), 수정, 삭제, 조회
  • MemberScr
package a.b.c.ch4.mem.scr;

import java.util.ArrayList;
import java.util.Scanner;

import a.b.c.ch4.mem.service.MemberService;
import a.b.c.ch4.mem.service.MemberServiceImpl;
import a.b.c.ch4.mem.vo.MemberVO;

public class MemberScr {

	// 회원 가입(입력), 수정, 삭제, 조회
	// CRIUD : CREATE 입력, READ 조회, UPDATE 수정, DELETE 삭제
	// ISUD : INSERT 입력, SELECT 조회, UPDATE 수정, DELETE 삭제
	
	// 회원 조회
	public ArrayList<MemberVO> memSelect() {
		System.out.println("MemberScr.memSelect() 시작 >>> : ");
		
		MemberService ms = new MemberServiceImpl();
		ArayList<MemberVO> aList = ms.memSelect();
		
		return aList;
	}
	
	// 회원 가입
	public int memInsert(MemberVO mvo) {
		System.out.println("MemberScr.memInsert() 시작 >>> : ");
		
		MemberService ms = new MemberServiceImpl();
		int nCnt = ms.memInsert(mvo);
		 
		return nCnt;
	}
	
	// 회원 수정
	public int memUpdate(MemberVO mvo) {
		System.out.println("MemberScr.memUpdate() 시작 >>> :");
		return 0;
	}
	
	// 회원 삭제
	public int memDelete(MemberVO mvo) {
		System.out.println("MemberScr.memDelete() 시작 >>> :");
		return 0;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		String mid = "";
		String mpw = "";
		String mname = "";
		String mhp = "";
		String maddr = "";
		
		System.out.println("CRUD를 선택하세요 >>> ");
		System.out.println("I 입력, S 조회, U 수정, D 삭제, Q 종료");
		Scanner sc = new Scanner(System.in);
		String crudType = "";
		
		while (true) {

			crudType = sc.next();
			crudType =  crudType.toUpperCase();
			
			if ("I".contentEquals(crudType)) {
				System.out.println("MemberScr.main() 시작 >>> : crudType ::: " + crudType);
				MemberScr mscr_i = new MemberScr();
				
				MemberVO mvo = new MemberVO();
				mscr_i.memInsert(mvo);
			}
			if ("S".contentEquals(crudType)) {
				System.out.println("MemberScr.main() 시작 >>> : crudType ::: " + crudType);
				MemberScr mscr_s = new MemberScr();
				
				MemberVO mvo = new MemberVO();
				mscr_s.memInsert(mvo);
			}
			if ("U".contentEquals(crudType)) {
				System.out.println("MemberScr.main() 시작 >>> : crudType ::: " + crudType);
				MemberScr mscr_u = new MemberScr();
				
				MemberVO mvo = new MemberVO();
				mscr_u.memInsert(mvo);
			}
			if ("D".contentEquals(crudType)) {
				System.out.println("MemberScr.main() 시작 >>> : crudType ::: " + crudType);
				MemberScr mscr_d = new MemberScr();
				
				MemberVO mvo = new MemberVO();
				mscr_d.memInsert(mvo);
			}
			if ("Q".contentEquals(crudType)) {
				System.out.println("MemberScr.main() 시작 >>> : crudType ::: " + crudType);
				System.out.println("프로그램을 종료합니다. >>> : ");
				break;
			}
		} // end of while()
	} // end of main()
} // end of MemberScr class

5교시 (14:30-15:20)

  • [교재 222 ~ 225p] ArrayList
  • [교재 351 ~ 353p] Object 클래스
  • Exam_EqualsTest
package a.b.c.ch4;

public class Exam_EqualTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		/*
			java.lang.Object.equals(Object obj) : 인스턴스 주소값을 비교하는 함수
			java.lang.String.equals(Object obj) : 문자열을 비교하는 함수
			
			boolean b = 참조변수.equals(참조변수);
			비교할 참조변수를 보고 버추얼 머신이 판단한다.
		*/
		
		String s = "abc";
		String s1 = "abc";
		boolean b = s.equals(s1); // <-- java.lang.String.equals() 함수가 호출되어서 문자열 비교한다.
		System.out.println("System.identityHashCode(s) >>> : " + System.identityHashCode(s));
		System.out.println("System.identityHashCode(s1) >>> : " + System.identityHashCode(s1));
		System.out.println("b >>> : " + b);
		
		Object o = new Object();
		Object o1 = new Object();
		boolean b1 = o.equals(o1); // <-- java.lang.Object.equals() 함수가 호출되어서 주소값을 비교한다.
		System.out.println("o >>> : " + o);
		System.out.println("o1 >>> : " + o1);
		System.out.println("System.identityHashCode(o) >>> : " + System.identityHashCode(o));
		System.out.println("System.identityHashCode(o1) >>> : " + System.identityHashCode(o1));
		System.out.println("b1 >>> : " + b1);
		
		boolean b2 = o == o1;
		System.out.println("b2 >>> : " + b2);
		
		// 자바에서는 문자열 비교할 때는 == 상등연산자, 등가연산자 사용금지
		// 자바스크립트에서는 문자열, 문자 비교에 다 사용 가능
		boolean b3 = s == s1;
		System.out.println("b3 >>> : " + b3);
	}
}

6교시 (15:30-16:20)

  • Exam_EqualTest_1
package a.b.c.ch4;

public class Exam_EqualTest_1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		String s = new String("abc");
		String s1 = new String("abc");
		System.out.println("s >>> : " + s);
		System.out.println("s1 >>> : " + s1);
		System.out.println("System.identityHashCode(s) >>> : " + System.identityHashCode(s));
		System.out.println("System.identityHashCode(s1) >>> : " + System.identityHashCode(s1));
		
		System.out.println(s == s1); // false
		System.out.println(s.equals(s1)); // true
		
		Integer i = new Integer(100);
		Integer i1 = new Integer(100);
		System.out.println("i >>> : " + s);
		System.out.println("i1 >>> : " + s1);
		System.out.println("System.identityHashCode(i) >>> : " + System.identityHashCode(i));
		System.out.println("System.identityHashCode(i1) >>> : " + System.identityHashCode(i1));
		
		System.out.println(i == i1); // false
		System.out.println(i.equals(i1)); // true
	}

}

7교시 (16:30-17:20)

  • Exam_ToString
package a.b.c.ch4;

public class Exam_ToString extends Object {

	@Override
	public String toString() {
		// getClass().getName() + '@' + integer.toHexString(hashCode())
		return "java.lang.Object 클래스에서 오버라이딩한  toString() 함수이다.";
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Exam_ToString et = new Exam_ToString();
		System.out.println("et 참조변수 주소값 >>> : " + et);
		//						getClass().getName()  + '@' + Integer.toHexString(hashCode())
		// et 참조변수 주소값 >>> : a.b.c.ch4.Exam_ToString@15db9742
		System.out.println("et.toString() 참조변수 주소값 >>> : " + et.toString());
		System.out.println("et.getClass().getName() >>> : " + et.getClass().getName());
		
		// Exam_ToStringVO 호출하기
		Exam_ToStringVO etvo = new Exam_ToStringVO("홍길동", 30);
		System.out.println("etvo >>> : " + etvo);
		System.out.println("etvo.toString()>>> : " + etvo.toString());
	}
}
  • Exam_ToStringVO
package a.b.c.ch4;

public class Exam_ToString extends Object {

	// java.lang.Object 클래스에 있는 toString 함수를 오버라이딩해서
	// java.lang.Object 클래스에서 Exam_ToString 클래스로 함수가 이사왔다.
	// 이사온 표현을 @Override 오버라이드 어노테이션으로 표기한다.
	// 이사오기 전 toString() 함수의 리턴값인 getClass().getName() + '@' + integer.toHexString(hashCode())을
	// 이사온 toString() 함수 블록에서 "java.lang.Object 클래스에서 오버라이딩한 toString() 함수이다."로 변경한다: 재정의한다.
	// Exam_ToString 클래스를 사용하는 블록에서 toString() 함수를 호출하면 이후부터는
	// getClass().getName() + '@' + Integer.toHexString(hashcode()) 값이 아니고
	// "java.lang.Object 클래스에서 오버라이딩한  toString() 함수이다." 값이 리턴된다.
	@Override
	public String toString() {
		// getClass().getName() + '@' + integer.toHexString(hashCode())
		return "java.lang.Object 클래스에서 오버라이딩한  toString() 함수이다.";
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// Exam_ToString et 참조변수로 인스턴스했다.
		Exam_ToString et = new Exam_ToString();
		// et 참조변수에 toString() 함수가 생략되어 있다.
		System.out.println("et 참조변수 주소값 >>> : " + et);
		//						getClass().getName()  + '@' + Integer.toHexString(hashCode())
		// et 참조변수 주소값 >>> : a.b.c.ch4.Exam_ToString@15db9742
		System.out.println("et.toString() 참조변수 주소값 >>> : " + et.toString());
		System.out.println("et.getClass().getName() >>> : " + et.getClass().getName());
		
		// Exam_ToStringVO 호출하기
		Exam_ToStringVO etvo = new Exam_ToStringVO("홍길동", 30);
		// et 참조변수에 toString() 함수가 생략되어 있다.
		System.out.println("etvo >>> : " + etvo);
		System.out.println("etvo.toString()>>> : " + etvo.toString());
	}
}

8교시 (17:30-18:30)

  • Exam_String
package a.b.c.ch4;

// 문자열 불변 immutable
// 스트링 클래스에 초기화된 값은 절대 변경되지 않는다.

public class Exam_String {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		String s0 = new String("java");
		String s1 = new String("android");
		
		System.out.println("s0 >>> " + s0);
		System.out.println("System.identityHashCode(s0) s0 >>> : " + System.identityHashCode(s0));
		System.out.println("s1 >>> " + s1);
		System.out.println("System.identityHashCode(s1) s1 >>> : " + System.identityHashCode(s1));
		
		// public String concat(String str)
		//javaandroid
		String s2 = s0.concat(s1);
		System.out.println("s2 >>> : " + s2);
		System.out.println("System.identityHashCode(s2) s2 >>> : " + System.identityHashCode(s2));
		
		/*
		 s0 : java
		 System.identityHashCode(s0) s0 >>> : 366712642
		 
		 s1 : android
		 System.identityHashCode(s0) s0 >>> : 1829164700
		 
		 s2 : javaandroid
		 System.identityHashCode(s0) s0 >>> : 2018699554
		 
		*/
		
		// int i = 12345;
		// String ss = i + "";
		
		// String -> StringBuffer -> StringBuilder
		String sb0 = new String("abc");
		System.out.println("sb0 >>> : " + sb0);
		System.out.println("System.identityHashCode(sb0) sb0 >>> : " + System.identityHashCode(sb0));
		
		StringBuffer sb1 = new StringBuffer();
		System.out.println("StringBuffer sb1 >>> : " + System.identityHashCode(sb1));
		sb1.append(" and");
		sb1.append(" android");
		sb1.append(" programming is fun!!!!!");
		System.out.println("sb1 >>> : " + sb1);
		System.out.println("StringBuffer sb1 >>> : " + System.identityHashCode(sb1));
		
		// sb0 = sb1;
		// String 클래스와 StringBuffer 클래스는 다른 클래스이다.
		// 사용하려면 형변환을 해야한다.
		sb0 = sb1.toString();
		
		System.out.println("sb0 >>> : " + sb0);
		System.out.println("System.identityHashCode(sb0) sb0 >>> : " + System.identityHashCode(sb0));
	}
}
  • Exam_StringBufferTest
package a.b.c.ch4;

public class Exam_StringBufferTest {

	public static String getBoaedSelectAllQuery() {
		
		StringBuffer sb = new StringBuffer();
		sb.append(" SELECT								\n");
		sb.append("		 A.BNUM			BNUM			\n");
		sb.append("		,A.BSUBJECT		BSUBJECT		\n");
		sb.append("		,A.BWRITER		BWRITER			\n");
		sb.append("		,A.BPW			BPW				\n");
		sb.append("		,A.BMEMO		BMEMO			\n");
		sb.append("		,A.BPHOTO		BPHOTO			\n");
		sb.append("		,A.DELETEYN		DELETEYN		\n");
		sb.append("		,TO_CHAR(A.INSERTDATE, 'YYYY-MM-DD') INSERTDATE		\n");
		sb.append("		,TO_CHAR(A.UPDATEDATE, 'YYYY-MM-DD') UPDATEDATE		\n");
		sb.append(" FROM								\n");
		sb.append("		MVC_BOARD A						\n");
		sb.append(" WHERE A.DELETEYB = 'Y'				\n");
		sb.append(" ORDER BY 1 DESC						\n");
		
		return sb.toString();
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		String sqlQuery = Exam_StringBufferTest.getBoaedSelectAllQuery();
		System.out.println("sqlQuery \n" + sqlQuery);
	}
}

Notes

  • 이번 주 안에 마무리
    • 교재 351p 기본 클래스, 387p 컬렉션 프레임워크, 449p 내부 클래스, 487p 예외 클래스, 511p 자바입출력 I/O
  • 다음주에 데이터베이스 들어가면서 자바를 함께 하고 마무리

728x90