public class Test {
public static void main(String[] args) {
int a; //변수 선언
a = 10;
System.out.println(a);
}
}
숫자 정수( integer )를 보관할 수 있는 이름이 a 라는 데이터 저장소를 만든다. 이것을 변수라 한다. 이렇게 변수를 만드는 것을 변수 선언이라 한다. 이제 변수 a 에는 숫자 정수를 보관할 수 있다. 숫자 정수 뿐만 아니라 문자, 소수와 같이 다양한 종류 값을 저장할 수 있는 변수들이 있다.
변수 선언 후 선언한 변수에 처음으로 값을 저장하는 것을 변수 초기화라고 한다
public class Test {
public static void main(String[] args) {
int a; //변수 선언 초기화 따로
a = 10;
System.out.println(a);
int b = 10; // 변수
System.out.println(b);
}
}
만약 변수를 초기화 하지 않는다면??
java: variable a might not have been initialized
다음과 같은 오류가 발생한다
왜???
컴퓨터 메모리는 여러 시스템이 사용하는 공간이라 값들이 계속 저장되는데 변수를 선언하면 메모리상의 어떤 공간을 차치하고 사용한다 그런데 그 공간에 어떤 값이 있는지 모른다 그래서 이상한 값이 출력이 될 수 있다.
int a = 100; //정수 리터럴
double b = 10.5; //실수 리터럴
boolean c = true; //불리언 리터럴
char d = 'A'; //문자 하나 리터럴
String e = "Hello Java"; //문자열 리터럴
변수 값은 변할 수 있다 하지만 리터럴은 개발자가 입력한 고정값이다.
이건 내일배움교육을 들으면서 튜터님이 이야기 해주신 카멜표기법이다.
변수 이름은 소문자로 시작하는게 보통이지만 여러단어로 이루어진 변수 이름은 첫번째 단어는
소문자로 시작하고 그 이후 단어는 대문자로 시작하는 낙타표기법을 사용한다
orderDetail, myAccount
Java의 래퍼 클래스는 객체가 기본 데이터 유형을 래핑하거나 포함하는 클래스다. 래퍼 클래스에 객체를 생성하면 필드가 포함되며 이 필드에 기본 데이터 유형을 저장할 수 있다. 즉, 기본 값을 래퍼 클래스 객체로 래핑할 수 있다.
The [래퍼클래스명] class wraps a value of the primitive type [기본형] in an object.
기본데이터 유형 및 해당 래퍼 클래스
Number클래스
public abstract class Number implements java.io.Serializable {
public Number() {super();}
public abstract int intValue();
public abstract long longValue();
public abstract float floatValue();
public abstract double doubleValue();
public byte byteValue() { return (byte)intValue(); }
public short shortValue() { return (short)intValue(); }
}
int i = new Integer("10").intValue();
int i = Integer.parseInt("10");
Integer i = Integer.valueOf("10")
래퍼 클래스는 인스턴스에 저장된 값을 변경못한다, 값을 참조하기 위해 새로운 인스턴스를 생성하고, 생성된 인스턴스의 값만을 참조할 수 있다.
오토박싱: 기본 유형을 해당 래퍼 클래스의 객체로 자동 변환하는 것
Ex) int->integer, long->Long, double->Double
언박싱: 오토박싱의 반대 과정, 래퍼 클래스 객체를 다시 기본 유형으로 변환
Integer x = 400, y = 400;
if (x == y)
System.out.println("Same");
else
System.out.println("Not Same");
// 출력 결과: Not Same
Integer x = new Integer(40), y = new Integer(40);
if (x == y)
System.out.println("Same");
else
System.out.println("Not Same");
// 출력 결과: Same
위 예시는 자료를 찾아보다 보게 된 코드이다 이 부분에 대해서는 아직 이해가 되질 않아
내일 튜터님에게 물어보고 내일 TIL에 정리해볼 예정이다 그리고 알고리즘을 풀고 문제풀이 내역을 올려 보기도 할 예정이다.
그리고 지금 내가 내용을 이해를 했는지 잘 모르겠다..... 정리를 하긴 했는데 올바르게 정리를 한건지도 잘 모르겠고.... 조금 불안하지만 내일 튜터님에게 보여드리면서 수정해야겠다....
그리고 혹시 이 글을 보시게 되는 분들이 수정할 부분을 발견하셨다면 댓글로 꼭 알려주시면 감사하겠습니다..