본문 바로가기
TIL/JAVA

23.04.10

by J1-H00N 2023. 4. 11.

변수 선언 - 변수타입 변수이름;  ex) int age;   /    char grade;    /     double score, point;

                -  my_name이나 myName 과 같은 형태의 이름으로 선언

변수의 종료 - 클래스, 인스턴스, 지역 변수

class Variable1_4 {
    static int classVal = 100; // 클래스 변수
    int instanceVal = 200; // 인스턴스 변수

    public static void main(String[] args) {
        int num; // 지역 변수
//        System.out.println("int = " + num); // Error 발생
        num = 300;
        System.out.println("int = " + num); // 100

        // 인스턴스 변수
//        System.out.println("instanceVal = " + instanceVal); // Error 발생
        Variable1_4 instance = new Variable1_4 (); // 인스턴스 변수 사용을 위해 객체 생성
        System.out.println("instanceVal = " + instance.instanceVal); // 100

        // 클래스 변수
        System.out.println("classVal = " + classVal);
        // 같은 크래스 내부는 바로 접근 가능
        System.out.println("Main.classVal = " + Variable1_4.classVal);
        // 클래스 변수 : 클래스명.클래스변수명 으로 접근 or
    }
}

상수 - 값의 저장을 한 번만 할 수 있는 변수(값 수정 불가)

 

리터럴 - 수학에서 상수라 부르는 값, 자바에선 이미 상수란 이름이 있기에 구별하기 위해서 리터럴이라 부름

 

접두사 - 2진수 0b, 8진수 0, 16진수 0x

접미사 - 정수형 L(int의 범위를 넘지 않을 땐 생략 O), 실수형 f(다른 실수형 d는 생략 가능), 10의 x제곱 ex

 

아스키코드 - 알파벳, 숫자, 특수기호, 그 외 컴퓨터에 필요한 몇 가지만 정의된 7비트 부호

유니코드 - 각 나라별 언어를 모두 표현하기 위해 나온 코드, 16비트 

UTF-8 - 유니코드를 사용하는 인코딩 방식 중 하나, 전 세계 모든 글자들을 표현 가능 (html에서 !+엔터 시 자동으로 지정되는 인코딩)

 

정수형은 최소, 최대를 벗어나면 값을 순환함 

class Variable3_1 {
    public static void main(String[] args) {
        // 부호있는 경우
        short sMin = -32768;
        short sMax = 32767;

        // short 타입에서 최솟값 범위를 넘었을 때
        // sMin - 1 = 32767
        System.out.println("sMin = " + sMin);
        System.out.print("sMin - 1 = ");
        System.out.println((short)(sMin - 1));

        // short 타입에서 최댓값 범위를 넘었을 때
        // sMax + 1 = -32768
        System.out.println("sMax = " + sMax);
        System.out.print("sMax + 1 = ");
        System.out.println((short)(sMax + 1));

        // 부호없는 경우
        char cMin = 0;
        char cMax = 65535;

        // short 타입에서 최솟값 범위를 넘었을 때
        // cMin - 1 = 65535
        System.out.println("cMin = " + (int)cMin);
        System.out.print("cMin - 1 = ");
        System.out.println((int)(--cMin));

        // short 타입에서 최댓값 범위를 넘었을 때
        // cMax + 1 = 0
        System.out.println("cMax = " + (int)cMax);
        System.out.print("cMax + 1 = ");
        System.out.println((int)(++cMax));
    }
}
 
연산자 우선순위
1
[]
첨자 연산자
왼쪽에서 오른쪽으로
 
.
멤버 연산자
왼쪽에서 오른쪽으로
2
++
후위 증가 연산자
왼쪽에서 오른쪽으로
 
--
후위 감소 연산자
왼쪽에서 오른쪽으로
3
!
논리 NOT 연산자
오른쪽에서 왼쪽으로
 
~
비트 NOT 연산자
오른쪽에서 왼쪽으로
 
+
양의 부호 (단항 연산자)
오른쪽에서 왼쪽으로
 
-
음의 부호 (단항 연산자)
오른쪽에서 왼쪽으로
 
++
전위 증가 연산자
오른쪽에서 왼쪽으로
 
--
전위 감소 연산자
오른쪽에서 왼쪽으로
 
(타입)
타입 캐스트 연산자
오른쪽에서 왼쪽으로
4
*
곱셈 연산자
왼쪽에서 오른쪽으로
 
/
나눗셈 연산자
왼쪽에서 오른쪽으로
 
