java coding 1번 문제 다시 보기
obj = new String("Hello");
obj.toCharArray(); // 컴파일 오류
// obj는 object타입이고 object클래스에는 toCharArray() 가 없다.
((String)obj).toCharArray(); // 컴파일러에게 obj가 String 타입임을 알려줘야한다. => 알려주는것: "형변환"(Type casting), (Type conversion)
다형적 변수(Polymorphic variables)의
장점: object에 온갖걸 다 넣을 수 있음
단점: 넣고 빼서 형변환을 다 시켜야됨
* 제네릭 사용 후
<What> What echo (what obj) {...} // 여러 타입에 공통으로 사용할 수 있는 범용(generic)메서드
<What> : 이 멤서드에 등장하는 what은 타입을 가리키는 파라미터임을 선언 => " type parameter"
what이 가리키는 타입은 메서드를 호출할 때 결정된다.
echo( ) ; < = String 객체를 넣으면,,,
String echo(String obj) {... }
echo( ) ; < = Date 객체를 넣으면,,,
String echo(Date obj) {... }
# 제네릭의 타입 파라미터로 많이 사용하는 이름
- 보통 긴 이름을 사용하지 않고 다음과 같이 한 개의 대문자로 된 이름을 많이 사용한다.
T - Type이라는 의미를 표현할 수 있어 많이 사용하는 이름이다.
E - Element라는 의미로 목록의 항목을 가리킬 때 사용한다.
K - Key 객체를 가리킬 때 사용한다.
N - Number의 의미로 숫자 타입을 가리킬 때 주로 사용한다.
V - Value의 의미로 값의 타입을 가리킬 때 사용한다.
S,U,V 등 - 한 번에 여러 타입을 가리킬 때 두 번째, 세 번째, 네 번째 이름으로 주로 사용한다.주로 사용한다.
[파라미터 타입]
/*
* Object
* |
* A
* / \
* B1 B2
* |
* C
*/
static class Box<T> {
void set(T obj) {}
}
// 파라미터 타입 - 기본
public static void main(String[] args) {
Box<String> box1 = new Box<>();
Box<Integer> box2 = new Box<>();
Box<Member> box3 = new Box<>();
// box1 = new Box<Object>(); // 컴파일 오류
// box2 = new Box<String>(); // 컴파일 오류
// box3 = new Box<Object>(); // 컴파일 오류
}
// 파라미터 타입 레퍼런스와 인스턴스 - 기본
public static void main(String[] args) {
Box<B1> box1;
// box1 = new Box<A>(); // 컴파일 오류
// box1 = new Box<Object>(); // 컴파일 오류
box1 = new Box<B1>();
// box1 = new Box<C>(); // 컴파일 오류 자식이지만,, 안 됨.
}
// 파라미터 타입 레퍼런스와 인스턴스 - 상속 관계 extends
public static void main(String[] args) {
Box<? extends B1> box1; // B1이나 그의 자식을 받는
// box1 = new Box<A>(); // 컴파일 오류
// box1 = new Box<Object>(); // 컴파일 오류
box1 = new Box<B1>();
box1 = new Box<C>();
}
// 파라미터 타입 레퍼런스와 인스턴스 - -상속 관계 super
public static void main(String[] args) {
Box<? super B1> box1; // B1이나 그의 자식을 받는
box1 = new Box<A>();
box1 = new Box<Object>();
box1 = new Box<B1>();
// box1 = new Box<C>(); // 컴파일 오류
}
package coding.ex001;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.function.BiFunction;
public class Test2 {
public static void main(String[] args) {
// BiFunction : <T,U,R> 인터페이스
// => R apply(T, U);
// Map.put(키, 값)
// 키: character type,
// 값: Integer
// 예: put('x', 100);// 값 직접 넣는것
// Map.compute(키, 값을 리턴할 객체);
// => 키: K
// => 값을 리턴할 객체: BiFunction<? super K, ? super V, ? extends V>
// => 예: compute('x', BiFunction 구현객체); / 값을 만드는 객체 사용해서 값을 넣음
class MyValue implements BiFunction<Character, Integer, Integer> {
//Character : 키, Integer: 값, Integer: 리턴타입임
@Override
public Integer apply(Character key, Integer value) {
// 이 메서드는 Map.compute()가 호출한다.
// 파라미터로 넘어오오는 것은 기존이 저장된 키와 값이다
//해당 키의 값이 없다면 null이 넘어온다.
return (value == null ) ? 1 : value +1;
}
}
MyValue 값생성기 = new MyValue();
String str = "Be strong, be fearless, be beautiful. "
+ "And believe that anything is possible when you have the right "
+ "people there to support you. ";
Map<Character,Integer> result = new HashMap<>();
for (char ch : str.toCharArray()) {
result.compute(ch,값생성기);
}
for (Entry<Character,Integer> entry: result.entrySet()) {
System.out.printf("%c: %d\n", entry.getKey(), entry.getValue());
}
}
}
test3 , test4 강사님 코드 확인하기
package coding.ex001;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class Test5 {
public static void main(String[] args) {
String str = "Be strong, be fearless, be beautiful. "
+ "And believe that anything is possible when you have the right "
+ "people there to support you. ";
Map<Character,Integer> result = new HashMap<>();
for (char ch : str.toCharArray()) {
result.compute(ch,(key, value) -> (value == null) ? 1 : value +1);
}
for (Entry<Character,Integer> entry: result.entrySet()) {
System.out.printf("%c: %d\n", entry.getKey(), entry.getValue());
}
}
}
*JDBC Driver 사용법
build gradle 확인
common, client 수정 삭제
member, board class 지우고 관련 내용 지우기
'[네이버클라우드] 클라우드 기반의 개발자 과정 7기 > 웹프로그래밍' 카테고리의 다른 글
[NC7기-64일차(7월25일)] - 웹프로그래밍 45일차 (0) | 2023.07.25 |
---|---|
[NC7기-63일차(7월24일)] - 웹프로그래밍 44일차 (0) | 2023.07.24 |
[NC7기-61일차(7월20일)] - 웹프로그래밍 42일차 (0) | 2023.07.20 |
[NC7기-60일차(7월19일)] - 웹프로그래밍 41일차 (0) | 2023.07.19 |
[NC7기-59일차(7월18일)] - 웹프로그래밍 40일차 (0) | 2023.07.18 |