컴파일 시 모든 변수의 type이 결정됨 (= 처음 변수를 선언할 시점부터 해당 변수 type을 잘 설정해야 하고, 선언 이후엔 그에 알맞은 data만 저장할 수 있음)
서로 다른 형 사이의 변환이 금지됨
서로 다른 형 사이의 변환이 항상 명시적으로 지정되어야 함
변수의 선언
타입 변수이름;
int count; (정수 값을 담을 수 있는 count라는 이름의 변수를 선언)
double average; (실수 값을 담을 수 있는 average라는 변수를 선언)
명명규칙
변수의 이름을 정할 때 Java에서 정해놓은 규칙
식별자(identifier)
클래스, 메소드, 변수 등 다양한 대상에 대해 이름이 붙여지는 경우, 그 이름을 뜻함
Java 식별자 명명 규칙
하나 이상의 글자로 이루어져야 함
첫 번째 글자는 문자 이거나 '$', '_'이어야 함
두번재 이후의 글자는 숫자, 문자, '$', '_'이어야 함
'$', '_' 이외의 특수문자 사용 불가능
길이 제한이 없음
키워드는 식별자로 사용할 수 없음
상수 값을 표현하는 단어 true, false, null은 식별자로 사용할 수 없음
변수 명명 관례
첫 번째 문자가 소문자인 명사로 정함
여러 단어로 구성된 이름의 경우 두번째 단어부터 첫글자를 대문자로 함
'_'을 쓰지 않음
규칙은 반드시 지켜야 한다. 지키지 않으면 컴파일시 에러가 발생함.
관례는 지키지 않아도 컴파일에러가 발생하지는 않지만, 약속이기 때문에 지켜주는것이 좋다.
변수의 사용
변수명 = 값;
count = 10; (count 라는 int형 변수에 정수값 10을 담음)
count = 20; (count 라는 int형 변수에 정수값 20을 담음. 원래 담겨있던 10은 없어짐. 변수는 값이 얼마든지 변할 수 있음)
average = 11.1 (average라는 double형 변수에 실수 값 11.1 을 담음 )
package javaStudy;
public class VariableExam {
public static void main(String[] args) {
int count;
count = 10;
count = 20;
System.out.println(count);
// count = 11.1; //위에서 count를 int로 정의했으니 오류 발생
double avg = 11.1;
String name = "carami";
}
}
실습
상수
상수(常數)
수식에서 변하지 않는 값을 의미
상수의 선언
final 상수타입 상수명;
final int J;
상수의 사용
상수명 = 값;
J = 10; (J에는 값을 담을 수 있는 기회가 단 한 번만 허락됨)
상수 명명 관례
대문자로만 구성된 명사로 정함
여러 단어로 구성된 이름의 경우 단어 사이에 '_'을 써서 구분함.
상수를 사용해야 하는 경우
값이 변하면 위험한 경우에 상수를 사용
값만 봤을때 무엇을 의미하는지 쉽게 파악할 수 없는 값에도 값 자체를 사용하기 보다는 상수를 사용
기본형 타입
기본형
가장 기본이 되는 데이터 타입으로써 정수형, 실수형, 문자형, 불린형을 의미
논리형
논리형은 크기가 1byte이고 true와 false 중에 한 가지 값을 가질 수 있음
문자형
문자형은 char로 2byte크기를 가짐 문자는 작은따옴표를 이용하여 한 글자를 표현할 수 있음
정수형
정수형은 정수를 표현하는 데이터 타입인데 표현할 수 있는 정수의 범위에 따라서 다양하게 제공됨
정수형에서 가장 자주 사용하는 int는 4바이트
long형은 8byte크기를 가짐. int 보다 더 큰 범위의 정수를 표현하고 싶을 때 사용
실수형
실수형은 float과 double형이 있음
float은 4바이트, double은 8바이트로 double은 float보다 더 큰 범위의 실수를 표현할 수 있음
리터럴
컴퓨터 과학 분야에서 리터럴이란, 소스 코드의 고정된 값을 대표하는 용어
어떤 특정한 값 자체를 의미 (예: true, false, 10, 11.1, a 등 값 자체)
특정 타입의 변수에 대입할 수 있음
기본형 타입의 사용 방법
package javaStudy;
public class PrimitiveDataTypeExam {
public static void main(String[] args) {
boolean isFun = true;
System.out.println(isFun);
char c = 'f';
int x = 59;
long big = 345356453L; //값 바로 뒤에 소문자 l이나 대문자 L을 적어야 함
float f = 32.5f; //실수 뒤에 소문자 f나 대문자 F를 붙여야 함
double d = 12542325323.35;
}
}
실습
기본형 타입변환
형변환 (Type Casting)
변수 또는 리터럴의 타입을 다른 타입으로 변환하는 것
기본형 타입의 크기 비교
byte < short, char < int < long < float < double
묵시적(암묵적) 형변환
크기가 작은 타입 > 더 큰 타입으로 바꿀 때에는 묵시적으로 형을 바꿔줌
int x = 50000;
long y = x;
명시적(강제) 형변환
크기가 큰 타입 > 더 작은 타입으로 바꿀 때에는 명시적으로 변환해줘야 함
long x = 50000;
//int y = x; //이렇게 묵시적으로 수행하면 컴파일러는 오류를 발생시킴
int y = (int) x; //반드시 **(타입)** 으로 명시적으로 형을 바꿔줘야 함
실습 1
실습 2
산술연산자
연산자와 연산식
연산: 데이터를 처리해 결과를 산출하는 것
연산식 ** x = y + z;**
y와 z를 더한 값을 x에 대입한다는 것을 의미
연산자 =: 대입연산자이고, 연산자 +: 산술연산자
y와 z: 피연산자
x = y+ z 는 연산식
피연산자(Operand)
연산 대상이 되는 데이터 (리터럴, 변수)
연산자(Operations): 연산에 사용되는 표시나 기호 (+, -, *, /, %, = 등)
부호 연산자(+, -) - 단항연산자에 속함
부호를 결정
+: 변수 앞에 붙을 경우, 그 변수의 부호를 그대로 유지시킴
-: 변수 앞에 붙을 경우, 그 변수의 부호를 반전시킴 (음수는 양수로, 양수는 음수로 바꿈)
// 부호 연산자 +
int i1 = +5;
int i2 = +i1;
System.out.println(i2); //결과: 5
//부호 연산자 -
int i3 = -4;
int i4 = -i3;
System.out.println(i4); //결과: 4
증감 연산자(++, - -) - 단항연산자에 속함
1씩 증가하거나 감소시킴
피연산자 앞에 붙을 때
int i4 = ++i3; // i3의 입장: i3 = i3 + 1; // i4의 입장: i3에 1을 더한 후에 그 값을 i4에 넣어줌
피연산자 뒤에 붙을 때
int i5 = i3++; // i3의 입장: i3 = i3 + 1; // i5의 입장: i3의 원래 값을 i5에 먼저 대입시킨 후 i3에 1을 더함
//부호 연산자
int i1 = -5;
int i2 = +i1;
int i3 = -i1;
//증감 연산자
int i4 = ++i3;
int i5 = i3++;
int i6 = --i3;
int i7 = i3--;
이항 연산자: 피연산자 하나로 연산할 수 없는 연산자
int i = 5;
int j = 2;
System.out.println(i + j);
System.out.println(i - j);
System.out.println(i * j);
System.out.println(i / j); // 정수와 정수를 연산한 것이기 떄문에 실제 값은 2.5지만 결과는 2
System.out.println(i / (double) j);
// 두 정수 중 최소한 하나라도 실수로 형변환하면 2.5로 결과 낼 수 있음
System.out.println(i % j);
실습
비교연산자와 대입연산자
비교연산자: = = , ! = , < , > , < = , > =
비교 연산자의 결과는 boolean
int i = 10; *// =: 대입연산자*
int j = 10;
*// i 와 j 가 같은지 비교하는 비교 연산자*
System.out.println(i == j );
System.out.println(i != j );
System.out.println(i < j);
System.out.println( i > j);
System.out.println(i <= j);
System.out.println(i >= j);
대입 연산자
단순 대입 연산자
i = 10
오른쪽에 있는 피연산자의 값을 왼쪽 피연산자의 변수에 저장
복합 대입 연산자
정해진 연산을 수행한 후에 결과를 대입
i += 10; *// i = i + 10; 과 같은 의미*
System.out.println(i);
System.out.println(i -= 5); // i = i - 5;
System.out.println(i);