10,11일에는 배운것도 있지만 주로 시험이 주가 되었다.
그래서 기본 개념중 시험을 통해 알게 된 몰랐던 개념을 정리하려고 한다.
java.lang.* ;
java.lang 패키지
자바 프로그램의 기본적인 클래스를 담고 있는 패키지로 import 구문 없이 사용할 수 있는 것이 특징.
포함 선언을 하지 않아도 자바 가상머신에 의해 자동 포함처리된다.
ex) Number/Character/Boolean/String ..... 등의 Objects
패키지명과 클래스명
패키지는 클래스의 묶음을 의미하고, 서로 관련있는 클래스들끼리 그룹으로 묶어서 효율적으로 관리.
클래스의 실제 이름은 패키지명을 포함한 것이다.
같은 이름의 클래스라도 다른 패키지에 각각 존재할 수 있다.
Static method의 호출
Sample클래스 내의 public static void display(){} 메소드를 다른 클래스에서 사용하는 방법?
Sample.display();
물론 Sample sp=new Sample(); sp.display(); 해도 되지만, static method이기 때문에 위와 같이 사용해야 한다.
==와 equals의 차이점 (primitive) 기본형 / 참조형 변수 (nonprimitive)
자바에는 더이상 쪼개기가 불가능한 primitive(원시형) 데이터와 nonprimitive(비원시형) 데이터가 존재한다.
원시형 데이터(=기본형, 불변값)은 기본형이고, 내장형 자료구조이다.
비원시형(=참조형, 가변값) 데이터는 원시형을 묶ㄱ어서 만든 자료구조이고 일렬로 나열하기 힘들고 자료의 순서가 불규칙하다.
primitive : int, double, short, long, float, boolean, char
non primitive : 원시데이터를 제외한 모든 데이터들 . String, Array, List, Map, Stack, Queue, ....
★★중요★★
기본형 변수는 stack 메모리공간에 실제 변수값을 저장하므로, 저장된 값이 존재하면 변수 명을 달리해서 같은 값을 지정할 경우, stack에서 위치를 찾기 때문에 '=='를 사용할때 같은 주소를 가르키고 있다는 것이 확인 가능하다.
하지만,
참조형 변수는 데이터값은 heap메모리에 저장하고, stack에는 heap에 저장된 위치값을 저장한다. (java는 heap에 직접 접근이 불가능하기 때문). heap의 크기는 가변적이고 컴파일 시 크기가 결정된다.
String i = "java";
String j = "java";
를 사용했을 경우에는 동등연산자 '=='를 쓰면 같은 주소를 가르키지만, 참조형의 경우 아닐수도 있다.
String a= new String("java");
String b= new String("java");
를 사용할 경우, new를 사용했기 때문에 heap에 다른 위치에 저장이 되고 주소값이 같냐는 질문을 하는 동등연산자 '=='를 사용할 수 없다. 이럴 때 사용하는 것이 equals이다. equals는 객체의 내용을 비교한다.
equals는 b.equals(a); 와 같이 사용한다.