Java Basic
환경
jdk : 소프트웨어 개발
jre : 실행 환경
다음 파일(HelloWorld.java)를 커멘드 상 실행하기
1
2
3
4
5
6
7
package com.ss.java_basic1
public class HelloWorld {
public static void main ( String [] args ){
System . out . println ( "Hello World" );
}
}
javac -d . HelloWorld.java 로 class 생성
java 클래스 이름으로 실행
Type
primitive : 정해진 크기의 memory size
reference : 정해질 수 없음, 공간의 주소를 저장
Type casting
묵시적 : 큰 type → 작은 type
명시적 : 작은 type → 큰 type
/** 코드 */
: Javadoc 사용
bit operator
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class Test {
public static void main ( String [] args ) {
// bit and
System . out . println ( "3 & 4 = " + ( 3 & 4 ));
// 0011
// & 0100
// ------
// 0000
// bit or
System . out . println ( "3 | 4 = " + ( 3 | 4 ));
// 0011
// | 0100
// ------
// 0111
// bit exclusive(xor)
System . out . println ( "3 ^ 4 = " + ( 3 ^ 4 ));
// 0011
// ^ 0100
// ------
// 0111
// bit not
System . out . println ( " ~ 4 = " + (~ 4 ));
// 0100
// ~
// ------
// 1011
}
}
Bit 연산
*,/ 연산자에 비해 처리 속도가 훨씬 빠름.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void main ( String [] args ) {
// <<
System . out . println ( "1 << 2 = " + ( 1 << 2 ));
// .... 0000 0001
// << .... 0000 0100 1 << 2 = 4
System . out . println ( "-16 >> 2 = " + (- 16 >> 2 ));
// .... 1111 0000
// >> .... 1111 1100 -16 >> 2 = -4
// >>>
System . out . println ( "7 >>> 2 = " + ( 7 >>> 2 ));
// 0000 .... 0000 0111
// >>> 0000 .... 0000 0001 7 >>> 2 = 1
System . out . println ( "-5 >>> 24 = " + (- 5 >>> 24 ));
// 1111 1111 1111 1111 1111 1111 1111 1001
// >>> 0000 0000 0000 0000 0000 0000 1111 1111
// -5 >>> 24 = -1
}
조건문
switch에서는 double 사용x ( String은 Java 버전 바뀜에 따라 됨)
break 없으면 계속 내려가면서 검사
‘A’와 65 둘 다 case에 있으면 겹치기 때문에 오류남.
삼항 연산
1
2
3
4
5
6
7
8
9
10
public static void main ( String [] args ) {
int N = 6 ;
boolean isEven = ( N % 2 == 0 ) ? true : false ;
N = ( ! isEven ) ? 10 : 20 ;
System . out . println ( N ); // 20
}
데이터 타입 문제
정수의 문제점 : 범위 문제(Overflow)
1
2
3
4
5
6
7
8
9
10
int i = Integer . MAX_VALUE ; // 가장 큰 수 알아보기
int i2 = i + 1 ;
System . out . println ( i ); // 2147483647
System . out . println ( i2 ); // -2147483648 , Integer.MIN_VALUE 가 되버림.
long l1 = i + 1 ;
long l2 = ( long )( i + 1 ); // 이미 깨진걸 사용해서 -2147483648가 나옴
long l3 = ( long ) i + 1 ; // 2147483648, 형 변환 후 연산
` 그렇지만 long도 무한대는 아니라 한계 존재…
→ 별도의 class(BigInteger 등)로 표현!
실수의 문제점 : 부동소수점
BigDecimal등을 이용할 수 있으나 무거움.
값의 동등 비교
기본형 : ==
객체형 : equals method