[JAVA] 계산을 쉽게 도와주는 연산자들

JAVA/JAVA Programming 2015. 3. 5. 15:33

출처 : 자바의신 VOL.1 기초 문법편





계산을 쉽게 도와주는 연산자들



 자바에서 제공하는 연산자들을 분류해 보면 다음과 같이 나눌 수 있다.





■ 연산자의 종류


 ● 할당 연산자 : =


 ● 사칙 연산자 : +, -, *, /, %


 ● 대입 연산자 : +=, -=, *=, /=, %=


 ● 단항 연산자 : +, -, ++, --(여기서 +와 -는 양수와 음수를 나타내는 연산자임)


 ● 비교 연산자 : ==, !=, >, <, >=, <=


 ● 조건 논리 연산자 : %5, ||


 ● 논리 연산자 : !, &, |, ^


 ● 삼항 연산자 : ? :


 ● Bitwise 연산자 : &(AND), |(OR), ^(XOR), ~(NOT)


 ● Bit 이동 연산자 : <<, >>, >>>


 ● Bit 대입 연산자 : &=, |=, ^=, <<=, >>=, >>>=



 여기서 삼항 연산자는 다음과 같이 사용하면 된다.


       변수 = (boolean 조건식) ? true일때의 값 : false일때의 값 ;




■ 연산자 연산 순위(같은 레벨에 있는 연산자는 연산 우선 순위가 동일함)


레벨

연산자

한글 설명

영문 설명

결합 방향

01

 []
 배열 요소 접근
 access array element

좌 → 우

 .
 객체 변수 접근
 access object member
 ,
 for 루프의 초기화시에만
 comma
 ( )
 메소드 호출

 invoke a method

 ++
 ×++로 사용할 경우
 post-increment
 --
 ×--로 사용할 경우
 post-decrement

02

 ++

 ++×로 사용할 경우

 pre-increment

우 → 좌

 --

 --×로 사용할 경우

 pre-decrement

 +

 +×

 unary plus
 -
 -×

 unary minus

 !

 logical NOT

 ~

 bitwise NOT

03

 ( )

 형 변환시 소괄호

 cast

우 → 좌

 new

 객체 생성
 object creation

04

 *, /, %

 배수 연산
 multiplicative

좌 → 우

05

 +, -
 증감 연산
 additive

좌 → 우

 +
 문자열 더하기

 string concatenation

06

<<, >>, >>>
 Bit 이동 연산
 shift

좌 → 우

07

 <, <=, >, >=
 비교 연산
 relational

좌 → 우

 instanceof

 타입 비교 연산
 type comparison

08

 ==, !=
 비교 연산
 equality

좌 → 우

09

 &

 비교 AND

 bitwise AND

좌 → 우

10

 ^

 비트 XOR

 bitwise XOR

좌 → 우

11

 |

 비트 OR

 bitwise OR

좌 → 우

12

 &&

 조건 논리 AND

 conditional AND

좌 → 우

13

 ||

 조건 논리 OR

 conditional OR

좌 → 우

14

 ? :

 삼항 연산

 conditional

우 → 좌

15

 =, +=, -=, *=, /\, %=, &=, ^=, |=, <, <=, >, >=

 할당 연산

 assignment

우 → 좌

※ 여기서 결합 방향은 동등한 연산이 있을 때의 방향을 이야기한다.



 예를 들어 2 * 3 / 4는 좌에서 우로 연산하므로, (2 * 3) /4와 동일하다. 반대로 x = y = 3과 같이 연산을 하면 x = (y = 3)과 같기 때문에 y에 3을 할당하고, 그 다음에 x에 3을 할당한다. 즉, 보이지 않는 괄호가 우선 발생하는 방향을 의미한다.

[JAVA] 어노테이션을 선언할 때 사용하는 메타어노테이션들

JAVA/JAVA Programming 2015. 2. 26. 16:49

출처 : 자바의신 VOL.1 기초 문법편





어노테이션을 선언할 때 사용하는 메타어노테이션들



 JDK에 이미 포함되어 있는 어노테이션 중 어노테이션 선언시 사용하는 메타 어노테이션에는 @Target, @Retention, @Documented, @Inherited의 4가지가 있다.






■ JDK에 선언되어 있는 어노테이션


 ● @Override : Override한다는 것을 명시적으로 선언할 때 사용한다.

 ● @Deprecated : 더 이상 사용하지 않아 Depecated 되었다는 것을 명시적으로 선언할 때 사용한다.

 ● @SupressWarnings : 컴파일러의 경골르 무시하도록 하려고 할 때 사용한다.






Target 어노테이션에서 사용하는 ElementType의 종류


요소타입

대상

 CONSTRUCTOR

 생성자 선언시

 FIELD

 enum 상수를 포함한 필드(field)값 선언시

 LOCAL_VARIABLE

 지역 변수 선언시

 METHOD

 메소드 선언시

 PACKAGE

 패키지 선언시

 PARAMETER

 매개 변수 선언시

 TYPE

 클래스, 인터페이스, enum 등 선언시


 ● 두 개 이상의 ElementType을 선언할 경우에는 다음과 같이 배열을 선언할 때처럼 중괄호로 묶어 사용함.


@Target({ElementType.METHOD, ElementType.Type})