%
나머지 연산자
왼쪽에서 오른쪽으로
5
+
덧셈 연산자 (이항 연산자)
왼쪽에서 오른쪽으로
 
-
뺄셈 연산자 (이항 연산자)
왼쪽에서 오른쪽으로
6
<<
비트 왼쪽 시프트 연산자
왼쪽에서 오른쪽으로
 
>>
부호 비트를 확장하면서 비트 오른쪽 시프트
왼쪽에서 오른쪽으로
 
>>>
부호 비트까지 모두 비트 오른쪽 시프트
왼쪽에서 오른쪽으로
7
<
관계 연산자(보다 작은)
왼쪽에서 오른쪽으로
 
<=
관계 연산자(보다 작거나 같은)
왼쪽에서 오른쪽으로
 
>
관계 연산자(보다 큰)
왼쪽에서 오른쪽으로
 
>=
관계 연산자(보다 크거나 같은)
왼쪽에서 오른쪽으로
 
instanceof
인스턴스의 실제 타입 반환
왼쪽에서 오른쪽으로
8
==
관계 연산자(와 같은)
왼쪽에서 오른쪽으로
 
!=
관계 연산자(와 같지 않은)
왼쪽에서 오른쪽으로
9
&
비트 AND 연산자
왼쪽에서 오른쪽으로
10
^
비트 XOR 연산자
왼쪽에서 오른쪽으로
11
|
비트 OR 연산자
왼쪽에서 오른쪽으로
12
&&
논리 AND 연산자
왼쪽에서 오른쪽으로
13
||
논리 OR 연산자
왼쪽에서 오른쪽으로
14
? :
삼항 조건 연산자
오른쪽에서 왼쪽으로
15
=
대입 연산자 및 복합 대입 연산자 (=, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, |=)
오른쪽에서 왼쪽으로

산술 > 비교 > 논리 > 대입 순으로 진행

 

증감 연산자 ++, --   -   전위형은 값이 참조되기 전, 후위형은 값이 참조된 후에 1 증가/감소 시킨다

System.out.println("k = j++;, k = " + k); // k = 3
System.out.println("k = j++;, j = " + j); // k = 4

System.out.println("k = ++j;, k = " + k); // k = 4
System.out.println("k = ++j;, j = " + j); // k = 4

산술 변환 - 연산 전에 피연산자의 타입을 일치시키는 것을 의미한다

                - 두 피연산자의 타입을 같게 일치시킨다(보다 큰 타입으로 일치)

                - 피연산자의 타입이 int 보다 작은 타입 이면 int로 변환

 

math 연산자  - round() : 소수 첫째자리에서 반올림 후 정수로 반환

                        ceil() : 올림값을 double로 반환

                        floor() : 내립값을 double로 반환

                        abs() : 절댓값

                        % : 나머지 (0이 아닌 정수로만 나눌 수 있음)

 

equals와 ==의 차이 - equals : 비교하고자 하는 두 피연산자의 값 자체를 비교(문자열에서만 이용)

                                   == : 비교하고자 하는 두 피연산자의 주소값을 비교

 

비트 연산자 - 값을 비트 단위로 연산하기에 정수형이나 형변환이 가능한 자료형만 연산 가능

&
대응되는 비트가 모두 1이면 1을 반환함. (비트 AND 연산)
|
대응되는 비트 중에서 하나라도 1이면 1을 반환함. (비트 OR 연산)
^
대응되는 비트가 서로 다르면 1을 반환함. (비트 XOR 연산)
~
비트를 1이면 0으로, 0이면 1로 반전 시킴. (비트 NOT 연산, 1의 보수)
<<
명시된 수만큼 비트들을 전부 왼쪽으로 이동시킴. (left shift 연산)
>>
부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킴. (right shift 연산)
>>>
지정한 수만큼 비트를 전부 오른쪽으로 이동 시키며, 새로운 비트는 전부 0이 됨.

 

2진수에서 가장 왼쪽에 있는 비트를 부호비트라 했을 때, 0이면 양수, 1이면 음수다 ex) 00000011 = 3, 10000011 = -3

1의 보수 - 11111111 - x = x의 0과 1 반전 ex) 11111111 - 00101001 = 11010110

2의 보수 - 100000000 - x (1의 보수 결과 +1과 같음) ex) 100000000 - 00001101 = 11110110 + 1 = 11110111

'TIL > JAVA' 카테고리의 다른 글

23.04.21  (0) 2023.04.21
23.04.20  (0) 2023.04.21
23.04.14  (0) 2023.04.17
23.04.12  (0) 2023.04.12
23.04.11  (0) 2023.04.11