언어/Java

24년 09월 23일

DH_PARK 2024. 9. 30. 17:48

자바

접근 한정자

  • public : 모든 클래스에서 사용가능
  • private : 오로지 클래스 내에서만 사용가능
  • protected : default 접근 제한과 마찬가지로 같은 패키지에 속하는 클래스에서 필드와 메소드를 사용할 수 있도록 합니다. 차이점으로 다른 패키지에 속한 클래스가 해당 클래스의 자식 클래스라면 필드와 메소드를 사용할 수 있습니다.
  • default : 따로 지정하지 않을시에 지정되는 한정자. 같은 패키지 안에서는 제한 없이 필드와 메소드를 사용할 수 있으나 다른 패키지에서는 접근할 수 없음

캡슐화 : 생성한 객체를 어떤 메서드와 필드로 어떻게 일을 수행할지 외부에 숨기는 특성

  • 특정 목적의 정보가 외부로 노출되는 것을 막기 위해 정보 은닉을 수반한다
  • 특정 목적 기능을 구현하는데 필요한 세부 기능들을 묶어서 처리하는 방법
  • 캡슐화 작업은 각 공정과정에 대한 정확한 이해가 수반되어야 한다.

eqauls 함수 : String 비교하는 함수

두 문자열의 내용을 비교한다.

String str2 = "abc";
String str1 = "abc";
System.out.println(str1.equals(str2)); 
//두 개가 같은 문자열이므로 true를 리턴한다.
// 아니라면 false 를 리턴

concat 함수

Concat
concat은 String 클래스에서 제공하는 기본 메서드이며 동작 방법은 합친 문자열을 String으로 생성한다. concat() 메서드를 이용해서 문자열을 추가할 때마다, 새로운 인스턴스를 생성하기 때문에 성능이나 속도 면에서 좋지 않다.

디폴트 생성자 : 생성자가 없는 클래스를 컴파일할 때 자바 컴파일러에서 자동적으로 생성자를 생성해주는 생성자

생성자도 오버로드 가능 !

자바스크립트나 파이썬에서는 배열 동적 확장이 됐었는데

자바는 동적확장이 따로 안됨..!!

배열 선언

자바는 배열이 동적할당이 안되기 때문에 배열을 선언할 때 무조건 길이를 지정해주어야 한다 !

⇒ 배열의 선언과 생성을 따로 하는 경우 new 타입[]은 생략이 불가하다.

java 배열 생성하는 방법(여러가지임)
int arr3[] = new int[3]; //길이가3인 배열
int[] arr2 = new int[3];
int[] arr1 = new int[] {1,2,3,4,5} //배열안에 직접 값 넣어서 선
int[] arr = {1,2,3,4,5} //배열의 초기화

System.out.println(arr1 instanceof Object);

- instanceof는객체 타입을 확인하는 연산자이다.
-형변환 가능 여부를 확인하며true / false로 결과를 반환한다.
- 주로 상속 관계에서 부모객체인지 자식 객체인지 확인하는 데 사용된다.

Arrays.stream 함수.. (import 해야함)

다차원 배열:

주소값만 복사 = 얕은 복사

	//얕은복사(주소복사)
		int arr1[] = {10,20,30};
		int arr2[];
		arr2 = arr1;
		arr1[0]=100;
//원래 arr1[0]은 10이었으나 100으로 지정해서 100 출력.
//근데 arr2[0] 도 100 출력?	= arr1의 주소값을 바꾸기 때문에
//얕은복사를 한 arr2 의 첫번째 인덱스도 100으로 바뀌게 됨. (arr2는 arr1 의 메모리 주소값을 참고중임)
		

데이터를 복사해서 대입 = 깊은복사

//깊은 복사(값 복사)
		int arr3[] = new int[3];  //새로운 길이 3짜리 배열 생성
		for(int i=0;i<arr3.length;i++) {
			arr3[i] = arr1[i];  //arr3 배열에 기존 arr1 들의 요소 복사
		}
		System.out.println("arr1 : " +arr1);	//
		System.out.println("arr3 : " +arr3);	// 서로의 주소 값이 다름
		System.out.println(arr2);	//여전히 arr1 와 주소값 같음

이렇게 하면 arr1 과 arr3 배열은 서로 완전히 다른 객체의 배열이 된다.

(주소값 자체가 다름)


배열 객체를 만들때는 참조변수를 넣어줘야 하기 때문에 각 요소들의 객체를 생성해주어야 한다. !


Static (정적 할당)

static int num1; //공유메모리영역(클래스 , 메서드)
//static 변수를 선언하면 객체를 생성하지 않아도 사용할 수 있다.
//선언할 때 이미 공유메모리영역에 할당 되기 때문에 객체가 생성되기 전
//이미 생성된 변수라서 클래스 안에서 어디든지 사용가능

싱글톤 패턴이란?

싱글톤(Singleton) 패턴의 정의는 단순하다. 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다.

중요한 개념인것 같긴 한데 다음에 좀 더 깊이 다뤄보자.

'언어 > Java' 카테고리의 다른 글

자바 싱글톤패턴이란?  (1) 2024.10.03
JAVA 예외처리  (0) 2024.10.01
자바의 컬렉션이란?  (0) 2024.09.30
자바 Property란?  (1) 2024.09.30
Java 제네릭이란?  (0) 2024.09.30