。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

[네이버클라우드] 클라우드 기반의 개발자 과정 7기/웹프로그래밍

[NC7기-62일차(7월21일)] - 웹프로그래밍 43일차

quarrrter 2023. 7. 21. 17:09

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>();  // 컴파일 오류
  }
 
Map.compute(키, 값을 리턴할 객체); 매서드 정리하기

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 지우고 관련 내용 지우기