자바 4장 - 연산자

연산자 우선순위는 외울 필요가 없다.
다만 ()가 최우선이며 *, /가 +, -보다 먼저라는 것만 알자.


대입 및 산술 연산자(=, +, -, *, /, %)
----------------------------------------------------
/ 연산은 실수와 정수를 계산할 경우 형 변환에 의해
정수가 실수로 바뀌며 % 연산은 실수 간에는 사용할 수 없다.
----------------------------------------------------

복합 대입 연산자
----------------------------------------------------
+=, -=, *=, /=, %=

ex)
num = num + 1 -> num += 1
num = num % 2 -> num %= 2
----------------------------------------------------

관계 연산자
----------------------------------------------------
>, >=, <, <=, ==, !=

좌측의 값이 기준이므로 >의 경우 '크다'라는 뜻이 된다.
----------------------------------------------------

논리 연산자
----------------------------------------------------
&&, ||, !

각각 and, or, not을 의미한다
----------------------------------------------------

논리 연산자와 Short-Circuit Evaluation(Lazy Evaluation)
----------------------------------------------------
빠른 연산을 위해 쓸데없는 연산은 하지 않고 지나치는 방법이다.

ex)
int num1 = 0, num2 = 0;
boolean result
result = (num1 += 10) < 0 && (num2 += 10) > 0;

위의 경우 num1 += 10 < 0 문장이 이미 거짓이기에 뒤에 있는
num2 += 10 > 0 문장을 아예 연산하지 않는다.
따라서 num2는 10이 아니라 계속 0인 채로 있게 된다.

즉, && 연산의 경우 앞 문장이 거짓이면 뒷 문장을 연산하지 않고
|| 연산의 경우는 앞 문장이 참이면 뒷 문장을 연산하지 않는다.
----------------------------------------------------

부호 연산자로서의 +, -
----------------------------------------------------
산술 연산이 아닌 부호 연산자로서 +, -의 의미는 다음과 같다

- : 부호를 바꾸는 역할을 한다.
+ : 딱히 하는 일이 없다(?)

하지만 +도 엄연한 연산이라 다음 문장은 에러가 발생하게 된다.

short n2 = 7;
short n3 = n2    //성공
short n3 = +n2;    //에러

정수는 연산이 이뤄지기에 앞서 int형으로 변환된다.
따라서 +n2는 int형이 되고 이것을 short형인 n3에 대입하려 하니
에러가 발생한다.

short n3 = (short)+n2 의 경우에는 에러가 발생하지 않는다.
----------------------------------------------------

증가, 감소 연산자
----------------------------------------------------
++ : 피연산자에 저장된 값에 1을 더해준다.
-- : 피연산자에 저장된 값에서 1을 빼준다.

증감연산자가 피연산자의 앞에 붙으면 증감 연산을 먼저 하고
뒤에 붙으면 다음 행으로 넘어가면서 변경된다.
----------------------------------------------------

비트 연산자
----------------------------------------------------
& : 비트 단위로 and 연산
| : 비트 단위로 or 연산
^ : 비트 연위로 xor 연산
~ : 비트 단위로 not 연산

비트 단위 연산은 2진수로 변환된 후 수행되며
xor 연산은 두 피연산자의 비트가 같을 때 0을
다를 때 1을 반환하는 연산이다.
----------------------------------------------------

비트 쉬프트(Shift) 연산자
----------------------------------------------------
<< :
>> :
>>> :

다음에 계속

by 夜動王 에리 | 2012/04/04 16:49 |  Java  | 트랙백 | 덧글(0)

자바 3장 - 상수와 형 변환

상수의 특징 - 상수를 리터럴(literal)이라고도 한다
-------------------------------------------------------------
1. 이름이 없다.
2. 이름이 없으므로 메모리에 저장된 상수의 값을 변경시킬 수 없다.
3. 상수가 정수인 경우 int로 표현되며 실수인 경우 double로 표현된다.

ex) long num = 10000000000    //에러 발생

변수 num은 long형이므로 100억을 담기에 충분하지만
정수 상수는 int형이므로 10000000000을 담을 수 없다.
따라서 다음과 같이 선언해야 한다.

long num = 10000000000L    //OK

실수 또한 마찬가지이다.

float num2 = 12.45    //에러 발생
float num2 = 12.45F    //OK
-------------------------------------------------------------

형 변환
-------------------------------------------------------------
자동(묵시적) 형 변환과 수동(명시적) 형 변환이 있다.

ex) double num1 = 20    //OK

위의 경우 20은 정수이므로 자동으로 double로 변환되어 대입된다.

ex) int num2 = 20.5    //에러 발생

위의 경우 20.5는 실수인데 num2는 정수형이라 자동으로 형 변환이
발생하는 경우 데이터가 소실되므로 에러가 발생하게 된다.


자바의 자동 형 변환 규칙은 다음과 같다

byte -> short -> int -> long -> float ->double
char -> int

아래에서 위로는 자동 형 변환이 가능하지만 위에서 아래로는 수동으로만 가능하다.
수동 형 변환법은 다음과 같다.

long num1 = 2147483648L
int num2 = (int)num1    //OK

