[오전]
오늘 : api, jdbc ~
-------------------------------------------------------------------------------------------------------------------------------------------------------
[복습]
엊그제 : 3가지 중요성(다형성 중요-업캐스팅,다운캐스팅), 인터페이스, 예외, 스레드 모두 업캐스팅! 중요하니까 제대로 확인하기
어제 : final, 접근제한자(public, private..), 예외처리-호출부분에서 처리하는게 좋음(미룸), 디버거 사용법, 스레드, 자바는 다중상속이 불가
대신 인터페이스로 상속효과를 내고 있다(상속받은 스레드가 움직이는게 아닌 우리가 원하는대로 스레드에 던짐).
트랜잭션 구현 - 하나의 최소 업무 단위(sychronized : 메소드 단위, 블록 단위, ATM - 모니터 - 동기화), String class(메모리누수)
메모리 데이터의 크기변화로 메모리의 fragmentation을 많이 생기게 함, 복제본 생성, 가비지컬렉션 으로 제거 그러나 loop돌리면
문제생김. => 그래서 생긴게 StringBuffer(동기화 처리되어 있음), StringBuilder(싱글스레드에서 속도가 중요할때, 동기화가 처리안되어
있음) 사용
시험 : index -> pointer아님
-------------------------------------------------------------------------------------------------------------------------------------------------------
[오늘]
1. StringBuilder 예제 따라치기- 이것이자바다 p516
2. p506, p507예제
String firstNum = ssn.substring(0, 6); // 0부터 6개 라는 의미
//자바에서는 뒤에오는 첨자-1 값까지 의미한다.
String secondNum = ssn.substring(7); //7번째 부터~ 끝까지
3. 공백 잘라내기 trim()
4. String.valueOf -> 편한방법으로 알아서 쓰셈
String str1 = String.valueOf(10);
System.out.println(str1);
5. Split, StringTokenizer -> 문자열을 원하는 부분을 잘라냄 (문자열과 구분자)
StringTokenizer str = new StringTokenizer("강백호,서태웅,채치수,정대만", ",");
while (str.hasMoreTokens()) {
System.out.println(str.nextToken());
}
//for문으로 돌리지 말고 while문에서 먼저 확인후 찍어내기, for문으로 하니 에러남
//회사에서는 자바,디비 버전 확인하기 , 데이터가 많아서 쉽게 못바꿈 차이 확인하면서 공부하셈
자바8까지
//BoxedPrimitives(Wrapper Class) : 기본 자료형
Integer i = new Integer(10); // deprecated : 기존에 이미 써서 남겨는 놨지만 되도록 쓰지마셈!
자바5부터~ NewFeature
//Auto Boxing
Integer i2 = 10; //기본자료형 -> 클래스 타입 : Auto Boxing
int i3 = Integer.valueOf(i2);
//Auto Unboxing
int i4 = i2;
Object obj = 10;
int i5 = (Integer) obj; // ~java6, 형변환 할때 기본 자료형 말고 Boxed사용할것
int i6 = (int) obj; // ~java7
6. 컬렉션 프레임워크(List, Set, Map) 2권 - p.722
1. 제네릭 -> : <> 쓰면 좋음, 언제? | ArrayList
package api;
import java.util.ArrayList;
public class ApiTest10 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("정희수");
list.add("김종혁");
list.add("문자영");
list.add(10) //다른 타입도 들어감
for(int i=0; i<list.size(); i++) {
System.out.println(list.get(i));
}
}
}
//이렇게 다른 타입 다 안받고 싶을때, 성능이 좋은 for each문 쓸수없음
ArrayList<String> list = new ArrayList<>(); //앞에 String이 뒤에 따라옴
이렇게 타입을 주면 문자열만 들어가게 된다. for each 가능 따라서 제네릭쓰면 좋음(자바5부터~)
list.add("홍길동");
list.add("김길동");
list.add("문길동");
//list.add(10); ->에러
for(String str : list) {
System.out.println(str);
} //순차적으로 집어넣은대로 나옴, 배열을 클래스화 한 것
--------------------------------------ArrayList를 써보기
import java.util.ArrayList;
public class ApiTest10 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
printList(list);
list.add("정길동");printList(list);
list.add("김길동");printList(list);
list.add("문길동");printList(list); //제일 마지막에 넣는메소드 :add()
list.set(1, "원빈");printList(list); //수정
list.remove(0); printList(list); //삭제
System.out.println(list.get(1)); //특정값만 불러 오고 싶을땐 get()
}
private static void printList(ArrayList<String> list) {
// 클래스 타입이니까 주소만 가져옴(주소복제) 값복제가 되면 원본은 안바뀌는데 참조변수는 둘다 변함
// 값복제 : call by value , 주소 복제 : call by reference
for (String str : list) {
System.out.print(str + "\t");
}
System.out.println();
}
}
-------------------------------------------------------------------------------------------------------------------------------------------------------
- ArrayList 예제
----------------
package api;
public class Account {
private int money; // 잔액
private String bankname; // 계좌이름
private String no; // 계좌번호
//생성자
public Account(int money, String bankname, String no) {
super();
this.money = money;
this.bankname = bankname;
this.no = no;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public String getBankname() {
return bankname;
}
public void setBankname(String bankname) {
this.bankname = bankname;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String toString() {
return bankname + "의 계좌번호 " + no + "의 잔액은 " + money;
}
}
---------------
import java.util.ArrayList;
import java.util.List;
public class ApiTest11 {
public static void main(String[] args) {
// Arr -> List 업캐스팅
List<Account> list = new ArrayList<>();
// 바로add했기때문에 가비지X
list.add(new Account(1000000, "국민은행", "123-123-1234"));
list.add(new Account(2000000, "미래에셋", "456-456-4564"));
list.add(new Account(5000000, "농협", "323-123-1234"));
list.add(new Account(6000000, "신협", "343-123-1234"));
list.add(new Account(3000000, "우리은행", "49-973-1734"));
for (Account account : list) {
System.out.println(account);
}
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------
'학부 정리 > Java' 카테고리의 다른 글
[오늘필기01] jdbc - 18.01.15 (0) | 2018.01.15 |
---|---|
18.01.12 자바 - 필기02 미완성 (0) | 2018.01.12 |
18.01.11 자바 - 필기02 미완성 (0) | 2018.01.11 |
18.01.11 자바 - 필기01 미완성 (0) | 2018.01.11 |
18.01.10 자바 - 필기02 (0) | 2018.01.10 |