java

[Java] 변수

22gamin 2024. 9. 5. 12:22

매우 기본적인 자바 문법은 예전에 배웠기에 복습 겸 헷갈리거나 까먹은 거 같은 정의 위주로 작성!

 

 

 

변수는 초기화 해야한다.

- 만약 변수를 초기화 하지 않고 사용하면 어떻게 될까?

package variable;
 public class Var6 {
 }
 public static void main(String[] args) {
 int a;
 System.out.println(a); //주석을 풀면 컴파일 에러 발생
    }

 

다음과 같은 컴파일 에러 발생

java: variable a might not have been initialized

 

 

왜 이런 오류가 발생할까?

  • 컴퓨터에서 메모리는 여러 시스템이 함께 사용하는 공간이다. 그래서 어떠한 값들이 계속 저장된다. 변수를 선언하면 메모리상의 어떤 공간을 차지하고 사용한다. 그런데 그 공간에 기존에 어떤 값이 있었는지는 아무도 모른다.
  • 따라서 초기화 하지 않으면 이상한 값이 출력될 수 있다. 이런 문제를 예방하기 위해 자바는 변수를 초기화 하도록 강제한다.

 

  • 위 코드의 변수는 지역 변수라고 하는데, 지역 변수는 개발자가 직접 초기화를 해주어야한다. 클래스 변수와 인스턴스 변수는 자바가 자동으로 초기화를 진행해준다.
  • 컴파일 에러는 자바 문법에 맞지 않았을 때 발생하는 에러이다. 컴파일 에러는 오류를 빨리, 그리고 명확하게 찾을 수 있기 때문에 사실은 좋은 에러이다. 덕분에 빠르게 버그를 찾아서 고칠 수 있다.

 

리터럴

  • 코드에서 개발자가 직접 적은 100, 10.5, true, 'A', "Hello Java"와 같은 고정된 값을 프로그래밍 용어로 리터럴(literal)이라고 한다.
int a = 100; //정수 리터럴
double b = 10.5; //실수 리터럴
boolean c = true; //불리언 리터럴
char d = 'A'; //문자 하나 리터럴
String e = "Hello Java"; //문자열 리터럴

 

-> 변수의 값은 변할 수 있지만 리터럴은 개발자가 직접 입력한 고정된 값이다. 따라서 리터럴 자체는 변하지 않는다.

 

다양한 숫자 타입

package variable;
public class Var8 {
	public static void main(String[] args) {
 		//정수
		byte b = 127; //-128 ~ 127
 		short s = 32767; // -32,768 ~ 32,767
 		int i = 2147483647; //-2,147,483,648 ~ 2,147,483,647 (약 20억)
 
 		//-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
 		long l = 9223372036854775807L; 
 
		//실수
		float f = 10.0f;
 		double d = 10.0;
    }
 }

-> 메모리를 적게 사용하면 작은 숫자를 표현할 수 있고, 메모리를 많이 사용하면 큰 숫자를 표현할 수 있다.

-> 변수를 선언하면 표현 범위에 따라 메모리 공간을 차지하기에 필요에 맞도록 다양한 타입을 제공한다.

 

 

리터럴 타입 지정

  • 정수 리터럴은 int를 기본으로 사용한다. 따라서 int 범위까지 표현할 수 있다. 숫자가 int 범위인 약 20억을 넘어가면 L을 붙여서 정수 리터럴을 long 으로 변경해야 한다. ( 대문자 L, 소문자 l 모두 가능하다 그런데 소문자 l은 수자 1과 착각할 수 있어 권장하지 않음)
  • 실수 리터를은 기본이 double형을 사용한다. float형을 사용하려면 f를 붙여서 float형으로 지정해야한다

 

 

변수 명명 규칙

- 관례는 필수는 아니지만 전세계 개발자가 해당 관례를 따르기 때문에 사실상 규칙이라고 생각해도 된다.

 

 

관례: 낙타 표기법(camel case)!! (개발할 때, 파이썬과 달라서 고생했던 부분 ㅜㅡㅜ)

 

 

자바 언어의 관례 한번에 정리!!

클래스는 대문자로 시작, 나머지는 소문자로 시작

 

- 자바에서 클래스 이름의 첫 글자는 대문자로 시작. 나머지는 모두 첫 글자를 소문자로 시작 -> 여기에 낙타 표기법 적용

  • 예시: 클래스는 첫 글자 대문자, 나머지는 모두 첫 글자 소문자로 시작 + 낙타 표기법
    • 클래스: Person,OrderDetail
    • 변수를 포함한 나머지: firstName, userAccount
  • 여기에 예외가 딱 2개 있음
    • 상수는 모두 대문자를 사용하고 언더바로 구분!
      • USER_LIMIT
    • 패키지는 모두 소문자를 사용
      • org.spring.boot