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;  //반드시 형변환