01. 변수와 데이터타입 [ JAVA ]

duck-ach·2022년 7월 19일
0

JAVA

목록 보기
1/27

식별자

  • 클래스, 변수, 메소드 등에 붙이는 이름을 의미한다.
  • 대소문자를 구별한다.(dog와 Dog는 다른 식별자)
  • 한글 사용 가능 (사용이 가능하긴하나, 회사에서 일할 때 개발자가 한국인만 있을거란 보장도 없으며, 국가적으로 통용되고 있는 영어를 사용하는게 가장 안전하고 후에 탈도 없다.)
  • 숫자 사용 가능 (첫 글자로는 사용이 불가능하며, 숫자로만 구성될 수는 없다.)
  • 특수문자 2가지(_, $)사용가능. (하지만 지금은 $는 거의쓰지 않으니, 언더바()만 기억해두자)
  • 길이 제한이 없다.
  • 자바에서 사용중인 키워드는 사용이 불가능하다.

키워드란 특정 용도로 사용하기 위해서 자바 프로그램에서 미리 예약되어 있는 명령으로, 이미 선언되어 변수나 클래스 등을 선언할 때 사용할 수 없는 단어들을 말합니다. abstract 부터 while까지 총 50개의 JAVA예약어가 존재합니다.

가능한 식별자

  • name
  • section2
  • super_man

불가능한 식별자

  • 1block (숫자로시작)
  • one% (사용할 수 없는 특수문자(%)
  • my home (사용할 수 없는 특수문자(공백)
  • true (이미 사용중인 키워드)

이름 규칙 (Naming Convension)

식별자의 이름을 정할 때 통용되는 규칙이다.

Upper Camel Case

  • 각 단어의 첫 글자는 대문자, 나머지는 소문자 처리

  • 클래스 이름 규칙

  • MyHome, SuperMan 등

    Lower Camel Case

  • 각 단어의 첫 글자는 대문자, 나머지는 소문자 처리

  • 가장 첫 글자는 소문자 처리

  • 변수, 메소드 이름 규칙

  • myHome, superMan 등

    Snake Case

  • 각 단어를 밑줄(_)로 연결

  • 대소문자를 함께 사용할 수 없을 때 사용

  • 상수 이름 규칙

  • MY_HOME, SUPER_MAN 등

  • 상수란 변수의 반대로 변하지 않는 값을 의미합니다.

데이터 타입(Data Type)

데이터 타입에는 데이터를 직접 저장하냐, 데이터의 참조값(주소)을 저장하냐에 따라 기본타입(Primitive Type)과 참조타입(Reference Type)로 나뉩니다.

기본타입(Primitive Type) - 데이터를 저장하는 타입

  • boolean
  • char
  • byte
  • short
  • int
  • long
  • float
  • double

참조타입(Reference Type) - 데이터의 참조값(주소)를 저장하는 타입

  • 배열(Array)
  • 클래스(Class)
  • 인터페이스(Interface)

변수

프로그램에서 사용하는 값을 저장하기 위한 공간

  • 변수는 데이터 타입 다음에 변수 이름을 작성해서 변수를 선언(declare)한 뒤 사용 할 수 있다.
  • 변수에 저장된 값은 언제든지 다른 값으로 바꿀 수 있다.

변수선언


public class Variable {
	public static void main(String[] args) {
    boolean isGood = true;
    char ch1 = 'A';
    char ch2 = '홍';
    int age = 24;'
    long balance = 10000000000;
    float floScore = 4.5f;
    double score = 4.5;
    }
}

데이터타입 변수이름 = 저장할 값;
변수는 대부분 위와 같은 형식으로 초기값을 지정하여 선언하여 사용한다.
초기값을 선언하는 것을 초기화(initialized)라고 한다.


public class Variable {
	public static void main(String[] args) {
    
    int age;
    double score;
  
    }
}

초기화(initialized)를 하는 이유는

  • 논리타입 = false
  • 문자타입 = null
  • 정수타입 = 0
  • 실수타입 = 0.0
    클래스에서 변수를 선언할 경우 컴파일러가 이렇게 기본적으로 값 할당을 해주지만, 메소드영역에서 선언할 경우 값이 할당되지 않아 에러가 발생한다. (그러므로 주의가 필요하다.)

참조타입의 변수

  • 메모리는 1byte(바이트)마다 고유의 주소값을 가지는데 이것을 참조(Reference)라고 합니다.
  • 참조타입(Reference Type)은 값을 저장하지 않고 메모리의 주소값을 저장합니다.(C/C++의 포인터 개념)
  • 참조값은 16진수로 구성되어 있습니다.
  • 참조 타입의 값은 임의로 수정할 수 없습니다.

기본형 변수에 저장되는 값은 리터럴.
즉 실제 값이 저장된다. 24, A, true 등 있는 그대로의 값을 저장한다.
참조형 변수는 실제 값이 아닌 주소 값을 저장한다.

메모리의 구조를 간단히 살펴보면 Class/Method/Static영역과, Stack영역, Heap영역으로 나눌 수 있다.

public class memoryStack{
	public static void main(String[] args) {
    int age = 24;
    String name = "duck";
    }
}

이렇게 코드를 입력하게 되면, 기본형 변수인 "int age = 24;"는 스택(Stack)영역에 할당되며, 참조형 변수인 "String name = new String("duck");"은 Heap영역에 할당된다.

참조형 변수는 마치 우리가 어떤 아파트의 몇동 몇호에 이사 온거라 생각하면 된다.
이사를 왔으면 어느 아파트 몇동 몇호 라는 주소를 갖게되는것과 같다.

아무튼 기본형 변수는 Stack영역에서 실제 값을 그대로 저장하지만,
참조형변수는 먼저 Stack영역에 공간을 생성하고 Heap영역에 새로운 공간을 생성해 실제 값을 저장한 다음에 그 공간의 주소 값을 불러와서 Stack영역의 공간에 저장한다는 것이다.

profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가

1개의 댓글

comment-user-thumbnail
2023년 3월 21일

설치도 알려주쉐요

답글 달기