- 相關(guān)推薦
Java數(shù)組定義常用方法
Java中的數(shù)組、是一種簡單的線性數(shù)據(jù)存儲結(jié)構(gòu)、他用犧牲自動擴(kuò)展大小來換取與集合相比的唯一優(yōu)勢——查詢效率的提升。Java中的數(shù)組有什么類型?我們要怎么定義這些數(shù)組呢?下面跟yjbys小編一起來學(xué)習(xí)Java數(shù)組定義常用方法吧!
java中有兩種數(shù)據(jù)類型:
a)引用類型
b)基礎(chǔ)類型
其中基礎(chǔ)類型又有兩種:
b1)數(shù)值類型
b2)及布爾類型。
數(shù)組——也為java的一個數(shù)據(jù)類型、歸類為引用類型。本文意圖說清楚兩點(diǎn):
1、數(shù)組的聲明以及初始化。
2、常用的數(shù)組方法。
補(bǔ)充一點(diǎn):對于我們常說的二維數(shù)組、多維數(shù)組其實(shí)是一維數(shù)組的延伸、這里暫時只圍繞一維數(shù)組。
【數(shù)組的聲明及初始化】
1、數(shù)組的聲明:
作為一種引用類型、就如我們平常使用引用類型的時候聲明一樣、一般有兩種寫法:
a) type[] arrayName; exp: String[] strArray;
b) type arrayName[]; exp: String strArray[];
第二種源于C的寫法、由于很容易造成混淆、所以現(xiàn)在基本不使用這種聲明方式了。
2、數(shù)組的初始化:
數(shù)組的初始化有兩種:
a) 靜態(tài)初始化——數(shù)組大小由系統(tǒng)分配、我們只為數(shù)組每個位置上賦值
String[] strArray1 = {"a", "b", "c", "d", "e"};
String[] strArray2 = new String[]{"a", "b", "c", "d", "e"};//在 new String[]中不能指定String數(shù)組的大小!
b)動態(tài)初始化——只指定數(shù)值的大小、初始化工作由系統(tǒng)為我們完成(即為數(shù)組的每個位置賦初始值)
String[] strArray3 = new String[5];//此時String數(shù)組的每個位置上的值都由系統(tǒng)來初始化、使用默認(rèn)的值""
//我們能做的是動態(tài)的為strArray3每個位置上的值進(jìn)行修改
for (int i = 0; i < strArray1.length; i++) {
//這里僅用原始的方法進(jìn)行賦值。
strArray3[i] = strArray1[i];
}
【數(shù)組的常用方法】
package com.chy.array.usefulMethods;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import com.chy.array.bean.Student;
@SuppressWarnings("all")
public class ArrayUseFulMethoed {
private static int[] intArray = {1, 2, 3, 4, 5};
private static String[] strArray = {"a", "b", "c", "d", "e"};
/**
* 填充元素、比較大小、復(fù)制元素
*/
public static void testFillArray(){
//注意字符串和對象的不同
Student[] student1 = new Student[4];
Student[] student2 = new Student[4];
System.out.println(Arrays.equals(student1, student2));//true
Arrays.fill(student1, 0, 4, new Student(1,"chy"));
Arrays.fill(student2, new Student(1,"chy"));
System.out.println(Arrays.equals(student1, student2));//false
String[] str1 = new String[4];
String[] str2 = new String[]{"a", "a", "a", "a"};
String[] str3 = {new String("a"), new String("a"), new String("a"), new String("a")};
Arrays.fill(str1, "a");
System.out.println(Arrays.equals(str1, str2));//true
System.out.println(Arrays.equals(str2, str3));//true
String[] str4 = Arrays.copyOf(str1, 2);//是將傳入的數(shù)組拷貝len個元素到新的數(shù)組、相當(dāng)于復(fù)制本身的一部分或者全部形成一個全新的數(shù)組
System.out.println(str4.length + "=======" + Arrays.toString(str4));// 2=======[a, a]
String[] str5 = new String[8];
System.arraycopy(str4, 0, str5, 6, 2);//是將str4從下標(biāo)0開的2個元素拷貝到從下標(biāo)6開始放置的數(shù)組str5中
System.out.println(str5.length + "=======" + Arrays.toString(str5));// 8=======[null, null, null, null, null, null, a, a]
}
/**
* 以字符串的形式輸出指定數(shù)組的“模樣”
*/
public static void printOriginalArray(){
String intArrayToString = Arrays.toString(intArray);
System.out.println(intArrayToString); //result: [1, 2, 3, 4, 5]
}
/**
* 將數(shù)組轉(zhuǎn)化成List集合
* 注意:不能直接將int[]轉(zhuǎn)化為集合、因?yàn)閍sList()方法的參數(shù)必須是對象。應(yīng)該先把int[]轉(zhuǎn)化為Integer[]。
* 對于其他primitive類型的數(shù)組也是如此,必須先轉(zhuǎn)換成相應(yīng)的wrapper類型數(shù)組。
*/
public static void convetArrayToList(){
Integer[] integerArray = new Integer[intArray.length];
for (int i = 0; i < integerArray.length; i++) {
integerArray[i] = intArray[i];
}
ArrayList integerList1 = new ArrayList(Arrays.asList(integerArray));
/*
* 不能寫成下面:
* ArrayList integerList2 = (ArrayList)Arrays.asList(integerArray);
* 返回的是List、強(qiáng)轉(zhuǎn)可以通過編譯、但是不能正常使用。
*/
for(int i : integerList1){
System.out.print(i);
}
//result: 12345
System.out.println();
}
/**
* 將List集合轉(zhuǎn)換成數(shù)組
*/
public static void convetListToArray(){
ArrayList strList = new ArrayList(Arrays.asList(strArray));
String[] strArrayFromList = new String[strList.size()];
strList.toArray(strArrayFromList);
System.out.println(Arrays.toString(strArrayFromList)); //result: [a, b, c, d, e]
/*
* 注意:不能寫成這樣:String[] strArrayFromList = (String[])strList.toArray(strArrayFromList);會拋出ClassCastException。
* List.toArray()與List.toArray(T[] t)的區(qū)別在于:
* List.toArray()返回的是一個Object[]、不能強(qiáng)轉(zhuǎn)成String[]、強(qiáng)轉(zhuǎn)的話可以通過編譯、但是不能進(jìn)行String[]的操作
* 而List.toArray(T[] t)會將list的值轉(zhuǎn)換成T類型的數(shù)組。
*/
}
/**
* 將數(shù)組轉(zhuǎn)換成Set集合
*/
public static void convertArrayToSet(){
Set set = new HashSet(Arrays.asList(strArray));
//Set具有無序性、所以輸出結(jié)構(gòu)不一定是原來數(shù)組元素存放順序
System.out.println(set); //result: [d, e, b, c, a]
}
/**
* 判斷某個數(shù)組中是否包含一個元素、思路:將數(shù)組轉(zhuǎn)換成list使用list的contains方法
*/
public static void isContainObject(){
ArrayList strList = new ArrayList(Arrays.asList(strArray));
System.out.println(strList.contains("a")); //result: true
//另一種實(shí)現(xiàn)
Arrays.sort(strArray);
if(Arrays.binarySearch(strArray, "c") >= 0){
System.out.println(true);
}else{
System.out.println(false);
}
}
/**
* 將兩個相同類型的數(shù)組連接起來
*/
public static void connTwoSameArray(){
int[] intArray2 = new int[]{6, 7, 8, 9, 10};
}
/**
* 將數(shù)組中數(shù)據(jù)排序
*/
public static void sortArray(){
String[] str = {"c", "a" ,"d" ,"z" };
Arrays.sort(str);
System.out.println(Arrays.toString(str));
//反序、
Arrays.sort(str, Collections.reverseOrder());
System.out.println(Arrays.toString(str));
}
public static void main(String[] args) {
/*printOriginalArray();
convetArrayToList();
convetListToArray();
isContainObject();
convertArrayToSet();
sortArray();*/
testFillArray();
}
}
【Java數(shù)組定義常用方法】相關(guān)文章:
Java數(shù)組操作方法大全08-22
Java枚舉的常用方法10-05
c語言字符數(shù)組使用方法10-14
Java線程同步的方法10-25
Java中日期的處理方法09-03
JAVA認(rèn)證開源技術(shù):關(guān)于Java的對象equals方法06-26