1. n개의 클래스가 선언된 소스 파일을 컴파일하면 바이트 코드 파일은(.class) 클래스 선언한 개수만큼 생긴다.
7. 파일 이름과 동일한 이름의 클래스 선언에만 public 접근 제한자를 붙일 수 있다.
8. .연산자의 이름은 객체 접근 연산자.
9. this는 객체 자신의 참조자.
10. 생성자 오버로딩이 많아질 경우 생성자 간의 중복코드가 많아질 수 있는데, 이를 방지하고자 생성자 안에서 다른 생성자를 호출 할 수 있다.
사용방법은 this() 코드 이며, this()는 자신의 다른 생성자를 호출하는 코드로 "반드시 생성자의 첫줄"에서만 허용된다.
11. 메소드에서 매개 변수의 수를 모를 경우
- 여러 개의 수를 모두 합산하는 메소드를 선언해야 한다면, 몇 개의 매개 변수가 필요할지 미지수다.
// 1. 매개 변수를 배열 타입으로 선언하는 것.
int sum(int[] array)
{
int total = 0;
for(int i=0; i<array.length; i++)
{
total += array[i];
}
return total;
}
int[] values = { 1,2,3,4,5 };
int result = sum(values);
int result2 = sum(new int[] { 1,3,6,98 });
// 2. 값의 리스트만 넘겨주는 것.
// 메소드 호출 시 넘겨준 값의 수에 따라 자동으로 배열이 생성되고 매개값으로 사용된다.
int sum2(int ...list)
{
int total = 0;
for(int i=0; i<list.length; i++)
{
total += list[i];
}
return total;
}
int result3 = sum2(1,2,3,4,5);
int result4 = sum2(3,5,61,23);
12. 클래스의 정적 멤버와 static
- 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다.
- 정적 멤버는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 소속되었기 때문에 호출할 때 클래스 이름으로 호출한다.
- 클래스에 고정된 멤버이므로 클래스 로더가 클래스(바이트코드)를 로딩해서 method 메모리 영역에 적재할 때 클래스별로 관리된다.
- 필드를 선언할 때, 인스턴스 별로 달라야 하나(색깔), 모든 달력이 공통으로 사용하나(원주율값 등)를 기준으로 판단.
- 메소드의 경우, 인스턴스 필드를 이용해서 실행해야 한다, 인스턴스 필드를 사용하지 않는다면 정적 메소드로 사용.
public class jaava{
static String company = "a";
static String model = "b";
static String Info;
// 정적 필드를 초기화 하지 않았을 때 제공되는 정적 초기화 블록
static{
Info = company + "-" model;
}
}
13. 싱글톤(Singleton) 클래스
- 싱글톤 클래스로 만들려면 클래스 외부에서 new 연산자로 "생성자를 호출 할 수 없게" 한다.
- 생성자를 호출한 만큼 객체가 생성되기 때문이다.
// 1. 생성자 앞에 private 를 선언해 외부에서 접근할 수 없게 한다.
// 2. 자신의 타입인 정적 필드를 하나 선언하고, 자신의 객체를 생성해 초기화 한다,
// 3. 싱글톤을 반환하는 정적 메소드를 선언한다.
public class taeyeon{
//정적 필드
private static taeyeon oneaneonlysingleton = new taeyeon();
//생성자
private taeyeon();
//정적 메소드
static taeyeon getInstance()
{
return oneaneonlysingleton;
}
}
8. final 필드
- final 필드는 초기값이 저장되면 이것이 최종값이 되어 프로그램 실행 도중에 수정할 수 없다는 것이다.
- 필드 선언과 동시에 초기화하거나 생성자를 통해 초기화해야 한다.
9. 상수(static final)
- 객체에 속할 필요가 없는 공용성을 띄고(static)
- 값이 변하지 않아야 하는 수.(final)
- 상수 이름은 모두 대문자로 작성하는 것이 관례.
- 정적 블록이나 선언과 동시에 초기화 시킨다.
10. 패키지
- 자바에서는 클래스를 체계적으로 관리하기 위해 패키지를 사용해서 폴더 저장하듯 클래스를 저장 관리 한다.
- 패키지는 클래스를 컴파일하는 과정에서 자동적으로 생성된다.
- 클래스의 전체 이름은 상위패키지.하위패키지.클래스 이다.
- 패키지 선언이 포함된 클래스를 컴파일 하려면 명령 프롬프트를 열고 디렉토리를 설정한 후,
javac -d . classname.java // 현재 폴더 내에 생성
javac -d ..\bin classname.java // 현재 폴더와 같은 위치의 bin 폴더에 생성
javac -d C:\Temp\bin classname.java // 이 폴더에 생성
- 클래스에 main() 메소드가 있다면 명령 프롬프트에서 사용 가능 하고, 패키지가 시작하는 폴더에서 java 명령어를 사용해서 실행하면 된다.
나의 경우
cd C:\Hyunndy_Workspace\bin
C:\Hyunndy_Workspace\bin>java Hyunndy_Toy_Package.Hyunndy
로 하면 Main()이 있는 Hyunndy class를 실행할 수 있다.
나중에 수정. 지금은 귀찮;
'Deperecated > JAVA' 카테고리의 다른 글
JAVA - 인터페이스 (0) | 2020.01.09 |
---|---|
JAVA - 어노테이션 (0) | 2020.01.09 |
JAVA - 열거 타입 (0) | 2020.01.04 |
JAVA - 향상된 for문 (0) | 2020.01.04 |
JAVA관련 토막 지식. (0) | 2019.12.19 |