[JAVA] 02. 변수 + 연산자
오늘은 변수와 연산자 정리
언어를 처음 배울 때 가장 쓸모없어 보였는데 코딩을 하다보니
왜 모든 책의 가장 앞에 있는지 알 것같다. 캬캬컄 암튼 시작
..................................................................................................................................................................................................................................................
클래스, 변수, 상수, 메소드에 붙이는 이름을 식별자(identifier)라 하며 얘는 규칙이 있다.
+ 식별자 규칙 +
# 특수문자, 공백은 식별자로 사용할 수 없다. (단, '_' , '$'는 예외)
# if, while, class, true, false, null 등 자바의 키워드는 식별자로 사용할 수 없다.
# 숫자는 식별자의 가장 처음 문자로 올 수 없다.
('_' , '$'는 가장 처음에 쓸 수 있긴한데 일반적으로 잘 사용하지 않는다.
# 대소문자를 구분한다.
TIPS
+ 식별자는 목적이 드러나게 이름을 붙이는 것이 좋다.
- 길이 제한이 없으니 길이에 연연하지 말고 역할이 잘 드러나게 이름을 붙이자.
+ 이름을 붙이는 언어의 관습을 따르는 것이 좋다.
- 클래스 이름의 관습 : 첫번째 문자를 대문자로 시작한다.
public class HelloWorld {}
- 변수, 메소드 이름의 관습 : 이름의 첫 단어는 소문자로 표기하고 이후 각 단어의 첫 번째 문자만 대문자로 표기
int myAge;
boolean isSingle;
- 상수 이름의 관습 : 이름 전체를 대문자로 표기한다.
final double PI = 3.141592;
※ 상수 선언하기
변수를 선언할 때 final 키워드를 사용하면 상수를 선언할 수 있다.
..................................................................................................................................................................................................................................................
이번엔 자바에서 다룰 수 있는 데이터 종류를 알아보자.
about 데이터 타입
+ 기본 타입 (8개) +
타입 | 논리형 | 문자형 | 정수형 | 실수형 | ||||
boolean | char | byte | short | int | long | float | double | |
크기 | 1 bit | 2 byte | 1 byte | 2 byte | 4 byte | 8byte | 4 byte | 8 byte |
범위 | T/F | 0 ~ 65,535 | -128~127 | -32,768 ~ 32,767 |
-2^31 ~ (2^31)-1 |
-2^63 ~ (2^63)-1 |
-3,4E38 ~ 3,4E38 |
-1,7E308 ~ 1,7E308 |
+ 레퍼런스 타입 (1개) +
레퍼런스란 C언어의 포인터와 비슷한 개념이지만 C언어와 달리 실제 주소 값을 가지지 않는다.
- 레퍼런스 타입의 용도 1 : 배열
- 레퍼런스 타입의 용도 2 : 클래스
- 레퍼런스 타입의 용도 3 : 인터페이스
※ 자바에서 문자열은 기본타입에 속하지 않으며 자바 라이브러리에서 제공하는 String 클래스를 이용한다.
String myName = "자라나는rRDdo";
※ cf) char 을 초기화할 때는 (문자 하나니까) ' '(단일 인용 부호)를 사용하고
String 변수를 초기화할 때는 " "를 사용한다.
+ 형 (타입) 변환 +
변수나 상수 혹은 *리터럴의 타입을 다른 타입으로 변환할 수 있다.
( 리터럴 : 프로그램에 직접 표현한 값 ex) 13, 18, 'a', "RDRD" )
+ 자동 형변환
치환문이나 수식 내에서 타입이 일치하지 않으면 컴파일러가 작은 타입을 큰 타입으로 자동 변환한다.
double d = 13.18 * 10; //10은 int형이므로 작은 타입인 10이 10.0으로 자동변환된다.
+ 강제 형변환 == 캐스팅 ( casting )
프로그래머가 필요에 따라 강제로 형변환 시키는 것이다.
- 다음과 같이 ( )를 이용하여 형변환을 진행한다.
int n = 300;
byte b = (byte)n; //n을 byte타입으로 강제형변환
//만약
byte b = n; //이라고만 하면 컴파일 오류남
강제 컴파일 시, 위와 같이 n(형변환 대상)이 byte(형변환할 타입)의 범위보다 큰 값을 가지면 데이터 손실이 발생한다.
위의 경우 byte의 크ㅁ나어ㅏ로미 ㅏㅗ푸맢뮤ㅣ쟈ㅣ숌퓨ㅑㄹ마롬나ㅓ로미ㅗ나ㅣㅓ롬나ㅣㅓ로퓨미자돔자ㅗㅓㄷ로
..................................................................................................................................................................................................................................................
+ 자바의 연산 +
연산의 종류 | 연산방향 | 연산자 | 우선순위 |
단항 | <-- | ++, --, +(부호), -(부호), ~, !, (형변환) | 높다 낮다 |
산술 | --> | * , / , % | |
--> | + , - | ||
--> | <<, >>, >>> | ||
비교 | --> | <>, <=, >=, instanceof | |
--> | ==, != | ||
논리 | --> | & | |
--> | ^ | ||
--> | | | ||
--> | && | ||
--> | || | ||
삼항 | --> | ? : | |
대입 | <-- | =, *=, /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, |= |
+ 산술 연산자
연산을 수행하기 전에 피연산자의 타입을 일치시킨다.
# int보다 크기가 작은 타입은 int로 변환
# 피연산자 중 표현범위가 큰 타입으로 형변환
ex) byte + byte = int + int -> int
byte + short = int + int -> int
char + char = int + int -> int
float + int -> float + float -> float
long + float -> float + float -> float
float + double -> double + double -> double
※ int % int = int (int의 나눗셈 결과는 버림하여 얻는다.)
public class Operator {
public static void main(String[] args) {
byte a = 30;
byte b = 10;
byte c = (byte) (a*b);
System.out.println(c);
}
}
실행결과 : 44 // a*b =300으로 byte범위를 넘친다. 즉 256%44ㅁ어로마ㅗㄴㄹ
+ 대입 연산자
연산자 | 연산자 | ||
a = b | b의 값을 a에 대입 | a &= b | a = a & b 와 동일 |
a += b | a = a + b 와 동일 | a ^= b | a = a ^ b 와 동일 |
a -= b | a = a - b 와 동일 | a |= b | a = a | b 와 동일 |
a *= b | a = a * b 와 동일 | a <<= b | a = a << b 와 동일 |
a /= b | a = a / b 와 동일 | a >>= b | a = a >> b 와 동일 |
a %= b | a = a % b 와 동일 | a >>>= b | a = a>>>b 와 동일 |
+ 비교 연산자
+ 논리 연산자
+ 비트 논리 연산자
+ 비트 시프트 연산자