01-Value&Type
변수
- 변수는 값을 저장할 수 있는 메모리공간을 의미, 수시로 값이 변경가능
- 변수에는 단 하나의 값만, 단 하나의 타입의 값만 저장할 수 있다.
변수선언(데이터타입 변수이름;)
int age;
double value;
int x, y, z; // 여러 개 선언 가능
- 이름 규칙
첫 번째 글자는 문자이거나 $,ㅡ 이어야 하고 숫자로 시작할 수 없다. |
---|
영어 대소문자가 구분된다. |
첫 문자는 소문자, 다른 단어가 붙을 경우 첫 문자는 대문자 (관례) |
문자 수(길이) 제한은 없다. |
자바 예약어(자바에서 사용되는 언어들)는 사용할 수 없다. |
- 변수값 저장
int score; // 변수 선언
score = 90; // 변수 초기화
int score = 90; // 변수 선언과 초기화
-
- 변수의 규칙
-
변수는 선언된 블록 내에서만 사용이 가능
class A{
int v1 = 15;
if(v1<10) {
int v2 = v1 - 10; // v2는 if 내에 들어있는 지역변수이다.
}
int v3 = v1 + v2; // 컴파일 에러. v2는 if {} 안에서만 가능.
}
비정형 매개변수
매개변수의 타입만 정하고, 개수는 정하지 않을 때
a1.add(정수 타입만 정하고, 갯수는 정하고싶지 않을 때 )
class A{
add(int... numbers){ // int 타입이기만 하면 몇 개여도 상관 x
}
}
//여기서 변수 numbers는 int[]타입으로 간주된다.
----예제 ----
class A{
int add(int ... numbers){
//numbers 총합 - int를 배열로 취급하고 있음
System.out.println("전달매개변수 개수 = " + numbers.length);
int sum = 0;
for(int one :numbers) {
sum += one;
}
return sum;
}
}
public class VariableArgumentTest {
public static void main(String[] args) {
A a1= new A();
int result = a1.add(1, 2);
System.out.println("총합 = "+ result);
result = a1.add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10 );
System.out.println("총합 = "+ result);
result = a1.add(1, 2, 555, 53);
System.out.println("총합 = "+ result);
}
}
데이터 타입
- 데이터의 크기
- 컴퓨터의 가장 작은 단위 bit(bit = 0과 1)
정수 타입(byte, char, short, int, long)
정수 타입 | byte | char | short | int | long |
---|---|---|---|---|---|
바이트 수 | 1 | 2 | 2 | 4 | 8 |
자바에서 문자와 문자열은 다르다. 문자(char)는 글자 하나를 의미하고, 문자열은 글자들의 집합을 의미한다. String은 참조형 변수이다.
- 문자는 char 형이고 char은 2byte의 메모리를 사용한다.
실수 타입(float, double)
실수타입 | float | double |
---|---|---|
바이트 수 | 4 | 8 |
논리 타입(boolean)
-
boolean 타입은 1byte(8bit)로 표현되는 논리값(true/false)을 저장할 수 있는 데이터 타입이다.
-
오로지 두 가지의 값(t/f)을 저장할 필요가 있을 때 사용된다.
boolean stop = true; if (stop) { System.out.println("중지"); } else { System.out.println("시작"); }
타입 변환(형변환)
타입 변환: 데이터 타입을 다른 데이터 타입으로 변환하는 것.
-
자동형 형변환
-
작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 자동 형변환된다.
byte < short < int < long < float < double
byte a = 10; int b = a; // 자동형변환 int c = 200; double x = d; char w = 'A'; int z = w; // 65가 저장, 자동형변환
-
-
명시적 형변환
- 자동 형변환이 안 될 경우, 즉 큰 크기의 타입을 작은 타입으로 형 변환시킬 때는 수동으로 형변환을 해야 한다.
- 이 경우 강제이기 때문에, 작은 크기 타입으로 가면서 데이터의 일부가 손실된다.
double a = 100.99; //100.99 int b = a; // 100 소수점 이하는 손실
- 자동 형변환이 안 될 경우, 즉 큰 크기의 타입을 작은 타입으로 형 변환시킬 때는 수동으로 형변환을 해야 한다.
!! 연산식의 경우
int a = 10;
double c = 8.8;
int result = a + (int)c; //반드시 형변환