目次
1.配列の役割
同じタイプの変数をバッチで作成できます
2.アレイの作成
次の3つの作成方法がすべて可能です
int[] arr1=new int[] {1,2,3,4};
int[] arr2={1,2,3,4};
int[] arr3=new int[4];
3.配列の使用
①長さを取得します(.lengthを使用)
public class Pra0104 {
public static void main(String[] args) {
int[] arr={1,2,3,4};
System.out.println(arr.length);
}
}
②アクセス要素
このような方法で配列内の標準アクセス要素を削除することにより、ノートが範囲外のインデックスになることはありません。
配列をトラバースするforループ
public class Pra0104 {
public static void main(String[] args) {
int[] arr={1,2,3,4};
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
次のように、配列をトラバースするたびに
public class Pra0104 {
public static void main(String[] args) {
int[] arr={1,2,3,4};
for(int x:arr){
System.out.println(x);
}
}
}
演算結果:
4.メソッドパラメータとしての配列
例えば:
public class Pra0104 {
public static void main(String[] args) {
int[] arr={1,2,3,4};
printArr(arr);
}
public static void printArr(int[] arr) {
for(int x:arr){
System.out.println(x);
}
}
}
演算結果:
5.メソッドの戻り値としての配列
例:配列内の各要素に2を掛けます
public class Pra0104 {
public static void main(String[] args) {
int[] arr1={1,2,3,4};
int[] arr2=transform(arr1);
for(int x:arr2){
System.out.println(x);
}
}
public static int[] transform(int[] arr1) {
int[] arr2=new int[arr1.length];
for(int i=0;i< arr1.length;i++){
arr2[i]=arr1[i]*2;
}
return arr2;
}
}
演算結果:
6.アレイ関連の演習
①整数配列から文字列
コード
import java.util.Arrays;
public class Pra0104 {
public static void main(String[] args) {
int[] arr={1,2,3,4};
String str= Arrays.toString(arr);
System.out.println(str);
}
}
運転結果
②二分法は、順序付けられた配列内の要素を検索します
前のC言語のコラムで書かれた特定のアイデア
import java.util.Scanner;
public class Pra0104 {
public static void main(String[] args) {
int[] arr={2,4,6,8,10};
find(arr);
}
public static void find(int[] arr) {
System.out.println("请输入要查找的数字");
Scanner sc=new Scanner(System.in);
int find=sc.nextInt();
int left=0;
int right=arr.length-1;
while(left<=right){
int mid=(left+right)/2;
if(find<arr[mid]){
right=mid-1;
}else if(find>arr[mid]){
left=mid+1;
}else{
System.out.println("找到了!下标是:"+mid);
break;
}
}
if(left>right){
System.out.println("找不到!");
}
}
}
演算結果:
③配列の逆順
左と右の2つの添え字を設定します
public class Pra0104 {
public static void main(String[] args) {
int arr[]={1,2,3,4};
reverseArr(arr);
//输出逆序后的数组
for(int x:arr){
System.out.println(x);
}
}
public static void reverseArr(int[] arr) {
int left=0;
int right=arr.length-1;
while(left<right){
int temp=arr[left];
arr[left]=arr[right];
arr[right]=temp;
left++;
right--;
}
}
}
演算結果:
④配列の順番を確認してください
ここで、配列が昇順であるかどうかを確認するには、trueまたはfalseを返します
public class Pra0104 {
public static void main(String[] args) {
int[] arr={1,2,3,4};
System.out.println(isOrder(arr));
}
public static boolean isOrder(int[] arr) {
for(int i=0;i<arr.length-1;i++){
if(arr[i]>arr[i+1]){
return false;
}
}
return true;
}
}
演算結果:
⑤配列コピー
独自のコピーメソッドを実装する
public class Pra0104 {
public static void main(String[] args) {
int[] arr={1,2,3,4};
int[] newArr=copy(arr);
for(int x:newArr){
System.out.println(x);
}
}
public static int[] copy(int[] arr) {
int[] ret=new int[arr.length];
for(int i=0;i<arr.length;i++){
ret[i]=arr[i];
}
return ret;
}
}
演算結果:
ライブラリを使用する
import java.util.Arrays;
public class Pra0104 {
public static void main(String[] args) {
int[] arr={1,2,3,4};
int[] newArr=Arrays.copyOf(arr,arr.length);
System.out.println(Arrays.toString(newArr));
}
}
演算結果:
注:コピーするときに、質問があるかもしれません。なぜint [] newArr = arrだけではないのですか?これは、このような直接割り当ては元の配列の別のエイリアスと同等であり、newArrはarrが指す配列を指しているため、実際には同じ配列であり、下の図に示すようにコピー効果は得られないためです