[JAVA] 김영한 자바 공부 기록 2024-0906 section3
int a; // 숫자를 담을 수 있는 그릇, 변수 선언
a = 20; // 10 -> 20, 변수 초기화
변수를 선언할 공간을 만들고 그 공간에 숫자를 대입한다 => 변수를 초기화한다.
그니까 아무것도 없는 곳에다 값을 대입하는 순간 변수가 초기화 되는것
또한 변수는 반복사용이 가능하다. 변수의 값을 읽는다고 값이 사라지는 것이 아니다.
변수 선언
변수를 선언하면 컴퓨터의 메모리 공간(RAM 에다가) 을 확보해서 그곳에 데이터를 저장할 수 있다.(선언 하는 순간 메모리 사용) 그리고 변수의 이름 통해 해당 메모리 공간 접근할 수 있다. 쉽게 이야기해서데이터를 보관할 수 있는 공간을 만들고, 그곳에 이름을 부여한다는 소리
int c, d; // 한번에 여러개의 변수 선언이 가능하다
int b = 2; //변수의 선언과 초기화를 한번에 하는 것
int c = 3, d = 4; // 여러 변수의 선언과 초기화가 가능
변수는 꼭 초기화를 해야한다
java: variable a might not have been initialized
초기화 안하면 오류가 뜨면서 컴파일이 되지가 않는다.
컴퓨터에서 메모리는 여러 시스템이 함께 사용하는 공간인데 어떠한 값들이 계속 저장된다.
원래 메모리는 어떤것이 사용했던 공간을 다시 차지해서 사용하게 된다
예를들면 게임 레벨이 7인데 그 7을 담고있는 공간이 있다고 치자 만약 프로그램이 종료가 되면 그 메모리 공간에 담겨있던 7은 사리지지 않고 그대로 종료가 된다. 사라지지 않고 종료가 되었으니 그 메모리가 사용했던 공간에는 7이 여전히 담겨있는 상태이다 근데 이제 다른 프로그램이 실행되면서 그 메모리 공간을 사용하게 될 수도 있는 것이다. 때문에 그 공간에 있는 값이 무슨 값인지는 아무도 모르게 되는 것이다. 언제 어떻게 갑자기 그 공간이 사용된건지도 알수가 없기 때문인듯하다.따라서 java에서는 변수를 초기화 하도록 강제한다 때문에 위와 같은 오류가 발생하며 컴파일이 되지 않는 것이다.
지역변수 : 개발자가 직접 초기화를 해줘야한다. 위와 같은 것들
추후에 배울 클래스 변수나 인스턴스 변수는 자바가 자동으로 초기화를 진행해준다.
public class Var6 {
public Var6() {
}
public static void main(String[] args) {
}
}
변수가 초기화가 아닌 선언만 되어있으면 컴파일러가 알아서 쓸모 없다고 판단하고 컴파일하지 않는다!
Ctrl + D 키 : 복+붙 한번에 되는 커맨드
int 타입, int 형식, int 형 => 셋다 같은말
int a = 100; //정수
double b = 10.5; //실수
boolean c = true; // 불리언 (true, false) 만 가능
char d = 'A'; // 문자 하나만 들어갈수있다.
String e = "Hello Java"; // 문자열을 다루기 위한 특별한 타입이다.
개발자가 직접 입력한 고정된 리터럴들은 바뀌지 않는다
String은 문자가 길어질수록 메모리를 많이 차지한다.
//정수
byte b = 127; // -128 ~ 127
short s = 32767; //-32768 ~ 32767
int i = 2147483647; // -2,147,483,648 ~ 2,147,483,647 (약 20억)
//개큼 ㅈㄴ 범위 개큼 진짜 (높을수록 메모리공간 많이 차지함)
long l = 9223372036854775807L;
//실수
float f = 10.0f; //f를 붙여줘야함
double d = 10.0; // 훨씬 더 큰 숫자범위 사용가능
숫자가 클수록 메모리 공간을 많이 차지한다
실무에서 자주 사용하는 변수타입
정수형 - int, long (파일 전송에는 byte를 사용함)
실수 - double
불린형 - boolean
문자열 - String
변수 명명 규칙
낙타 표기법(camel case) - 변수, 함수 ,클래스 등의 이름을 지을 때 사용한다
- 변수 이름은 소문자로 시작하는 것이 일반적임, 여러 단어로 이루어졌다면 첫번째 단어에서는 소문자로 시작하고 그다음 단어부터는 대문자로 시작한다 ex) userName
클래스는 첫 글자를 대문자로 사용하고 이후 단어가 많을 경우 그 단어의 시작은 대문자