04_Array(1)

김정욱·2022년 12월 13일
0

JAVA 복습

목록 보기
3/15
post-thumbnail
post-custom-banner

<배열>

1. 배열

1) 정의

  • 동일한 자료형 변수의 나열

2) 특징

  • 한 가지 자료형만 저장 가능
  • 여러 값 저장 가능
  • 한 번 크기를 지정하면 변경 불가능

3) 배열 선언 및 할당

<배열선언>
자료형[] 배열명; -> 현재 stack 메모리에 위치
-----------------------------------------------
int[] arr;
<배열 할당>
new 자료형[배열크기];
---------------------------------------------------------------
arr = new int[3];
-> heap 메모리에 방이 생성되고, 배열명에는 값이 아닌 첫번째 방의 주소값이
저장된다., 배열명 출력시 주소값이 출력되고, 배열명[인덱스] 출력시 값이 출력
<선언 및 할당>
-----------------------------------------------
int[] arr = new int[3];

4) 초기화

<인덱스를 이용한 초기화>
배열명[인덱스] =;
-----------------------------------------------
arr[0] = 1;
arr[1] = 2;
<for문을 이용한 초기화>
-----------------------------------------------
for(int i = 0; i < arr.length; i++) {
	arr[i] = i;
}
-> 초기화 할 값이 일정한 규칙이 있어야 가능
<선언과 동시에 초기화> 
자료형 배열명 = new 자료형[]{}   //new 자료형[] 생략 가능.
------------------------------------------------------
int[] arr = {1, 2, 3, 4, 5};

=>
① int[] arr 선언 -> stack 메모리에 생성
② new 연산자를 통하여 객체 생성하면 heap 메모리에 공간이 할당
③ 초기화 전에는 각 index 공간에는 자료형의 기본값들이 저장
④ stack 메모리의 arr의 안에는 값이 아닌 heap메모리에 있는 객체의 첫번째 방 주소값이 저장되어 있음

2. 복사

1) 얕은 복사

  • data 값이 아닌 주소를 복사
  • 같은 주소값을 가지고 있어 같은 곳을 참조하기 때문에 한쪽에서 수정시 다른쪽도 값이 수정됨

int[] arr1 = new int[3];
int[] arr2 = arr1;

2) 깊은 복사

  • 원본과 다른 주소를 가진 개체에다가 data를 복사

int[] arr1 = new int[3];	// arr1이 초기화 했다고 가정
int[] arr2 = new int[3];
<for문을 이용한 복사>
-------------------------------------------------
for(int i = 0; i < arr1.length; i++) {
	arr2[i] = arr1[i];
}
<System을 이용한 복사>
System.arraycopy(원본, 복사시작점, 복사본, 입력시작점, 복사크기);
--------------------------------------------------------------
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
<Arrays 클래스를 이용한 복사>
Arrays.copyOf(원본, 복사크기)
-------------------------------------------------
arr2 = Arrays.copyOf(arr1, arr1.length);

*코드 공부

String.charAt(인덱스) : 문자열의 인덱스번호 값 출력(0부터시작)
----------------------------------------------------------
str = "abcde";	// 01234가 각 알파벳 인덱스 번호
str.charAt(2) -> 'c'
Arrays.sort(배열명) : 값들의 오름차순 정렬
----------------------------------------------------------
arr = { 2, 4, 1, 3, 5 };
Arrays.sort(arr) -> { 1, 2, 3, 4, 5 }
Arrays.toString(배열명) : 배열의 모든 값 출력 
----------------------------------------------------------
arr = { 2, 4, 1, 3, 5 };
System.out.println(Arrays.toString(arr)); -> [1, 2, 3, 4, 5]
문자열.length() : 문자 길이 반환, 배열명.length : 배열의 길이 반환
---------------------------------------------------------------------
String str1 = "abc";  / String[] str2 = {"abc", "def", "ghi", "jkl"};
str1.length() -> 3 	  / str2.length -> 4
문자열.substring(num1, num2) : 문자열의 num1부터 num2-1에 해당하는 문자 반환
-----------------------------------------------------------------------
str = "abcdefgh";			  
str.substring(1, 4); -> "bcd"
String str = new String(배열명) : char[] -> String
-----------------------------------------------------
char[] ch = {'a', 'b', 'c', 'd'};
String str = new String(ch) -> str = "abcd"
char[] 배열명 = 문자열.toCharArray() : String -> char[]
--------------------------------------------------------------
str = "abcd"
char[] ch = str.toCharArray() -> ch = {'a', 'b', 'c', 'd'}
문자열.replace(문자1, 문자2) : 문자1을 문자2로 바꾼다. 문자2""를 넣으면 삭제가능.
----------------------------------------------------------------------------
String str = "abbccc";	     
str = str.replace("bb", " ") -> str = "a ccc"
str = str.replace(" ", "") -> str = "accc"
String[] String배열명 = String.split("input")
: 문자열을 input의 기준에 따라 구분짓고 문자열배열의 값으로 대입
--------------------------------------------------------------------
String str = "ab!c!def";
String[] strArr = str.split("!"); -> strArr = {"ab",  "c", "def"}
String str = "abcd";
String[] strArr = str.split(""); -> strArr = {"a", "b", "c", "d"}
문자열.repeat(숫자) : 문자열을 숫자만큼 반복하여 늘린다
------------------------------------------------------
String str = "abc";
String newStr = str.repeat(3); -> "abcabcabc"
profile
절박한 마음을 갖고 하루를 보내자!!
post-custom-banner

0개의 댓글