long형인 num1을 정수형으로 변환시켜 num2에 대입하므로
데이터는 소실되지만 에러는 발생하지 않는다.

형 변환도 하나의 연산이며 위의 경우 num1에 저장된 데이터가 변경되는 것이 아니라
num1에 저장된 데이터를 int형으로 변경한 임시 데이터가 num2에 대입된다.

by 夜動王 에리 | 2012/04/03 15:11 |  Java  | 트랙백 | 덧글(0)

자바 2장 - 변수와 자료형

자료형
--------------------------------------------------------
자료형 : 크기 : 범위

참과 거짓
boolean : 1바이트 : true, false

문자
char : 2바이트 : 모든 유니코드 문자   ※ C, C++ 에서는 1바이트이다. 혼동하지 말 것

정수
byte : 1바이트 : -128 ~ 127
shor : 2바이트 : -32768 ~ 32767
int : 4바이트 : -2147483648 ~ 2147483647 (21억 정도)
long : 8바이트 : -9223372036854775808 ~ 9223372036854775807 (920경 정도)

실수
float : 4바이트 : +- (1.40 * 10^-45 ~ 3.40 * 10^38)
double : 8바이트 : +- (4.94 * 10^-324 ~ 1.79 * 10^308)
--------------------------------------------------------

변수 작명법
--------------------------------------------------------
1. 변수의 이름은 숫자로 시작할 수 없다
2. $와 _ 이외의 특수문자는 사용할 수 없다.
3. 키워드(예약어)는 변수의 이름으로 사용할 수 없다.
--------------------------------------------------------

음수의 표현 방식
--------------------------------------------------------
2의 보수를 사용한다.
※1의 보수 - 모든 비트를 반전한다(0 -> 1, 1 -> 0) 
※ 2의 보수 - 1의 보수에서 1을 더하면 된다.
ex) 5(10진수) - 0101(2진수) - 1010(1의 보수) - 1011(2의 보수)
0101 + 1011 = 0000 가 되므로 음수가 되는 것이 맞다.
--------------------------------------------------------

실수의 표현 방식
--------------------------------------------------------
정밀도를 포기하고 표현의 범위를 넓혔다.
+- (1.m) * 2^(e - 127)
수식은 위와 같은데 16비트 중 최상위 비트는 부호, 그 다음 5비트는 e, 나머지가 m 부분이다.
--------------------------------------------------------

실수에 대한 e표기법 및 16진수와 8진수의 표기법
--------------------------------------------------------
0.0012 = 1.2e-3
1200.0 = 1.2e+3

10진수 : 1234
16진수 : 0x1234
8진수 : 01234
--------------------------------------------------------

by 夜動王 에리 | 2012/04/03 14:22 |  Java  | 트랙백 | 덧글(0)

자바 스크립트 - 테이블에 구구단 출력하기

Java Script 내부에 HTML 태그를 넣어서 출력한다
----------------------------------------------
<!DOCTYPE HTML>
<html>
 <head>
 </head>

 <body>
 
  <center>
  <h1>[구구단 출력표]</h1>
  </center>

  <ul>
   <li> Table : bgcolor = GREEN : cellpadding = 5
   <li> TD : bgcolor = YELLOW
  </ul>

 <table bgcolor="green" cellpadding="5">
 <tr align=center bgcolor=#99cc00>
  <td> 2단 </td>
  <td> 3단 </td>
  <td> 4단 </td>
  <td> 5단 </td>
  <td> 6단 </td>
  <td> 7단 </td>
  <td> 8단 </td>
  <td> 9단 </td>
 </tr>

 <s-ript language="javas-ript">
 <!--
 
 var i, j;

 for(i = 1; i <10; i++)
 {
  document.write("<tr align=center>");
  for(j = 2; j <10; j++)
  {
   document.write("<td bgcolor=#99cc00>");
   document.write(j + "*" + i + "=" + i * j);
   document.write("</td>");
  }
  document.write("</tr>");
 }

 //-->
 </script>

 </table>

 </body>
</html>

by 夜動王 에리 | 2012/03/08 12:36 |  Java Script  | 트랙백 | 덧글(0)

자바 스크립트 - 입력, 경고, js 파일 불러오기, window status에 메시지 표시

입력문(prompt)
--------------------------------------------
<script>
    var width = prompt('너비를 입력하시오', '');
    var height = prompt('높이를 입력하시오', ''); 
    var area = width * height;

    alert('넓이는 ' + area + '입니다');    //경고창 출력 
</script>
--------------------------------------------

다른 js 파일에서 함수 호출하고 window status에 메시지 표시
-------------------------------------------- 
<s-ript language="javas-ript" src="javas-ript.js">

</script>

<a href="javas-ript:HelloWorld()" onMouseOver="window.status='Hello, World!!'; return true"> Click! </a>


javascript.js의 내용

function HelloWorld()
{
   alert('Hello, World!');
}
--------------------------------------------

by 夜動王 에리 | 2012/02/21 17:11 |  Java Script  | 트랙백 | 덧글(1)

◀ 이전 페이지          다음 페이지 ▶