一.数组:相同数据类型的集合
1.数组下标从0开始,最大下标=长度-1,例如数组长度=4,其数组下标有[0],[1],[2],[3]
2.数组属于引用数据类型,堆内存保存数组的内容
3.数组的动态初始化:
(1)声明并开辟数组空间
(2)先声明,再开辟
(3)数组的引用传递
4.数组的静态初始化:
二.二维数组
格式1: 动态初始化
数据类型 数组名 [ ][ ] = new 数据类型[m][n]
数据类型 [ ][ ] 数组名 = new 数据类型[m][n]
数据类型 [ ] 数组名 [ ] = new 数据类型[m][n]
举例:int [ ][ ] arr=new int [5][3]; 也可以理解为“5行3例”
格式2: 静态初始化
数据类型 [ ][ ] 数组名 = {{元素1,元素2…},{元素1,元素2…},{元素1,元素2…}…};
举例:int [ ][ ] arr={{22,15,32,20,18},{12,21,25,19,33},{14,58,34,24,66},};
静态初始化可用于不规则二维数组的初始化
注:数组更多详细内容见:https://blog.csdn.net/imjavaxb/article/details/80258963
三.数组参数调用
四.数组排序(冒泡)
1.package 数组;
public class DEMO1 {
public static void sort(int temp[])
{
for (int i = 0; i < temp.length; i++) {
for (int j = 0; j < temp.length-1; j++) {
if(temp[j]>temp[j+1])
{
int t = temp[j];
temp[j]=temp[j+1];
temp[j+1] = t;
}
}
}
for (int i = 0; i < temp.length; i++) {
System.out.print(temp[i]+" ");
}
}
public static void main(String[] args) {
int data[] = new int []{3,2,1};
sort(data);
}
2.package 数组;
public class DEMO1 {
public static int[] sort(int temp[])
{
for (int i = 0; i < temp.length; i++) {
for (int j = 0; j < temp.length-1; j++) {
if(temp[j]>temp[j+1])
{
int t = temp[j];
temp[j]=temp[j+1];
temp[j+1] = t;
}
}
}
return temp;
}
public static void main(String[] args) {
int data[] = new int []{3,2,1};
for (int i = 0; i < sort(data).length; i++) {
System.out.println(sort(data)[i]);
System.out.println(data[i]);
}
}
java自带排序函数:
五.二维数组的转置:
1.package 数组;
public class DEMO1 {
//针对n*n(规则)的转置,不会产生垃圾
public static void zhuanzhi(int temp[][])
{
for (int i = 0; i < temp.length; i++) {
for (int j = i; j < temp.length; j++) {
if(i!=j)
{
int t = temp[i][j];
temp[i][j]=temp[j][i];
temp[j][i] = t;
}
}
}
}
public static void main(String[] args) {
int data[][] = new int [][]{{1,2,3},{4,5,6},{7,8,9}};
zhuanzhi(data);
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[i].length; j++) {
System.out.print(data[i][j]+" ");
}
System.out.println();
}
}
2.package 数组;
public class DEMO1 {
public static void main(String[] args) {
int data[][] = new int [][]{{1,2,3},{4,5,6}};
int data2[][]=new int [3][2];
//不规则矩阵转置,需要设置另一个数组
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[i].length; j++) {
data2[j][i]= data[i][j];
}
}
for (int i = 0; i < data2.length; i++) {
for (int j = 0; j <data2[i].length ; j++) {
System.out.print(data2[i][j]+" ");
}
System.out.println();
}
}
六.对象数组:相同引用数据类型的集合
package 数组;
class Person {
private String name;
private int age;
public String getinfo()
{
return name+" "+age;
}
public Person(String n, int a) {
name = n;
age = a;
}
}
public class DEMO1 {
public static void main(String[] args) {
Person p[] = new Person[3];
//需要为数组中的每个元素实例化,p[0],p[1],p[2]中保存的是地址
p[0] = new Person("aaa", 1);
p[1] = new Person("bbb", 2);
p[2] = new Person("ccc", 3);
for (int i = 0; i < p.length; i++) {
System.out.println(p[i].getinfo());
}
}
}
package 数组;
class Person {
private String name;
private int age;
public String getinfo()
{
return name+" "+age;
}
public Person(String n, int a) {
name = n;
age = a;
}
}
public class DEMO1 {
public static void main(String[] args) {
Person p[] = new Person[]{
new Person("aaa", 1),
new Person("bbb", 2),
new Person("ccc", 3)};
for (int i = 0; i < p.length; i++) {
System.out.println(p[i].getinfo());
}
}
}