Skip to main content

Command Palette

Search for a command to run...

[Java] 삼항 연산자, 논리 연산자, char, 자료 형변환

Updated
•5 min read•View as Markdown
[Java] 삼항 연산자, 논리 연산자, char, 자료 형변환

쉬프트(shift) 연산

삼항연산자 (4)

import java.util.Scanner;
public class Ternary4 {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int random;

        System.out.print("값을 입력하세요 : ");
        random = sc.nextInt();

        sc.close();

        //int s = random % 2 == 0 ? 1 : (random % 3 == 0 ? 1 : 0);  <-- 연산자 중첩
        int s = (random % 2 == 0) || (random % 3 == 0) ? 1 : 0;          // <-- 논리연산자 && 사용

        System.out.println();
        System.out.println("입력하신 값 : " + random);
        System.out.println("결과 = " + s);

    }
}

삼항연산자 (5)

import java.util.Scanner;
public class Ternary5 {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        char one;            //변수 one : 키보드 입력 문자

        System.out.print("알파벳를 입력하세요 : ");
        one = sc.next().charAt(0);

        sc.close();

        String s = ('A' <= one && one <= 'Z') ? " 대문자 입력완료" : ('a' <= one && one <= 'z')? "소문자" :" 알파벳이 아닙니다.";

        System.out.println();
        System.out.println("입력한 값의 첫번째 자리 : " + one);
        System.out.println("결과 > " + s);
    }
}

비트 논리 부정연산자 (~)

  • 10진수 : 0,1,2,3,4,5,6,7,8,9

  • 16진수 : 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

  • 8진수 : 0,1,2,3,4,5,6,7

  • 2진수 : 0,1

  • 10진수

    • 1234 => 1 x 10^3 + 2 x 10^2 + 3 x 10^1 + 4 x10^0 => 1000 + 200 + 30 + 4
  • 16진수 => 10진수

    • 0xAOE => 10x16^2 + 0x16^1 + 14x16^0 => 2360 + 0 +14 => 2574
  • 8진수 => 10진수

    • 0125 => 1x8^2 + 2x8^1 + 5x8^0 => 64 + 16 + 5 => 85
  • 2진수 => 10진수

    • 01101 => 0x2^4 + 1x2^3 + 1x2^2 + 0x2^1 + 1x2^0 => 0 + 8 + 4 + 0 + 1 => 13
  • 10진수 => 2진수

  • 10진수 13을 2진수로 변환 1101

[1] 음수 10진수를 2진수로 표현하는 방법 => 2의 보수를 구한다. (1의 보수 + 1)

    • 예) 10진수 -8 을 2진수로 표현

      1. (부호-) 8을 2진수 ( 부호와 절대치)로

10001000

  1. (부호-) 1의 보수로 변환

11110111

  1. (부호-) 1의 보수에 1을 더한다.

11111000 => 2의 보수 (-8)

  • [2] 음수 2진수를 10진수로 변환 빨리확인하기 (Tip)

    • 예) 11111000를 10진수로 변환

      1. 앞에서부터 시작해서 마지막 1만 취하고 왼쪽 버린다.

1000

  1. 첫번째 자리만 -로 계하고 나머지를 +로 계산

1x-8 + 0x4 + 0x2 + 0x1 => -8

  • 예) 11110111를 10진수로 변환

    10111 => 1x-16 + 0x8 + 1x4 +1x2 + 1x1 => -23

package oop20230414;

public class Operator10 {

    public static void main(String[] args) {

        System.out.println(~0);
        // 0 0000000
        // 1 1111111
        System.out.println(~1);
        // 0 0000001
        // 1 1111110     ---> 부호를 먼저 생각하고 연속되는 1의 마지막 자리만 취한다. 
                                                // 111111은 버리고 10만 생각하면 2 , 거기에 부호 자리가
                                                // 1이므로 -, 그 결과 -2가 나온다.
    }
}

정수연산 : %, &, ^, |, ~ <<. >>, >>> , 비트 shift 연산자 : << , >> , >>>

public class Operator11 {

    public static void main(String[] args) {

        System.out.println(14<<2);
        System.out.println(14>>2);
        System.out.println(14>>>2);

        // << : Left Shift bitwise-operator
        // x << n : n회 좌측으로 이동
        // 1 : 0000 0001

        System.out.println(1<<1);
        System.out.println(1<<2);
        System.out.println(1<<3);

    }
}

자동 형변환 (1)

  • 자료형 변환 (Type Conversion) : (1) 연산과정, (2) 대입(=)

    1. 자동 형변환(묵시적 형변환) : 컴파일러
  • (연산과정) 자료형이 큰 쪽으로 변환 --> 자료손실이 일어나지 않게 하기 위해

  • int(4) < float(4) < double

  • byte --> short --> int --> long --> float --> double

    char

5.0 / 2 --> 2.5

double / int --> double

(대입) 좌측변수의 자료형 쪽으로 변환 ,

    int a = 10;

    long b = a;

    int --> long
  1. 강제 형변환(명시적 형변환) : 캐스팅 cast 연산자 ---(문법)--> (자료형) 연산대상)
    float a = 3.76f;    a = 3.76

    int b = (int) a;    b = 3

필요한 곳에서 일시적으로 변환 활용

import java.nio.file.spi.FileSystemProvider;

public class Cast1 {

    public static void main(String[] args) {

        int a = 3;
        long b = a;

        System.out.println(a + " " + b);

        float c = 2.4f;
        double d = c;

        System.out.println(c + " " + d);

        int e = 5;
        // byte f = e;    에러

        System.out.println(3/5);
        System.out.println(3/5.0);
        System.out.println(3.0/6);
        System.out.println(3.0/5.0);
    }
}

자동 형변환 (2)

public class Cast2 {

    public static void main(String[] args) {

        System.out.println((int)2.5);                 // (결과) 2
        System.out.println(2.5 + 3.7);                // (결과) 6.2
        System.out.println((int)2.5 + (int)3.7);    // (결과) 5
        //                 int <- double
        System.out.println((int)(2.5 + 3.7));        // (결과) 6

        // **int, char형**
        System.out.println((char)65);           // (결과) 'A'
        System.out.println((char)66);
        System.out.println((char)67);
        System.out.println((char)90);       // (결과) 'Z'

        System.out.println((char)97);           // (결과) 'a'
        System.out.println((char)122);      // (결과) 'z'

        System.out.println((int)'A');       // (결과) 65
        System.out.println((int)'a');       // (결과) 97

        // **Uni코드값, '문자'상수**
        System.out.println('A' + 1);         // (결과) 66 , 자동 형변환
        // **char --> int**
        // 2바이트 -- > 4바이트
        System.out.println((char)('A' + 1));     // (결과) 'B'
        System.out.println((int)('A' + 1));     // (결과) 66

        System.out.println((int)'+');           // (결과) 43
        System.out.println((int)'-');              // (결과) 45
        System.out.println((int)'*');            // (결과) 42    
        System.out.println((int)'/');              // (결과) 47
        System.out.println((int)' ');             // (결과) 32 공백
        System.out.println((int)'\\r');             // (결과) 13 엔터

        System.out.println("#" + (char)('a'-'A') + "#");  // (char)(97 - 65) --> (char)32 --> 공백 ' '

    }
}

자동 형변환 (3)

public class Cast3 {

    public static void main(String[] args) {
        // boolean(1byte), int(4byte)
        // true --> ( 출력)1
        // fasle --> (출력)1
        // false --> (출력)

        int a = 10 > 3 ? 1 : 0;
        System.out.println(a);

        boolean b = 10 > 3; 
        //int c = (b == true) ? 1 :0;

        int c = b ? 1 : 0;
        System.out.println(c);

    }
}

Thumbnail :Image by Freepik

More from this blog

[혼공후기] 재밌으면서도 알찼던 6주! 14기 활동 회고

매번 혼공 학습단을 신청해 봐야겠다고 했지만 기간 놓쳐버리기…또는 너무 바쁜 나머지 완주 못할 것 같아서 포기하다가 때마침 공부가 필요한 시기에 시간이 나서 신청하게 되었다. 공부할 새 책도 배송이 오고 완주할 생각에 기대감 상승. (+중간에 간식 먹을 생각) 참고할 수 있는 강의 영상이 있기 때문에 영상강의 보면서 책 필기 및 정리 이해한 내용을 바탕으로 블로그 정리 이런 방식으로 공부를 했다. 사실 하루에 조금씩 공부했으면 적당한 ...

Aug 23, 20252 min read

[혼공컴운] 6주차_책 한 권을 끝내다니(Ch 14~ 15)

14-1) 연속 메모리 할당 연속 메모리 할당 : 프로세스에 연속적인 메모리 공간을 할당하는 방식 스와핑 : 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식 스왑 영역 : 프로세스들이 쫓겨나는 보조기억장치의 일부 영역 스왑 아웃 : 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것 스왑 인 : 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것 → 스와핑을 이용하면 프로세스들이 요구하는 메모...

Aug 16, 20259 min read
[혼공컴운] 6주차_책 한 권을 끝내다니(Ch 14~ 15)

[혼공컴운] 5주차_끝이 보인다(Ch 12 ~ 13)

12-1) 동기화란 동시다발적으로 실행되는 많은 프로세스는 서로 데이터를 주고받으며 협력하며 실행된다. ⇒ 협력하여 실행되는 프로세스들은 실행 순서와 자원의 일관성을 보장해야 하기에 반드시 동기화가 필수 프로세스 동기화 : 프로세스들 사이의 수행 시기를 맞추는 것 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 공유가 불가능한 자원의 동시 사용을 피하...

Aug 9, 20255 min read
[혼공컴운] 5주차_끝이 보인다(Ch 12 ~ 13)

[혼공컴운] 4주차_운영체제 시작(Ch 09 ~ 11)

09-1) 운영체제를 알아야 하는 이유 운영체제 : 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 (시스템) 자원 : 프로그램 실행에 마땅히 필요한 요소 컴퓨터가 부팅될 때 메모리 내 커널 영역에 적재 사용자 영역 : 사용자가 이용하는 응용 프로그램이 적재되는 영역 ⇒ 메모리 공간에 주소가 겹치지 않게 프로그램 적재해 준 건? 운영체제 실행할 프로그램 메모리에 적재 실행되지 않...

Jul 26, 20257 min read
[혼공컴운] 4주차_운영체제 시작(Ch 09 ~ 11)

[혼공컴운] 3주차_컴퓨터 구조 끝(Ch 06 ~ 08)

06-1) RAM의 특징과 종류 RAM 휘발성 저장 장치 실행할 대상 저장 보조기억장치 비휘발성 저장 장치 보관할 대상 저장 CPU는 보조기억장치에 직접 접근하지 못하고 RAM으로 복사하여 저장한 뒤 실행. RAM 용량이 적으면 보조기억장치에서 실행할 프로그램을 가져오는 일이 잦아 실행 시간이 길어지기 때문에 RAM용량이 충분히 크면 많은 데이터를 가져와 미리 RAM에 저장하여 프로그램들을 동시에 빠르게 실행하는데 유리하다...

Jul 19, 20258 min read
[혼공컴운] 3주차_컴퓨터 구조 끝(Ch 06 ~ 08)
W

WOW's dev archive

42 posts

언젠가 나에게 힘이 될 차곡차곡 쌓은 기록🥰