Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Archives
Today
Total
관리 메뉴

기록 저장소

[Java #4] Operator 본문

kitri 노트/java

[Java #4] Operator

resault 2019. 3. 12. 16:37

[ 연산자 (Operator) ]

* 괄호 연산자가 가장 높은 우선순위를 가지며, 대입 연산자가 가장 낮은 우선순위를 가짐
* ~ (틸드), 비트 논리 연산자는 넘어갈 예정. 특히 비트는 자바에서 쓸일 없음

1. 단항연산자

▷ 종류

- 변수++ : 선실행 후 1 증가
- ++변수 : 선 1 증가 후 실행
- +, - : 양수, 음수 기호
- ! : not 연산자. boolean에만 쓸 수 있음
- (자료형) : casting


▷ 예제
public class OperTest1
{
    public static void main(String[] args)
    {
        int x = 10;
        System.out.println(x);
        System.out.println(x++);
        System.out.println(--x);
        System.out.println(x++);
        System.out.println(++x);
        System.out.println(x--);
        System.out.println(--x);
        System.out.println(x++);
        System.out.println(x);
    }
}

[ 형변환 ]

- 각 문자에는 아스키코드 값이 있기 때문에 숫자와 형변환이 가능하다.
cf. boolean의 경우 값은 true/false 뿐이기에 숫자와 형변환이 불가함

boolean b = true;
int z = b;    //error


▷ 강제 형변환 : casting 연산을 통해 자료형을 변환시킴. 크기가 작은 자료형에 크기가 큰 자료형을 대입할 때 사용함
- 기본DT는 기본DT끼리, 참조DT는 참조DT끼리
- 값이 같은 형인 것만 변환 가능(ex. char와 int, int와 double은 가능 but, boolean과 int는 불가)

int z = 30;
double d = z;
//z = d;    //error
z = (int) d;

char c = 'a';
System.out.println("(int)c == " + (int)c);


▷ 자동 형변환: 크기가 큰 자료형에 크기가 작은 자료형을 대입할 때 자동으로 형변환이 되어 에러 발생하지 않음

int y = c;
System.out.println("y == " + y);

* 컴파일 에러는 자바 문법이 틀렸을 경우 발생함
* casting operater는 단항연산자임
        




2.이항연산자

1) 산술연산자

▷ 종류 : +, -, *, /, %


▷ 예제
public class OperTest2
{
    public static void main(String[] args)
    {
        int num1 = 13;
        int num2 = 5;
        int num3 = num1 + num2;
        System.out.println(num1 + "+" + num2 + "=" + num1 + num2);    // num1 + .... num1 이라는 문자열과 num2가 연결됨
        System.out.println(num1 + "+" + num2 + "=" + (num1 + num2));    // (num1 + num2)가 산술연산되고, 앞의 문자열과 연결됨


        num3 = num1 - num2;
        System.out.println(num1 + "-" + num2 + "=" - num3);// 문자열을 - 할 수 없으므로 에러 발생함
        System.out.println(num1 + "-" + num2 + "=" + (num1 - num2));


        num3 = num1 * num2;
        System.out.println(num1 + "*" + num2 + "=" + num3);
        System.out.println(num1 + "*" + num2 + "=" + num1 * num2);// 사칙연산 순서에 따라 뒤의 *이 먼저 산술연산되고 앞의 문자열과 연결됨


        num3 = num1 / num2;
        System.out.println(num1 + "/" + num2 + "=" + num3);
        System.out.println(num1 + "/" + num2 + "=" + num1 / num2);


        num3 = num1 % num2;
        System.out.println(num1 + "%" + num2 + "=" + num3);
        System.out.println(num1 + "%" + num2 + "=" + num1 % num2);
    }
}


- int끼리 연산 >> int / int와 double 연산 >> double

int discountRate = 30;

System.out.println(discountRate*10.0); //300.0
System.out.println(discountRate*10); //300
System.out.println(discountRate/10.0); //3.0
System.out.println(discountRate/100); //0
System.out.println(discountRate+10.0); //40.0
System.out.println(discountRate-10.0); //20.0


double discountRate = 30.0;

System.out.println(discountRate*10.0); //300.0
System.out.println(discountRate*10); //300.0 
System.out.println(discountRate/10.0); //3.0
System.out.println(discountRate/10); //3.0
System.out.println(discountRate+10); //40.0
System.out.println(discountRate-10); //20.0


2) 비교연산자

- >, >=, <, <=, ==, !=
    * 오라클과 달리 ^=, <> 는 없음
- instance of : 객체(object)의 type 비교



3) 논리연산자
    * 비트 논리 연산자는 넘어갈 것!

- && : and
- || : or

* 자바에서의 Null 비교는 불가함



3. 삼항연산자

* if문에 비해 가독성은 떨어지지만, 문법검사를 하는 if문에 비해서는 속도가 빠름
다만, 의미가 있는 정도의 속도차이는 아님 (but, 삼항연산자를 선호하는 회사도 있다고 함)


▷ 조건(condition) ? 값1 : 값2;
    >> 조건 true : 값1 / 조건 false : 값2

- 조건문 뒤에 실행문은 올 수 없음
    * 실행문을 넣게 되면, 우선순위상 실행문 이후에 대입이 되므로


▷ 예제
public class OperTest4 {
    public static void main(String[] args)    {
        int jumin = 2;
        String gender = jumin % 2 == 0 ? "여자" : "남자";
        System.out.println("주민번호가 " + jumin + "인 당신은 " + gender + "입니다.");
        
        //점수가 80이상이면 합격, 불합격
        //당신의 점수는 xx이므로 xx입니다.
        int score = 80;
        String result = score >= 80 ? "합격" : "불합격";
        System.out.println("당신의 점수는 " + score + "이므로 " + result + "입니다.");
    }
}




4. 대입연산자

▷ 일반대입연산 : =

▷ 연산 후 대입연산 : +=, -=, *=, /=, %=

- 'x = x + 5'는 연산이 두번 이루어짐. 같은 의미의 대입연산자를 사용하면 'x += 5' 한번의 연산으로 결과가 도출됨
- +=의 경우 문자열 연결에도 사용할 수 있음

▷ 예제
//x의 값을 1증가시키는 방법?
x = 10;
x = 10 + 1;
System.out.println(x);

x = 10;
x = ++x;
System.out.println(x);

x = 10;
x = x++;
System.out.println(x);

x = 10;
x += x;
System.out.println(x);

'kitri 노트 > java' 카테고리의 다른 글

[Java #6] 조건문_switch  (0) 2019.03.14
[Java #5] 조건문_if  (0) 2019.03.14
[Java #3] variable & primitive type  (0) 2019.03.11
[Java #2] Java 파일 실행방법 & 주석  (0) 2019.03.08
[Java#1] Java Setting  (0) 2019.03.08