- 'Int' 는 자료형(원시자료형 : int | char | float | double )이고

 - 'Integer' 는 클래스

Wrapper 클래스(감싸는 클래스 : 기존의 클래스를 더욱 확장시키기 위해 쓰이며 주로 형변환에 사용된다)

즉. 원시자료형을 클래스로 만든 것.


- 원시자료형과 클래스(Wrapper클래스) 차이점

'Integer' 를 사용하면 Null 값 처리가 용이하지만 직접적인 산술연산을 할수 없다는 장점.

그래서 주로 형변환에 쓰이나 보다.


형변환 예)

Integer.valueOf(String) 와 Integer.parseInt(String) 의 차이 때문

Integer.valueOf(String) 를 사용하면 Integer 클래스로 리턴이 되기 때문에 산술 연산을 할 수가 없다.

그리고 위에 말한 바와 같이 Integer.parseInt(String) 는 int형을 리턴하니 null 값이 들어가선 안된다.

Integer.valueOf(String)하고 intValue()로 바꿔 연산하던지

Integer.parseInt(String)하기 전 null 값을 체크하던지 선택을 해야한다.


Wrapper 클래스 공부를 다시해야겟다. 챙피하군 


- Wrapper 클래스(기본자료형 -> 객체형)

기본형 변수도 때로는 객체로 다루어져야하는 경우가 있다.

예를 들면, 매개변수로 객체를 요구할 때, 기본형 아닌 객체로 저장해야 할 때, 객체간의 비교가 필요할 때 등의 경우에는 기본형 값들을 객체로 변환하여 작업을 수행하여야 하는데 그 때에 Wrapper 클래스를 이용한다.

Wrapper 클래스는 모두 equals() 가 오버라이딩되어 있어서 주고값이 아닌 객체가 가지고 있는 값을 비교한다.

 

'공부 > JAVA' 카테고리의 다른 글

JAVA_[문자열 비교 .equals() 메서드와 등가비교연산자(==) 차이점]  (0) 2014.01.20
JAVA_[ OS 정보 확인 ]  (0) 2013.09.30
JAVA_[날짜 형식 변경(SimpleDateFormat)]  (0) 2012.11.12
JAVA_[Vector]  (0) 2012.07.31
JAVA_[Thread]  (0) 2012.06.23

- 기존에 @RequestParam 을 사용해서 파라미터를 받는방법 말고 @PathVariable 어노테이션을 이용해서

URI 에 아이디나 이름 등을 포함되도록 URL을 구성하여 Controller 로 넘긴다.


사용예)

@Controller

@RequestMapping("/game/users/{userId}")

public class CharaterInfoController {

@RequestMapping("/characters/{characterId}") {

public String characterInfo(@PathVariable String userId,

@PathVariable String characterId, ModelMap model) {

model.addAttribute("userId", userId);

model.addAttribute("characterId", characterId);

return "game/character/info";

}

}

}




[부록]_ @RequestMapping 어노테이션은 Ant 스타일의 패턴을 지원한다.

따라서. 다음과 같이 경로명에 "*" 나 "**"를 값으로 사용할 수 있다.


@RequestMapping("/members/*.do")

public String memberInfo(...) {

...

}


@RequestMapping("/game/*/items/{itemId}")

public String itemInfo(...) {

...

}

- ?   : 1개의 문자와 매칭

- *   : 0개 이상의 문자와 매칭

- ** : 0개 이상의 디렉터리와 매칭


@ModelAttribute 어노테이션을 이용하면 다음 두 가지 작업을 수행할 수 있다.

- 1. @RequestMapping 어노테이션 없는 메서드로 모델에 추가될 객체 생성

@ModelAttribute 어노테이션 메서드에 적용하면 해당 메서드가 생성한 객체가 뷰에 전달된다.

따라서, @ModelAttribute 어노테이션을 사용하면 두 개 이상의 요청처리 메서드에서 공동으로

사용되는 모델 객체를 생성할 수 있다.

(쉽게 Controller 에서 해당 @RequestMapping value 값과 상관없이 @ModelAttribute 어노테이션 메서드 실행 후

뷰 페이지로 객체럴 넘겨준다란 뜻 - 그럼 @RequestMapping 선언 메서드의 객체와 @ModelAttribute 메서드의

객체 두개 모두 뷰에 전달된다)


- Client 에서 /serach/main.do 요청이 오면 GameSearchController 의

main() 메서드만 실행이 되는게 아니라 @ModelAttribute 어테이션 선언된 메서드도 실행 후

생성된 객체가 함께 뷰로 전달된다.



- 2. 커맨트 객체의 초기화 작업 수행(작업순 : @ModelAttribute -> @RequestMapping 메서드)

@ModelAttribute 어노테이션이 적용된 메서드가 @RequestMapping 어노테이션 적용된 메서드 보다 먼저 실행되기 때문에, 커맨드 객체에 대한 초기화 작업이 필요하다면 커맨드 객체와 동일한 이름을 같는 @ModelAttribute 어노테이션을 적용된 메서드를 이용하여 초기화 작업을 수행시킨다.




PS> @ModelAttribute 어노테이션은 Controller 에서 @RequestMapping 메서드의 참소변수 Bean 객체의 Return 명?

쉽게말해 뷰에 건너줄 커맨드객체의 명칭을 임의로 바꿀때도 사용이 된다. 이건 알고 있어야징


+ Recent posts