변수 선언 - 변수타입 변수이름; 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