Retention 어노테이션에 사용하는 RetentionPolicy의 종류

요소 타입

대상

 SOURCE

 어노테이션 정보가 컴파일시 사라짐

 CLASS

 클래스 파일에 있는 어노테이션 정보가 컴파일러에 의해서 참조 가능함.

 하지만, 가상 머신(Virtual Machine)에서는 사라짐

 RUNTIME

 실행시 어노테이션 정보가 가상 머신에 의해서 참조 가능


[JAVA] 예외를 처리하자

JAVA/JAVA Programming 2015. 2. 26. 16:13

출처 : 자바의신 VOL.1 기초 문법편





예외를 처리하자



 프로그램에서의 예외 상황은 언제든지 발생할 수 있다. 자바에서 발생 가능한 예외를 처리하는 것은 try-catch 문장이다.





try-catch 기본문구

try {
	
	// 예외가 발생 가능한 문장
}

catch(예외1 e1) {
	
	// 예외1이 발생했을 때 처리 문장
}

catch(예외2 e2) {
	
	// 예외2가 발생했을 때 처리 문장
}

finally {
	
	// try나 catch가 어떻게 수행되었든 간에 수행되는 문장
}



자바에서 사용하는 예외의 종류


 ● checked exception

    -. try-catch로 묶어줘야 하는 예외이며, 컴파일시 예외 처리 여부를 체크한다.

 ● error : 자바 프로세스에 영향을 주는 예외이며, 실행시 발생한다.
 ● runtime exception 혹은 unchecked exception

    -. try-catch로 묶지 않아도 컴파일시 체크를 하지 않는 예외이며, 실행시 발생한다.



throw와 throws


 ● throw : 예외 객체를 던지기 위해서 사용한다.

 ● throws : 예외가 발생하면 던질 것이라고 메소드 선언시 사용한다.

 ● 메소드를 선언할 때 매개 변수 소괄호 뒤에 throws라는 예약얼르 적어 준 뒤 예외를 선언하면,

    해당 메소드에서 선언한 예외가 발생할 때 호출한 메소드로 예외가 전달된다.

 ● 두 가지 이상의 예외를 던지게 된다면 implements처럼 콤마로 구분하여 예외 클래스 이름을 적어준다.

 ● try 블록 내에서 예외를 발생시킬 경우에는 throw라는 예약어를 적어 준 뒤 예외 객체를 생성하거나, 생성되어 있는 객체를 명시한다.

 ● throw한 예외 클래스가 catch 블록에 선언되어 있지 않거나, throws 선언에 포함되어 있지 않음녀 컴파일 에러가 발생한다.

 ● catch 블록에서 예외를 throw할 경우에는 메소드 선언의 throws 구문에 해당 예외가 정의되어 있어야 한다.

[JAVA] 자주 사용하게 되는 상속

JAVA/JAVA Programming 2015. 2. 26. 12:01

출처 : 자바의신 VOL.1 기초 문법편





자주 사용하게 되는 상속



 자 바 개발시에는 상속을 자주 사용하게 된다. 만약, 자주 사용하지 않고 상속되어 있는 클래스가 적다면, 리팩토링이라는 단계를 거쳐서 반복되는 메소드를 상위 클래스로 구분해 주는 것이 좋다. 그래야 코드의 재사용성과 유지 보수성, 가독성이 높아진다. 상속 관례가 발생했을 때 생성자, 메소드, 변수는 각각 어떻게 지정하고 동작하게 되는지 정리해 보자.




생성자

 ● 자식 클래스의 생성자가 호출되면 자동으로 부모 크래스의 매개 변수가 없는 기본 생성자가 호출됨.

    명시적으로 super( )라고 지정 가능하다.
 ● 부모 클래스의 생성자를 명시적으로 호출하려면 super( )를 사용하면 된다.





메소드

 ● 부모 클래스에 선언된 메소드들이 자신의 클래스에 선언된 것처럼 사용 가능하다(private 제외).
 ● 부모 클래스에 선언된 메소드와 동일한 시그네쳐를 사용하여 메소드 overriding이 가능하다.
 ● 부모 클래스에 선언되어 있지 않은 이름의 새로운 메소드 선언이 가능하다.





변수

 ● 부모 클래스에 private로 선언된 변수를 제외한 모든 변수가 자신의 클래스에 선언된 것처럼 사용 가능
 ● 부모 클래스에 선언된 변수와 동일한 이름을 가지는 변수 선언 가능(권장하지 않음)
 ● 부모 클래스에 선언되어 있지 않는 이름의 변수 선언 가능


[JAVA] 메소드의 선언

JAVA/JAVA Programming 2015. 2. 26. 11:42

출처 : 자바의신 VOL.1 기초 문법편





메소드의 선언



메소드는 자바에서 클래스의 행위(behavior)를 처리하는 데 사용됨


기본적인 메소드의 선언 예

public void method(String param, int … params) {
	
	// 메소드 내용
}


● method라는 이름을 갖는 메소드다.

● public과 같은 제어자 선언이 가능하다.

● void로 선언되어 있어 리턴된느 값이 없다.

● param이라는 String 타입 매개 변수를 가진다.

● params라는 여러 개의 int 타입을 콤마로 구분하여 매개 변수로 지정 가능