초보 자 자바 배열
배열 의 성명 생 성
dataType[] array;// : int[] nums;
dataType array[];// : int nums[];
new 를 사용 하여 배열 의 문법 을 만 듭 니 다:
dataType[] array = new dataType[arraySize]// int[] nums = new int[10];
배열 의 요 소 는 색인 을 통 해 접근 합 니 다.배열 색인 은 0 부터 시작 합 니 다.배열 의 길이 가 져 오기:
array.length
연습:배열 에 1 부터 10 까지 반복 적 으로 값 을 부여 하고 배열 의 합 계 를 출력 합 니 다.
public static void main(String[] args) {
//
int[] array = new int[10];
//sum
int sum = 0;
//
for (int i = 1;i<=array.length;i++){
array[i-1] = i;
}
// , sum
for (int j = 0;j<array.length;j++){
sum = sum + array[j];
}
System.out.println(" :"+sum);
}
메모리 분석:상기 연습 과 이 간단 한 메모리 분석 사고 도 를 결합 하여 배열 이 어떻게 자바 메모리 에 생 성 되 었 는 지 간단하게 분석 해 보 세 요.
세 가지 초기 화 상태
int[] a = {1,2,3};
Man[] mans = {new Man(1,1)}//Man
int[] a = new int[2];
a[0] = 1;
a[1] = 2;
배열 의 기본 초기 화동적 초기 화 는 기본 초기 화 를 포함 합 니 다.배열 은 인용 형식 으로 그 요 소 는 클래스 의 인 스 턴 스 변수 에 해당 하기 때문에 배열 이 공간 을 분배 하면 그 중의 모든 요소 도 인 스 턴 스 변수 와 같은 방식 으로 암시 적 으로 초기 화 됩 니 다.
int[] a = new int[2];// new ,
배열 의 네 가지 기본 특징For-each 순환
public static void main(String[] args) {
int[] arrays = {1,3,5,7,9};
//JDK1.5 ,
for (int array : arrays) {
System.out.println(array);
}
}
배열 방법 입 참
public static void main(String[] args) {
int[] arrays = {2,4,6,8,10};
printArray(reverse(arrays));// 10 8 6 4 2
}
//
public static void printArray(int[] arrays){
for(int i = 0; i < arrays.length; i++){
System.out.print(arrays[i]+" ");
}
}
배열 반환 값
public static void main(String[] args) {
int[] arrays = {2,4,6,8,10};
// for-each
for(int array : reverse(arrays)){
System.out.print(array+" ");
}
}
// ,
public static int[] reverse(int[] arrays){
int[] result = new int[arrays.length];
for (int i = 0,j=arrays.length-1; i < arrays.length; i++,j--) {
result[j] = arrays[i];
}
return result;
}
다 차원 배열다 차원 배열 은 배열 의 배열 이 라 고 볼 수 있다.예 를 들 어 2 차원 배열 은 특수 한 1 차원 배열 로 모든 요 소 는 1 차원 배열 이다.
2 차원 배열
int a[][] = new int[3][2]// 3 2
예:2 차원 배열 의 모든 요 소 를 만 들 고 인쇄 합 니 다.
public static void main(String[] args) {
int[][] arrays = {{1,2},{3,4},{5,6}};
for (int i = 0; i <arrays.length ; i++) {
for (int j = 0;j<arrays[i].length;j++){
System.out.print(arrays[i][j]+" ");
}
System.out.println();
}
}
Arrays 클래스java.util.Arrays
상용 기능:
지정 한 배열 의 내용 을 나타 내 는 문자열 형식 을 되 돌려 줍 니 다.toString 방법 을 통 해.
public static void main(String[] args) {
int[] arrays = {9,5,8,7,100,365,277,25,64};
System.out.println(Arrays.toString(arrays));
}
지정 한 int 값 을 지정 한 int 배열 의 모든 요소 에 할당 합 니 다:fill 방법 을 통 해.
public static void main(String[] args) {
int[] arrays = {9,5,8,7,100,365,277,25,64};
Arrays.fill(arrays,0);// 0
System.out.println(Arrays.toString(arrays));
// [0, 0, 0, 0, 0, 0, 0, 0, 0]
int[] arr = {9,5,8,7,100,365,277,25,64};
// a -
// fromIndex - ( )
// toIndex - ( )
// val -
Arrays.fill(arr,0,5,9);// 9
System.out.println(Arrays.toString(arr));
}
배열 정렬:sort 방법 을 통 해 오름차 순 으로 합 니 다.
public static void main(String[] args) {
int[] arrays = {9,5,8,7,100,365,277,25,64};
Arrays.sort(arrays);// :
System.out.println(Arrays.toString(arrays));
// [5, 7, 8, 9, 25, 64, 100, 277, 365]
}
비교 배열:equals 방법 을 통 해 배열 의 요소 값 이 같 는 지 비교 합 니 다.
public static void main(String[] args) {
int[] arrays = {9,5,8,7,100,365,277,25,64};
int[] arrays2 = {9,5,8,7,100,365,277,25,64};
boolean flag = Arrays.equals(arrays, arrays2);
System.out.println("arrays arrays2 :"+flag);
}
거품 정렬거품 정렬 알고리즘 작 동:
public static void main(String[] args) {
int[] arrays = {9,5,8,7,100,365,277,25,64};
sort(arrays);
}
// : 。 ,
public static void sort(int array[]){
//temp ,
int temp = 0;
for (int i = 0; i < array.length-1; i++) {
for (int j = 0; j < array.length-1-i; j++) {
if(array[j]>array[j+1]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(array));
}
상기 코드 는 정지점 Debug 를 통 해 정렬 과정 에서 마지막 정렬 을 실행 한 후에 데이터 가 모두 정렬 되 었 지만 프로그램 이 정렬 을 완 료 했 는 지 판단 할 수 없습니다.이 부족 함 을 해결 하기 위해 서 는 플래그 비트 flag 를 설정 하여 최적화 할 수 있 습 니 다.초기 값 을 false 로 설정 하면 정렬 된 표 가 무질서 한 표 임 을 표시 합 니 다.정렬 이 시작 되 기 전에 flag 값 을 false 로 설정 하고 데이터 교환 을 할 때 flag 를 비 true 로 수정 합 니 다.새로운 정렬 이 시 작 될 때 이 플래그 를 검사 합 니 다.이 플래그 가 false 라면 지난번 에 데 이 터 를 교환 하지 않 았 음 을 나타 내 고 정렬 을 끝 냅 니 다.그렇지 않 으 면 정렬 하기;
예:
public static void main(String[] args) {
int[] arrays = {9,5,8,7,100,365,277,25,64};
sort(arrays);
}
public static void sort(int array[]){
//temp ,
int temp = 0;
for (int i = 0; i < array.length-1; i++) {
boolean flag = false;
for (int j = 0; j < array.length-1-i; j++) {
if(array[j]>array[j+1]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = true;
}
}
if(flag==false){
break;
}
}
System.out.println(Arrays.toString(array));
}
희소 배열예:11 행 11 열 이 있 는 오목 판
(0:없 음)(1:검은색)(2:흰색)
이 2 차원 배열 의 많은 값 이 기본 값 0 이기 때문에 의미 없 는 데 이 터 를 많이 기록 했다.우 리 는 희소 한 배열 로 압축 을 최적화 할 수 있다.
public static void main(String[] args) {
//1. array1 11 11 (0: 1: 2: )
int[][] array1 = new int[11][11];
// ,1 ,2
array1[1][2] = 1;
array1[2][3] = 2;
//
System.out.println(" ");
for(int[] ints : array1){
for (int anInt : ints){
System.out.print(anInt+"\t");
}
System.out.println();
}
System.out.println("==========================================");
//2.
int sum = 0;//sum
//11
for (int i = 0; i < 11; i++) {
//11
for (int j = 0; j <11 ; j++) {
// 0, +1
if(array1[i][j]!=0){
sum++;
}
}
}
System.out.println(" :"+sum);
//3. array2
//sum+1 +1 ,3 、 、
int[][] array2 = new int[sum+1][3];
array2[0][0] = 11;//
array2[0][1] = 11;//
array2[0][2] = sum;//
//4. , 0
int count = 0;//
for (int i = 0; i < array1.length ; i++) {
for (int j = 0; j < array1[i].length; j++) {
if (array1[i][j]!=0){
count++;// +1 array2
array2[count][0] = i;//
array2[count][1] = j;//
array2[count][2] = array1[i][j];//
}
}
}
System.out.println(" ");
System.out.println(" "+"\t"+" "+"\t"+" ");
for (int i = 0; i < array2.length; i++) {
System.out.println(array2[i][0]+"\t"
+array2[i][1]+"\t"
+array2[i][2]+"\t");
}
System.out.println("==========================================");
//5. array2 array3
// array2[0][0] [0][1] ,array2 11 11
int[][] array3 = new int[array2[0][0]][array2[0][1]];
// , i 1 , array2[0]
for (int i = 1; i < array2.length; i++) {
//0 int ,
array3[array2[i][0]][array2[i][1]] = array2[i][2];
}
// array3
System.out.println(" ");
for(int[] ints : array3){
for (int anInt : ints){
System.out.print(anInt+"\t");
}
System.out.println();
}
}
결과:총결산
이 글 은 여기까지 입 니 다.당신 을 도 울 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.