2. 변수, 데이터 유형 및 유형 변환

첫 번째 변수

1. 변수란?

* 데이터를 저장하기 위해 메모리에 공간을 만들어 할당하고, 이름을 부여한 것
* 데이터의 저장과 참조를 위해 할당된 메모리 공간

1) 지역변수

  • 메서드 내에서만 사용할 수 있는 지역 변수, 메서드 내에서 선언된 변수
    • 메서드가 시작될 때 생성됨
    • 메서드 종료 시 소멸
      • 블록 변수: 메서드 내에서 다른 블록(if, for 등) 내에서 선언된 변수

2) 멤버 변수(인스턴스 변수)

  • 클래스에 선언된 변수
  • 클래스의 멤버 역할을 하는 멤버 필드
  • 클래스 내 여러 메서드 간에 공유 가능하며 클래스 외부에서 호출 가능

3) 클래스 변수(정적 변수)

2. 변수 선언

>데이터타입 변수명;   
>int num;

* int num;
    * int -데이터타입 / 정수를 저장할 메모리 공간을 할당하겠다.

* num - 해당 변수에 접근할 때에는 num 이라는 이름을 사용하겠다.

3. 가치 할당

* 변수 선언 후 값 할당
    > int a;   
    > a = 23;
* 선언과 동시에 초기화
    > int a = 23;
* 여러 변수 동시에 선언, 동시 할당
    > int a=10, b=20;
* 여러 변수 동시에 선언 후 할당
    > int a, b;   
    > a=10;    
    > b=20;
* 변수끼리의 할당
    >int a=10, b;   
    >b=a;
class VarTest{
    public static void main(String() args){
        int a; //변수선언
        a = 10; // 값 할당

        int b = 20; //선언과 동시에 값 할당

        int c=30, d=40; //여러개 동시에 선언과 할당

        int e,f;
        e=100;
        f=200;

        int k=45;
        int n = kl
    }
}

4. 변수의 범위

  • 중괄호 {}로 묶인 블록 내에서 선언된 변수는 블록이 종료될 때 소멸됩니다.


    단일 블록
    {
    //암호
    }

중첩된 블록
{
인티;
{
인티; //오류 중첩된 블록에서 같은 변수를 사용할 수 없습니다.


}
}

다른 블록
{
정수 나
}
{
정수 i; // 블록은 다르며 사용할 수 있습니다.


}

class ScopeTest 
{
    public static void main(String() args) 
    {
        // 변수의 범위(Scope)
        //{} 블럭 내에서 선언된 변수는 블록을 빠져나가면 소멸
        //=> 메서드 내에서 선언된 변수는 해당 메서드가 종료되면 소멸

        int a=10;//main 메서드 내에서 사용 가능
        System.out.println(a);

        //for(int a=0;a<3;a++){} => error main메서드의 a변수 사용 불가
        for(int i=0;i<3;i++){
            System.out.println(a);
        }
        for(int i=0;i<4;i++){
            int k=30;
            System.out.println(k);
        }
        System.out.println(a);
        //System.out.println(i); i는 for 블록 탈출 후 소멸
        //System.out.println(k); k는 for 블록 탈출 후 소멸
    }
}

2. 데이터 유형

  1. 기본 데이터 유형

    • 바이트 – 1바이트 정수
    • short – 2바이트, 정수
    • int – 4바이트, 정수
    • long – 8바이트, 정수
    • Float – 4바이트, 실수
    • double – 8바이트, 실수
    • char – 2바이트, 문자
      • 영어, 한글 등의 문자를 저장하여 사용합니다.

      • 실제로 해당 문자의 유니코드 값이 저장됩니다.


        문자 a = ‘A’; => 문자 a=65;

    • 부울 – 1바이트, 논리(참/거짓)
  2. 참조 유형

    • 코드 – 코드
  3. 예 – 숫자

    public class VarTest{
     public static void main(String() a){
         byte a = 127; //-128 ~ 127
         short b = 32000;
         int c = 2100000000; //21억
         long d = 21000000000L;//900경, int의 범위를 넘어설 경우 뒤에 L을 붙인다.

    long e=(long)a*b*c; //byte*short*int => int*int*int로 자동 형변환된다.

    //값이 int의 범위를 벗어나 잘못된 결과가 나오므로, (Long)을 이용해 형변환해준디. } }
  4. 예 – 문자 유형

    public class VarTest{
     public static void main(String() a){
         byte a = 127; //-128 ~ 127
         short b = 32000;
         int c = 2100000000; //21억
         long d = 21000000000L;//900경, int의 범위를 넘어설 경우 뒤에 L을 붙인다.

    long e=(long)a*b*c; //byte*short*int => int*int*int로 자동 형변환된다.

    //값이 int의 범위를 벗어나 잘못된 결과가 나오므로, (Long)을 이용해 형변환해준디. } }

3. 캐스팅

  1. 타입캐스팅이란

    • 작업을 위한 다양한 데이터 유형을 통합하기 위한 변환
    • 산술에서
      • 피연산자의 더 큰 데이터 유형을 사용한 연산
    • 교체할 때
      • 왼쪽 및 오른쪽 유형이 일치해야 합니다.

  2. 전환 유형을 입력하세요.

    • 자동 유형 변환
      • 작은 데이터 영역을 큰 영역에 할당
      • 가치 손실 없는 변화
    • 명시적 직업
      • 큰 범위의 데이터를 작은 범위로 매핑
      • 가치의 중요한 부분이 손실되지 않은 경우에만 수행해야 합니다.

자동 캐스팅 규칙
바이트 – short – int – long – float – double
char – int – long – float – double

명시적 직업
수영 선수 a = 3.14f;
intb = (정수)a;

public class ConversionTest{
    public static void main(String() a){
        long a = 2580L;
        float b = a; //자동형변환

        double c = 23.489;
        float d = (float)c; //명시적 형변환
    }
}
  1. 래퍼 클래스

    • 데이터 유형을 효율적으로 관리하기 위해 생성된 데이터 유형 교체 클래스입니다.

    • 기본 변수도 객체로 취급해야 할 때 사용됩니다.

    • Boolean / Character / Byte / Short / Integer / Long / Float / Double

      정수. MAX_VALUE
      정수.MIN_VALUE 등

    • 문자열 => 숫자 유형 변환

      문자열 a = “12345”;
      intb = (정수)a; //실수

      문자열 a = “12345”;
      int b = 정수 parseInt(a); // 문자열을 정수로 변환

      Float.parseFloat()
      Double.parseDouble()
      Byte.parseByte()

    • 숫자 문자열 => 문자형 변환

      정수 a = 10;
      문자열 b = Integer.toString(a);

      Double.toString()
      Long.toString()
      Float.toString()