ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 연산자(Operator)
    언어/JAVA 2022. 9. 7. 17:08

    연산의 우선순위

    1. ( )

    2. 변수의 앞에 사용되었다는 가정하에 ++, --

    3. 곱셈, 나눗셈, 나머지

    4. 덧셈, 뺄셈

    5. 비교(관계)연산자

    6. 논리연산

    7. 대입연산


    1. 산술연산자

    int n=50; // 피연산자로 쓰인 변수와 연산의 결과를 저장할 변수가 같은 연산
    n=n+10;
    // 현재 n값(50)과 두번째 피연산자인 10이 CPU로 전달되어 덧셈됨
    // 연산결과가 돌아와서 다시 n변수에 저장됨
    // 연산에 참여했던 n값 50은 사라지고, 연산 결과인 60이 n변수에 남음
    // 간략하게 다음과 같이도 사용함-> n+=10

     

     

    n++, n--

    -특정 변수의 값을 1 증가하거나 감소시킬 수 있는 연산자

    -대입연산자(=)를 사용하지 않고 값을 변경함

    // 단항연산일때는 ++나 --를 앞 또는 뒤에 어느 곳에 붙여도 똑같이 연산됨
    n=50;
    ++n;
    System.out.println("++n -> n: "+n);
    
    
    // ++, -- 연산 기호가 앞 또는 뒤에 있을 때 차이가 나는 경우
    // 다른 연산에 섞여 있을 때 
    
    // ++, -- 연산이 뒤쪽에 있는 경우
    //                 -> 현재 값으로 속해있는 연산에 참여 후, 1 증가
    n=10;
    System.out.println("현재 값: "+n);
    int k=n++;
    System.out.println("k: "+k); // 10 출력
    System.out.println("n: "+n); // 11 출력
    
    // ++, -- 연산이 앞쪽에 있는 경우-> 1 증가 후 다른 연산에 참여
    n=10;
    System.out.println("현재 n: "+n);
    k=++n;
    System.out.println("k: "+k); // 11출력
    System.out.println("n: "+n); // 11출력

     

    2. 관계연산자(비교연산자)

    -좌향기준 >(초과), <(미만), >=(이상≥), <=(이하≤), ==(같다), !=(같지않다)

    -좌향과 우향의 크기를 비교하여 true/false 값이 결과가 되는 연산

    -관계식이 올바른 경우 true, 관계식이 틀린 경우 false가 연산의 결과가 됨

    -문자(char) 데이터의 비교는 각 데이터가 갖는 ASCII code 값으로 비교

    String

    -할 수 있는 비교 연산은 ==와 != 둘 밖에 없으며 이마저도 우리가 원하는 결과로 연산되지 않음. 그래서 ==와 != 연산이 오류없이 가능은 하지만 이도 사용은 하지 않음

    -다른 자료형과 다르게 변수가 직접 문자들을 저장하고 있지 않음

    -문자들은 별도의 장소에 저장되고 변수는 저장위치 값만 저장하고 있어서 변수들 간의 비교는 저장위치정보의 비교이므로 연산이 의미가 있지도 않고 가능하지도 않음

    -자료 간의 비교는 별도로 만들어져 있는 도구를 이용

    String s1="1234", s2="987";
    int r=s1.compareTo(s2);
    System.out.printf("%s>%s -> %d\n",s1,s2,r);
    r=s2.compareTo(s1);
    System.out.printf("%s>%s -> %d\n",s2,s1,r);
    // s1.compareTo(s2)의 경우 s1이 크면 결과가 양수로 계산됨 
    // 반대로 s2가 크면 음수로 계산됨
    // 앞글자(s1)에서 뒷글자(s2)의 아스키코드 값을 뺄셈한 결과를 얻음
    
    r=s1.compareTo(s2);
    System.out.printf("%s>%s -> %b\n",s1,s2, r>0);
    System.out.printf("%s>%s -> %b\n",s2,s1, r<0); 
                                    // String은 앞 문자순으로 비교
    
    boolean b=s1.equals(s2); // 둘이 같으면 true, 틀리면 false
    System.out.printf("%s==%s -> %b\n", s1,s2,b);
    b=s1.equals("1234");
    System.out.printf("%s==%s -> %b\n", s1,"1234",b);

     

    3. 논리연산자

    -다수개의 관계(비교)연산식 결과(true/false) 값을 연산하여 하나의 boolean 값을 결과로 얻는 연산

    -피연산자: boolean, 연산의 결과: boolean

    AND 연산자(&&)

    -좌항과 우항의 관계(비교)식 결과 또는 boolean 값이 모두 true인 경우 true과 결과값

    -좌항과 우항 중 하나라도 false 경우 false가 결과값

    -좌항의 비교연산 결과가 false인 경우 우항의 식을 비교하지 않음

    System.out.printf("F&&F=%b\n",false&&false);
    System.out.printf("T&&F=%b\n",true&&false);
    System.out.printf("F&&T=%b\n",false&&true);
    System.out.printf("T&&T=%b\n",true&&true);

     

    OR 연산자(||)

    -좌항과 우항의 결과 또는 boolean 값이 모두 true인 경우 true과 결과값

    -좌항과 우항 중 하나라도 false 경우 false가 결과값

    -좌항의 결과가 ture인 경우 우항의 식을 비교하지 않음

    System.out.printf("F||F=%b\n",false||false);
    System.out.printf("T||F=%b\n",true||false);
    System.out.printf("F||T=%b\n",false||true);
    System.out.printf("T||T=%b\n",true||true);

     

    NOT 연산자(!)

    -단항연산자(피연산자가 1개임)

    -관계식의 결과를 반대값으로 결과를 냄 true→false, false→true

    boolean b1=false;
    System.out.printf("Not-%b=%b\n",b1,!b1);
    System.out.printf("Not-%b=%b\n",true,!true);

    ex) 윤년

    -해당 년도가 4의 배수이면서 100의 배수가 아니거나 400의 배수인 해

    // year변수에 저장된 년도가 윤년이면 true 평년이면 false
    int year1=2020, year2=2021;
    System.out.printf("2020 윤년인가요? %b\n", (year1%4==0)&&(year1%100!=0)||(year1%400==0));
    System.out.printf("2021 윤년인가요? %b\n", (year2%4==0)&&(year2%100!=0)||(year2%400==0));

    '언어 > JAVA' 카테고리의 다른 글

    [JAVA] if문  (1) 2022.09.07
    [JAVA] 자료형변환(Casting)  (0) 2022.09.07
    [JAVA] 변수(Variable)  (0) 2022.09.07
    [JAVA] println  (0) 2022.09.07
    [JAVA] 출력(자리수 조절)  (0) 2022.09.07

    댓글

Designed by Tistory.