본문 바로가기

Java

표현식과 연산자

반응형

산술연산자

연산자

의미 

 *  곱하기
 /  나누기
 +  더하기 , 양수
 -

 빼기 , 음수

 %  나머지
 ++  1증가
 --  1감소

곱하가(*), 나누기(/)와 나머지(%) 연산자는 더하기(+)와 빼기(-) 연산자보다 우선순위를 갖는다. 괄호는 표현식을 묶는데 사용한다.

 

public class Oper1{

    public static void main(String[] args){

        System.out.println(1 + 2 * 3); // 7
        System.out.println((1 + 2) * 3); // 9

    }
}

++,-- 연산자의 두가지 사용법(연산자의 위치가 앞에 있는 경우와 뒤에 있는경우)

 

public class Oper2{

    public static void main(String[] args){

    int x = 1;
    int y = 0;
    y = x++; // 표현식이 끝나면 x를 1증가

    System.out.println(x);
    System.out.println(y);

    x = 1;
    y = 0;
    y = ++x; // x를 1증가후 표현식을 실행

    System.out.println(x);
    System.out.println(y);

    }
}

다음과 같은 표현식의 경우 ++,--를 사용하여 코드를 간략하게 만들 수 있다.

x = x + 1; // x++;

 

※코드를 간략하게 만드는 것이 프로그래머들에 있어 중요한 것임은 분명하지만 이것은 저장 매체의 가격이 비싼 시절의 이야기이다. 간결화된 코드보다는 명료한 코드(가독성 높은)를 고민하는 것이 휠씬 가치있는 일이다.

 

System.out.println();

콘솔에 데이터를 출력하기 위해서 사용 된다.  System이라는 것이 본인의 컴퓨터라 생각하면 되고 out은 컴퓨터의 대표적인 출력장치인 모니터(콘솔)이라 생각하면 된다.

println()은 "콘솔에 ()속 내용을 출력후 새라인으로 이동하라"라고 하는 명령행이다. print()도 있는데 출력후 한줄 뛰우지 않는다.

자세한 내용은 뒤에서 학습한다.

 

문자

char형식은 하나의 문자를 나타낸다. 문자는 작은 따옴표(')로 감싸진다. 'A', 'a', '?'는 문자 상수이다. char형식은 키보드에서 입력되는 문자를 나타내야 하는데 엔터키라던지 탭키, 백스페이스 키등은 표현할 방법이 없다. 그래서 이러한 문자들을 표현하기 위해 백슬래시(원도우에서는 \)를 이용하여 표현한다. 예를 들어  '\t'는 탭을 나타내는데 사용되고, '\n'는 엔터키(개행문자)이다.  

 

public class CharTest{

    public static void main(String[] args){

    System.out.println(1);
    System.out.print('A');
    System.out.print('\n'); 

    }
}

자주사용하는 특수문자

문자 

 의미 

\b 

 커서를 문자의 왼쪽으로 이동시킨다

\n

 새로운 라인으로 이동한다

\t 

 다음 탭스탑으로 이동한다

\' 

 문자 '

\"

 문자 "

\\

 문자 \

 

문자열

큰따옴표를 사용하여 표현한다. 자세한 내용은 뒤부분에서 다시 학습한다.

public class StringTest{

    public static void main(String[] args){

    System.out.println("hello");
    }
}

 

좀더 ... (다른 컴퓨터언어의 경험이 있거나 자바가 처음이 아니면.)

 

자바의 연산자(학습을 진행하다보면 한번씩은 사용해 볼것이다)

 

우선 순위

 연산자

 연산 대상

 연산 내용

 1

 []

 .

 ++

 --

 +,-

 ~

 !

 new

 (type)

 모든 데이터형

 레퍼런스형

 정수형, 실수형

 정수형, 실수형

 정수형, 실수형

 정수형

 논리형

 레퍼런스형

 모든 데이터형

 배열요소 지정

 객체멤버 지정

 값 증가

 값 감소

 부호의 사용

 비트 반전

 논리 반전

 객체 생성

 캐스팅 연산자

 2  *, /, %  정수형, 실수형  곱셈, 나눗셈, 나머지 
 3

 +, -

 +

 정수형, 실수형

 String객체 

 덧셈, 뺄셈

 문자열 결합

 4

 <<

 >>

 >>>

 정수형

 정수형

 정수형

 비트 좌이동

 비트 부호화 우이동

 비트 비부호화 우이동 

 5

 <,<=,>,>=

 instanceof

정수형, 실수형

레퍼런스형

 값 대소 비교

 객체타입비교

 6

 ==

 !=

 ==

 !=

 기본 데이터형

 기본 데이터형

 레퍼런스형

 레퍼런스형

 값 비교

 값 비교

 레퍼런스 비교

 레퍼런스 비교

 7

 &

 &

 정수형

 논리형

 비트 AND

 논리 AND

 8

 ^

 ^

 정수형

 논리형 

 비트 XOR

 논리 XOR

 9

 |

 |

 정수형

 논리형

 비트 OR

 논리 OR

 10  &&

 논리형

 조건 AND
 11  ||

 논리형

 조건 OR

 12  ? :  논리형, 모든 데이터형

 조건 삼항

 13

 =, *=, /=, %=, +=, -=,

 <<=, >>=, >>>=,

 &=, ^=, |=

 모든 데이터형

 대입연산

 

연산자의 우선순위가 있지만, ()괄호를 사용해 코드를 명료하게 만들어 주는 것이 더 중요하다. 

 


좀 좀더 ... (몰라도 되는것, 알면 좋은것.)

 

오버플로우 : 다룰수 있는 수의 범위를 벗어난는 것쉬프트 연산자

public class Overflow {

    public static void main(String[] args){

    int x = 1000000;
    int y = 1000000;
    System.out.println(x*y); // 오버플로우 발생

    }
} 

쉬프트 연산자는 정수형 변수에만 사용할 수 있는데, 2진수의 정수로 표현한 수를 오른쪽 또는 왼쪽으로 이동시키는 연산자이다.

<< : 피연산자의 부호에 상관없이 자리를 왼쪽으로 이동시키며 빈칸을 0으로 채운다.

>> : 피연산자가 음수인 경우 부호를 유지시키기 위해 자리를 오른쪽으로 이동 시키며 빈칸을 1로 채운다.

>>> : 피연산자의 부호에 상관없이 자리를 오른쪽으로 이동시키며 빈칸을 0으로 채운다.

 

오른쪽으로 n자리를 이동하면 피연산자를 2의n승으로 난눈 것과 같은 결과를, 왼쪽으로 n자리를 이동하면 2의n승으로 곱한 것과 같은 결과를 얻을 수 있다.

public class ShiftTest{

    public static void main(String[] args){

    System.out.println(10  << 2);
    System.out.println(10 * 4);

    }
} 

출처-http://zeroday.tistory.com/10

반응형

'Java' 카테고리의 다른 글

jdk 1.6 다운로드 링크  (0) 2014.04.11
RSS XML DOM 파싱  (0) 2013.11.13
Java? 객체지향언어?  (0) 2013.06.02
JVM 메모리구조  (3) 2013.05.28
프로그램의 개념과 실행  (0) 2013.05.28