💡 1. package( 패키지 )
패키지
➡ 기능이 비슷한 클래스를 모아서 관리하기 쉽게 하기 위해 / package 외부에서 접근하는 것을 막을 때 사용한다.
외부에서 package 클래스 내부에 접근하는 방법!
➡ class, full name 을 알아야 한다.
➡ 접근 권한을 알아야 한다.(public)
➡ import 구문을 이해해야 한다.
🔍 클래스의 이름은 2가지이다.
➡ 기본 이름 :OOClass
➡ 패키지를 포함한 이름(class full name): OO. OOO. OOClass
🔍 package 내부에 있는 클래스의 접근권한이 생략되면 기본적으로 default 접근권한을 가진다.
<public 접근 권한이 아니다>
default 접근권한
1️⃣ package 내부에 있는 클래스에게는 public 접근권한을 갖는다.
2️⃣ package 외부에 있는 클래스에게는 private 접근권한을 갖는다.
public 접근권한일 때 외부에서 접근이 가능한데
이때 패키지를 포함한 이름을 모두 사용해서 객체를 생성하거나.
import 를 통해 해당 클래스를 가져오고 이름만 쓰는 경우 2가지가 있다.
💡 2. package 로 구성된 자바 API에 접근하기!
🔍 자바 API에 접근 및 활용하기.
우리가 만들 때 뿐만 아니라 다른사람이 만들어 놓은 API를 가져다 쓸 때에도 package를 고려해야한다.
외부에 필요한 기능들을 package로 묶어서 여러개의 클래스들을 가져다 쓰는것을 API 라고 한다.
이러한 클래스들의 집합을 압축해서 만든 파일이 .jar 파일이다.
자바에서 제공해주는 api는 기본적으로 .jar 파일로 제공되는데 그 파일이름이 jrt-fs.jar이다.
이 파일을 압축을 풀어보면 java package 안에 lang package, util package 등 여러가지 package 들이 있다.
(실제로 압축을 풀 필요는 없음.)
lang package 는 아주 자주 사용하는 기본 클래스들이 들어있다. 기본 자료형과 관련 되어있는 클래스들로
그래서 모든 클래스 들에 default 값으로 들어있다.
util package는 뭔가 도움을 주는 클래스들로 대표적으고 ArrayList가 있다.
io package 는 입출력 관련 스트림을 포함한 클래스들
sql 은 데이터 베이스와 관련된 클래스
net 은 네트워킹 관련 클래스 이다.
lang package에 들어있는 String 클래스에서만 해도 수많은 메소드들이 있다.
당연시 String 클래스는 public 이기 때문에 우리가 해당 클래스를 이용이 가능한것이다.
그런데 java.lang 패키지는 모든 클래스에 default 로 import 되어있고 import 문이 생략되어있다.
💡 3. String 클래스
➡ 자바에서 문자열은 쌍 따음표 " " 로 감싸면 된다.
➡ 자바에서 문자열을 저장하는 기본 자료형(DataType)은 없다.
➡ 문자열은 여러가지 조작을 할 수 있기 때문에 별도의 클래스로 자료형(java.lang.String)을 만들어 두었다.
➡ 그 이유로 자바에서 문자열은 책, 영화, 회원 처럼 객체로 취급된다.
String 은 변수 안에 데이터를 직접 넣을 수 없으며 String 클래스로 객체를 생성해 변수에 주소를 저장한다.
🔍 3.1 문자열 생성 방법 new로 만들기.
String str1 = new String("APPLE");
String str2 = new String("APPLE");
위와 같이 String 객체 두개를 생성했다고 하자.
이때 두 String 객체의 포함된 Apple 이라는 문자열이 있으므로 이 둘을 = 로 표현해서는 안된다.
저 두 변수내부에 들어있는 값은 각 객체 데이터를 담은 곳의 주소이며 Apple이 아니다.
따라서 str1은 str2 와 같지 않다.
만약 내부의 데이터 값의 같음 유무를 판단하려면 어떻게 해야할까?
String 타입 메소드중에 equals() 라는 메소드가 있다.
str1.equals(str2); 내부의 데이터 값이 같으면 true 같지 않으면 false를 반환한다.
🔍 3.2 문자열 상수로 만들기.
String str3 = "APPLE";
String str4 = "APPLE";
이렇게 ""을 통해서 직접 초기값을 넣은 경우에는 Literal Pool에 객체가 생성된다.
(보통 new 로 생성한 String 은 Heap Area에 생성된다)
이때 문자열 상수가 생성되는 메모리 영역을 재활용 한다.
즉 내부의 데이터 값이 같으면 재활용을 해 변수에는 같은 공간을 가르키는 번지수가 존재한다.
따라사 str3 == str4 을 비교하면 true 가 나온다.
하지만 기본적으로 String 내부의 값을 비교할때는 equals 로 비교하는게 맞다.
==으로 하면 언제는 true 가 나오고 언제는 no 가 나올 수 있기 때문에 항상 equals 로 하기!!
Java 관련 개념을 알려주실 때 그 내부 동작이 어떻게 구현되는지 자세하게 알수 있는 강의입니다.
출처: Java TPC (생각하고, 표현하고, 코딩하고) 대시보드 - 인프런 | 강의 (inflearn.com)
'Java > Java 활용 개념 정리' 카테고리의 다른 글
<Java> ArrayList 를 객체 지향 관점으로 이해하기. (0) | 2023.02.06 |
---|---|
[Java] Object 개념 활용하기! // 다형성 관련 개념 총정리 (0) | 2023.02.06 |
[Java] 인터페이스의 활용 예시!(feat.JDBC) (1) | 2023.02.05 |
[Java] 인터페이스 활용(100% 다형성 보장!) (0) | 2023.02.04 |
[Java] 추상클래스(일부 다형성 보장) (0) | 2023.02.04 |
댓글