[ 동적가변배열 ]
public static void main(String[] args) { }
메인메소드도 안에 비어있는 String 타입 배열로 받겠다고 선언되어 있다
위처럼 선언해준 arr03은 외부배열의 길이만 정해져있기 때문에 바로 못쓴다.
arr03.length => 외부배열의 길이
arr03[i].length => 내부배열의 길이 (미정)
외부배열을 먼저 생성하고 내부배열까지 생성해줘야 사용가능하다.
외부배열 0번지에 스트링 4칸을 넣어줬다.
외부배열 1번지에 스트링 10칸을 넣어줬다.
이렇게 외부배열을 먼저 만들어주고 내부배열은 필요한 길이만큼만 각각 생성해 줄 수 있다.
이제 for문으로 내부배열들도 전부 만들어줄건데 아래처럼 범위주의**
j의 범위를 arr03.length 로 설정해주면
외부배열은 5칸인데 내부배열 칸의 갯수가 그 이하인 경우 배열 범위를 벗어나 오류가 난다.
배열형태를 출력해보면
값을 넣어서 출력해보면
리스트 속에 리스트 넣어보는것도 한번 해보기 (얘는 길이 지정 안해줘도 되니까)
[ Map & HashMap ]
다형성 (Polymorphism) - 하나의 객체가 여러가지 타입을 가질 수 있는 것
부모타입(Map) -- 자식타입(HashMap)
Map은 인터페이스라 인스턴스를 발생시킬 수 없음 그래서 자식인 HashMap이 인스턴스를 발생시키고
그걸 Map의 형태로 넣어주는거.
int => ( object ) => String으로 변환 가능 (최상위 객체인 object를 거치면 가능)
그럼 이제 최종적으로는 string타입인 10 이 들어있다.
다시 스트링인 str을 obj에 넣어주고 int로 캐스트하면 최종값은 다시 int
Stringint => ( object ) => int
인터페이스는 객체생성이 안된다. 미완성 상태이다.
추상메소드만 생성할 수 있음 (기능이 완성되지 않은 메소드_기능구현은 자식에서)
왼쪽이 HashMap / 오른쪽이 Map
그래서 Map은 그 자체로만 객체를 생성할 수 없다.
위의 캡쳐처럼 Map으로 인스턴스생성 시도해보면 엄청나게 많이 오버라이딩 된다.
위의 것들을 다 만들어줘야 객체생성을 할 수 있다.(그 전까지는 미완성 객체)
자식이 부모타입으로 들어간 형태가 다형성!!!
아래에서도 list에 들어간건 이미 hash로 형변환된 map이라고 생각하면 된다. 미완성 객체인 map이 들어간게 아님**
.getClass().getName() 으로 타입확인가능
new ~~ 로 되어있는 자식부분이 최종타입이 되는거
위에서도 boardList 의 타입은 ArrayList인거!!
instanceof => map01이 HashMap 타입이 맞는지 boolean으로 알려준다.
근데 Map으로 해도 true라고 나온다.
map01에 값을 넣어보자 => . put ( key, value )
키가 중복되면 마지막에 넣은 value값으로 업데이트된다. (key는 중복불가)
value는 중복가능
. size ()
. isEmpty () _ boolean 으로 반환
. containsKey () _ boolean 으로 반환
"김길동" 이라는 key가 가지고 있는 value값을 remove 할건데
애초에 key 자체가 없으니 null이 뜬다.
아래처럼 key와 value 값이 둘다 일치해야 remove 적용된다.
. toString ()
. replace ()
key랑 value 뽑아주는데
key는 set타입으로 (순서가 없으니까) value는 collection 타입으로
set으로 바꾼다음에 list로 넣어줘야 한다.
entrySet () 은 key와 value를 entry 타입으로 가져와서 set에 담아서 뽑아낸다
map 안에 있는 Striing, Integer를 entry타입으로 바꿔주고 그걸 set에다가 저장
set 안에 map이 못들어가니까 중간 인터페이스로 entry를 사용해주는거
값을 나중에 list로 보내거나 할 때 entry 타입으로 보내는거
map02에 값을 넣어본다.
map02.keyset() 에서 (key값들의 set에서) key 들을 하나씩 뽑아온다.
map02.get(key) 를 출력 => 하나씩 뽑아낸 key에 대응하는 value 값들을 출력.
sest은 중복값을 허용하지 않아서 아래처럼 같은걸 여러번 넣어줘도 한번만 들어간다.
[ sql ]
SELECT
e.emp_no, e.dept_no,
d.dept_name, e.from_date, e.to_date
FROM dept_emp e LEFT JOIN departments d
ON e.dept_no = d.dept_no
LIMIT 10;
dept_emp 의 전체 내용을 다 뽑아내서
JOIN을 이용해 조건을 만족하는 departments 의 몇개의 요소들을 붙여서 한꺼번에 가져올거다.
dept_emp 가 departments 를 참조하고 있는 형태.
SELECT
e.emp_no, m.first_name, m.last_name, e.dept_no,
e.from_date, e.to_date
FROM dept_emp e left JOIN employees m
ON e.emp_no = m.emp_no
LIMIT 10;
dept_emp 에 해당하는 위의 값들을 일단 다 뽑아낼건데
ON ~ 조건을 만족하는 (조인으로 묶어준) employees 의 값들도 함께 뽑아낸다. (교집합을 다시 뽑아내는거)
[DB/MariaDB] SQL 예제를 통한 JOIN의 종류 파악 (tistory.com)
세개의 테이블을 조인해보자
SELECT
e.emp_no, m.first_name, m.last_name, e.dept_no,
d.dept_name,
e.from_date, e.to_date
FROM dept_emp e left JOIN employees m
ON e.emp_no = m.emp_no
JOIN departments d
ON e.dept_no = d.dept_no
헷갈린다....
JOIN 안쓰고 다른 방법으로(WHERE) 뽑아내려면 아래처럼
SELECT
e.emp_no, m.first_name, m.last_name, e.dept_no,
d.dept_name,
e.from_date, e.to_date
FROM dept_emp e,
employees m,
departments d
WHERE e.emp_no = m.emp_no
AND e.dept_no = d.dept_no
'국비과정 > JAVA (기초)' 카테고리의 다른 글
20230614 _[9일차]_01. 연습문제* + String메서드 (0) | 2023.06.15 |
---|---|
20230613 _[8일차]_06. 연습문제* (0) | 2023.06.14 |
20230613 _[8일차]_05. String 사용법 * (0) | 2023.06.14 |
20230613 _[8일차]_04. DynamicArray (동적가변배열) (0) | 2023.06.13 |
20230613 _[8일차]_03. Switch* (0) | 2023.06.13 |