현 블로그는 모바일 환경이 아닌 PC환경에 최적화 되어있습니다.

 Mir의 운영환경

public class Test2_1 {


 public static void main(String[] args){

 

 

 

1.

 long a = 1000000 * 3000000;
  
// 1000000와 3000000을 곱하여서 long타입의  변수 a에 저장하였다.


 System.out.println(a);

 

 /* 위 문제는 오류도 없이 출력이 되지만 출력값이 예상과는 다르다.

 10만과 30만을 곱하면 3경이 되는데 문제는 연산시에는 자동으로 int형으로

 변환하여 연산하기 때문에 int형 범위를 벗어나버린다.


 정확한 연산을 할려면 두 값중 하나를 long형태로 변환하여 연산을 하면

 int형과 long형의 연산시 자동으로 범위가 더 큰 long형으로 변하기 때문에

 long형태의 변수 a에 정확한 값이 저장된다.


 그래서 두 값중 하나만이라도 뒤에 l이나 L을 붙히면 정상적으로 연산이 될것이다.

 (왜 뒤에 l이나 L을 붙히는지 모르면 Chapter1 을 다시 보기 바란다.)*/


 

 

2.

 byte x = 10;


 byte y = 20;


 byte z = (byte)(x + y);


   System.out.println(z);

 }}

/*위 식이 올바른 정답이다.

  * a와 b는 byte형이기 때문에 연신시 자동으로 int형으로 형변환이 된다.

  * 그래서 다시 byte형으로 형변환을 해주고 난뒤 byte형 변수 c에 저장하여야 한다.

  * 여기서 주의점은 (byte)a + b; 이렇게 프로그래밍을 하면

  * a만 byte형으로 형변환을 할뿐이지 b는 그대로 int형이기 때문에 

  * 결국 연산을 하면 int형으로 변하고 만다.

  * a + b까지 괄호로 감싸주어야 a+b를 우선 연산하고 byte형으로 형변환 되는것이다.

 */

 


------------------------------------------------------------------------------------
본 블로그의 글을 퍼가실때 꼬릿말, 퍼가시는곳 주소를 꼭 남겨주세요. 
출처 꼭 기재해주시고요. 상업적인 용도의 이용은 절대 금합니다.
혹 프린트를 할 경우 블로그주소와 함께 프린트 해주세요.
허락을 맡지 않고 무단도용을 할경우 법적인 제제가 있을수도 있습니다. 
(전 분명히 경고했습니다. 합의같은거 안합니다.)
그리고 혹 무단도용한것을 보신분은 신고해주시면 사례금 챙겨 드리겠습니다.
-----------------------------------------------------------------------------------

'Java > Java_A' 카테고리의 다른 글

Chapter2-4 비교,논리연산자 _&A  (1) 2011.09.20
Chapter2-3 증감연산자2 _&A  (0) 2011.09.20
Chapter2-2 증감연산자 _&A  (0) 2011.09.20
Chapter1-2 변수의 범위 _&A  (2) 2011.09.20
Chapter1-1 변수의 출력 _&A  (0) 2011.09.20

+ Recent posts