System.out.println("~~") : System이라는 클래스의 out 객체의 println이란 메소드를 실행
<변수와 상수>
--------변수----------
int num; : num이라는 이름의 integer type 저장공간을 선언
String name; : name이라는 이름의 String type 저장공간을 선언
int num = 10; : 선언과 동시에 10이라는 값으로 "초기화"
int num; 이후 num = 10 : 선언을 해놓고 나중에 값을 대입
--------상수----------
final int num = 10; : final이라는 키워드를 추가하여 상수로 선언
num = 20; : 상수는 값 변경이 안되기 때문에 에러가 난다.
--------변수의 타입----------
1.기본형
=> int, char, string, boolean etc....
=> string은 "쌍따옴표로 감싸고" // char은 '작'은 따옴표로 감싼다
=> 정수형 변수
byte byteNumber = 127; // byte 는 -128 ~ 127 범위의 숫자만 저장 가능합니다.
short shortNumber = 32767; // short 는 -32,768~32,767 범위의 숫자만 저장 가능합니다.
int intNumber = 2147483647; // int 는 -21억~21억 범위의 숫자만 저장 가능합니다.
long longNumber = 2147483647L; // long 은 숫자뒤에 알파벳 L 을 붙여서 표기하며 매우 큰수를 저장 가능합니다.
=> 실수형 변수는 float(4byte), double(8byte)
float(4byte) : 3.4 * -10^38 ~ 3.4 * 10^38(long 보다 큼)범위의 숫자 저장이 가능합니다.
double(8byte) : 1.7 * -10^308 ~ 1.7 * 10^308(long 보다 큼)범위의 숫자 저장이 가능합니다.
2.참조형 : 레퍼런스가 있음. 어떤 공간의 주소값을 바라보고 있는 녀석
String, Object, Array, List .... 등 단일공간에 담을 수 없는 값을 저장
배열 선언 방식 : int[ ] arr = {1, 2, 3}
참조형 변수는 주소값을 가진다고 했다. 이상한 값이 나오는 이유는 arr 배열이 시작되는 메모리 주소값을 주기 때문.
따라서 값을 출력하려면 Java에서 제공하는 Arrays 유틸리티의 toString 메소드를 사용해야한다.
*참고 : Stack영역은 주소값을 저장, Heap 영역은 원본 값을 저장. 참조형 변수의 경우 Stack에 주소값이 있고, 이를 참조하여 Heap의 저장공간에 접근함. Heap은 동적으로 할당된 메모리 영역이기 때문에 크기가 계속 늘어날 수 있는 참조형 변수의 원본을 저장함. Stack은 정적으로 할당된 메모리 영역이므로 크기가 몇 byte인지 정해져있는 기본형 변수를 저장. 참조형변수의 주소값은 크기가 정해져있기 때문에 Stack에 저장된다.