Java (5)
Java(5):配列
1.配列
배열이란?
•同じデータ型の連続データ構造(データ型-同じ)•インデックス演算子[]を使用したクイック参照
•物理的位置と論理的位置が同じ
•並べ替え順は0から
•JavaではArrayListを使用してオブジェクト配列を実装することが多い
배열 선언
int[] arr1 = new int[10];int arr2[] = new int[10];
배열 초기화
配列は宣言とともにデータ型に基づいて初期化されます(整数は0、実数は0.0、オブジェクトはnull)必要に応じて初期値を指定できます
int[] numbers = new int[] {10, 20, 30};
//개수 생략해야 함
int[] numbers = {10, 20, 30};
// new int[] 생략 가능 , 선언과 동시에 초기화할때만 이렇게 가능
int[] ids;
ids = new int[] {10, 20, 30};
// 선언후
배열의 길이와 요소의 개수는 동일하지 않음
•アレイを宣言すると、どのくらいのメモリが割り当てられますが、実際の要素(データ)がない場合があります.•配列のlengthプロパティは配列の個数を返します.したがって、要素の個数とは異なります.
•lengthを使用してエラーが発生した場合、要素数の変数を保持します(count)
문자 배열
強化されたfor文の使用0からn-1の順に並べられたn個の要素は、非常に簡単に使用できます.
for( 변수 : 배열) {
}
public class CharArrayTest {
ㅤ
public static void main(String[] args) {
ㅤ
char[] alpahbets = new char[26];
char ch = 'A';
ㅤ
for(int i = 0; i<alpahbets.length; i++) {
ㅤ
alpahbets[i] = ch++;
}
ㅤ
for(char alpha : alpahbets) {
System.out.println(alpha +","+ (int)alpha);
}
}
}
ㅤㅤㅤㅤ
ㅤㅤ
ㅤㅤ
ㅤㅤ
2.オブジェクトの整列
객체 배열 선언과 구현
•デフォルトのデータ型配列では、宣言と同時に配列サイズと同じメモリが割り当てられますが、オブジェクト配列では、要素としてのオブジェクトのアドレス(null)を含む1つのメモリ(4バイト8バイト)のみが割り当てられ、各要素オブジェクトが作成されて格納される必要があります.最初は、アドレスを格納できる部屋は1つしかありません(オブジェクトを格納するのではなく)
ひとつずつ入れて
public class Book {
ㅤ
private String title;
private String author;
ㅤ
public Book() {}
ㅤ
public Book(String title, String author) {
this.title = title;
this.author = author;
}
ㅤ
public String getTitle() {
return title;
}
ㅤ
public void setTitle(String title) {
this.title = title;
}
ㅤ
public String getAuthor() {
return author;
}
ㅤ
public void setAuthor(String author) {
this.author = author;
}
ㅤ
public void showBookInfo() {
System.out.println(title + "," +author);
}
}
オブジェクトを作成し、各配列の要素として保存します.public class BookArrayTest {
ㅤ
public static void main(String[] args) {
ㅤ
Book[] library = new Book[5];
ㅤ
library[0] = new Book("태백산맥1", "조정래");
library[1] = new Book("태백산맥2", "조정래");
library[2] = new Book("태백산맥3", "조정래");
library[3] = new Book("태백산맥4", "조정래");
library[4] = new Book("태백산맥5", "조정래");
ㅤ
for(int i =0; i<library.length; i++) {
System.out.println(library[i]);
library[i].showBookInfo();
}
}
}
객체 배열 복사하기
System.ArrayCopy(src、src pos、dest、destpos、length)javaが提供する配列レプリケーション方法1)浅い放射
オブジェクトアドレスのみをコピーし、配列内の要素を変更するときに一緒に変更します.
2つの配列は同じオブジェクトを指します.
public class ObjectCopy {
ㅤ
public static void main(String[] args) {
ㅤ
Book[] library = new Book[5];
Book[] copyLibaray = new Book[5];
ㅤ
library[0] = new Book("태백산맥1", "조정래");
library[1] = new Book("태백산맥2", "조정래");
library[2] = new Book("태백산맥3", "조정래");
library[3] = new Book("태백산맥4", "조정래");
library[4] = new Book("태백산맥5", "조정래");
ㅤ
System.arraycopy(library, 0, copyLibaray, 0, 5);
ㅤ
System.out.println("======copy library=========");
for( Book book : copyLibaray ) {
book.showBookInfo();
}
ㅤ
library[0].setTitle("나목");
library[0].setAuthor("박완서");
ㅤ
System.out.println("======library=========");
for( Book book : library) {
book.showBookInfo();
}
ㅤ
System.out.println("======copy library=========");
ㅤ
for( Book book : copyLibaray) {
book.showBookInfo();
}
}
}
2)深さ放射各オブジェクトを作成してオブジェクトの値をコピーし、配列が異なるオブジェクトを指すようにします.
public class ObjectCopy2 {
ㅤ
public static void main(String[] args) {
ㅤ
Book[] library = new Book[5];
Book[] copyLibaray = new Book[5];
ㅤ
library[0] = new Book("태백산맥1", "조정래");
library[1] = new Book("태백산맥2", "조정래");
library[2] = new Book("태백산맥3", "조정래");
library[3] = new Book("태백산맥4", "조정래");
library[4] = new Book("태백산맥5", "조정래");
ㅤ
copyLibaray[0] = new Book();
copyLibaray[1] = new Book();
copyLibaray[2] = new Book();
copyLibaray[3] = new Book();
copyLibaray[4] = new Book();
ㅤ
for(int i = 0; i< library.length; i++) {
ㅤcopyLibaray[i].setTitle(library[i].getTitle());
ㅤ copyLibaray[i].setAuthor(library[i].getAuthor());
}
ㅤ
ㅤ
library[0].setTitle("나목");
library[0].setAuthor("박완서");
ㅤ
System.out.println("======library=========");
for( Book book : library) {
book.showBookInfo();
}
ㅤ
System.out.println("======copy library=========");
for( Book book : copyLibaray) {
book.showBookInfo();
}
}
}
다차원 배열
•2 Dを超えるアレイの実装•平面(2 Dアレイ)または空間(3 Dアレイ)を使用したインプリメンテーション
int[][] arr = {{1,2,3}, {4,5,6}}
ㅤ
public class TwoDimensionTest {
ㅤ
public static void main(String[] args) {
int[][] arr = { {1,2,3}, {4,5,6,7}};
int i, j;
ㅤ
for(i =0; i<arr.length; i++) {
for(j=0; j<arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println(", \t" + arr[i].length);
System.out.println();
}
}
}
ArrayList
java.utilパッケージから提供•従来のアレイ宣言および使用方法では、アレイの長さが決定され、要素の数がアレイの長さより大きい場合は、アレイを再割り当ておよびコピーする必要があります.
•アレイ内の要素を追加または削除する場合は、他の要素の移動を実行する必要があります.
•ArrayListは、オブジェクト配列をより効率的に管理するJavaが提供するクラスです
•多くの方法で最適化されたアルゴリズムが採用されており、各方法の使用方法を熟知するだけでヘルプを得ることができます.
package ch23;
ㅤ
import java.util.ArrayList;
import ch21.Book;
ㅤㅤ
public class ArrayListTest {
ㅤㅤ
public static void main(String[] args) {
ㅤ
ArrayList<Book> library = new ArrayList<Book>(); // 어떤 객체 넣을지 지정
ㅤ
library.add(new Book("태백산맥1", "조정래"));
library.add(new Book("태백산맥2", "조정래"));
library.add(new Book("태백산맥3", "조정래"));
library.add(new Book("태백산맥4", "조정래"));
library.add(new Book("태백산맥5", "조정래"));
ㅤ
for(int i =0; i<library.size(); i++) {
library.get(i).showBookInfo();
}
}
}
F 1を押してArrayListを表示メソッドの表示、メソッド名とパラメータの表示、および戻り値の表示
最後のアレンジで試してみる
본 게시글은 fastcampus 박은종강사 수업을 듣고 개인적으로 정리한 내용임을 밝힘.
Reference
この問題について(Java (5)), 我々は、より多くの情報をここで見つけました https://velog.io/@anthony16/Java-5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol