世间万物皆对象,所以说数组也是一个对象。
本文将具体阐述就目前所对数组的理解,包括数组的一些定义、数组中的一些方法、还有数组在内存中的具体实现来具体阐述数组也是一个对象这个核心概念,之后随着学习的深入,也会对本篇文章进行改正,如果有不同的理解,欢迎一起来交流!
数组
简单来说,数组就是把具有相同类型的若干元素按无序的形式组织起来的一种形式,是用于储存多个相同类型数据的集合。通过使用数组,可以在很大程度上缩短和简化程序代码,从而提高应用程序的效率。
一维数组
注意:只要使用new关键字,就会初始化一个对象,调用该对象的构造方法,所以说数组也是一个对象,
-
一维数组的定义和初始化(分别由基本类型和引用数据类型)
静态初始化
//静态初始化数组
int[] arr2={1,11,111};
动态初始化
int[] arr1=new int[3];
arr1[0]=1;
arr1[1]=1;
arr1[2]=2;
默认初始化
//默认初始化数组
int[] arr=new int[5];
引用类型初始化
/**
* 定义一个引用数据类型的数组
*/
public class ArrayTest02 {
public static void main(String[] args) {
Man[] man={new Man(12,"张三"),
new Man(13,"李四"),
new Man(13,"王五")
};
for (int i=0;i<man.length;i++){
System.out.println(man[i].getName());
}
}
}
class Man{
private int age;
private String name;
public Man(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- 数组的遍历
for循环遍历数组(数组遍历过程中会用数组名.length,所以说数组也是一个对象,对象或者类才会调用方法)
public static void main(String[] args) {
//默认初始化数组
int[] arr=new int[5];
//动态初始化数组
int[] arr1=new int[3];
arr1[0]=1;
arr1[1]=1;
arr1[2]=2;
//静态初始化数组
int[] arr2={1,11,111};
//数组的遍历
for(int i=0;i<arr.length;i++){
arr[i]=2*i+1;
}
for (int j=0;j<arr.length;j++){
System.out.println(arr[j]);
}
}
多维数组
注意:二维数组就是一维数组中的数据又存放了一个数组,如果说三维度,就是二维数组中又存放了数组
- 二维数组的定义和初始化
静态初始化
int[] arr2={1,11,111};
动态初始化
Object[] a={1001,"李四",18,"程序员"};
Object[] b={1002,"王五",18,"程序员"};
Object[] c={1001,"赵六",18,"程序员"};
Object[] d={1001,"张三",18,"程序员"};
Object[][] emps=new Object[4][];
emps[0]=a;
emps[1]=b;
emps[2]=c;
emps[3]=d;
默认初始化
int[][] arr=new int[5][];
数组中的工具类和方法的作用
package com.array;
import java.util.Arrays;
/**
* 测试Java.util.Arrays类
* Arrays这个类是Java提供给我们操作数组的工具类
* 可以让我们实现简单的一些查找、排序、打印、填充等功能
*/
public class ArraysMethodTest {
public static void main(String[] args) {
int[] a={100,200,300};
//打印
System.out.println(Arrays.toString(a));
//排序
int[] b={1,12,11,123,255,10};
Arrays.sort(b);
System.out.println(Arrays.toString(b));
//对数组中的任意元素进行折半查找
//前提:必须对数组先进行排序 数组b的结果:[1, 10, 11, 12, 123, 255]
System.out.println(Arrays.binarySearch(b,12));
//对字符串进行填充,注意填充的时候包头不包尾
int[] c={11,22,33,44,55};
Arrays.fill(c,2,4,200);
System.out.println(Arrays.toString(c));
}
}
数组在内存中的实现
观察下面代码,实现下列代码在内存中的实现
Object[] a={1001,"李四",18,"程序员"};
Object[] b={1002,"王五",18,"程序员"};
Object[][] emps=new Object[4][];
emps[0]=a;
emps[1]=b;
JavaBean和一维数组的综合使用
package com.array;
public class JavaBeanAndArray {
public static void main(String[] args) {
// String[] goods_0={1,"雷神牌鼠标","BZ_001",99.21,0.9} 这个与下面的相同
// 所以说JavaBean和以为数组的使用和二维数组的使用是一样的
Goods goods_01=new Goods(1,"雷神牌鼠标","BZ_001",99.21,0.9);
Goods goods_02=new Goods(2,"键盘侠玩偶","BZ_002",99.22,0.8);
Goods goods_03=new Goods(3,"实战Java程序设计","BZ_003",99.23,0.7);
Goods goods_04=new Goods(4,"阿玛尼牌西装","BZ_004",99.24,0.6);
Goods goods_05=new Goods(5,"大米牌手机","BZ_005",10.01,0.5);
Goods[] emps=new Goods[5];
emps[0]=goods_01;
emps[1]=goods_02;
emps[2]=goods_03;
emps[3]=goods_04;
emps[4]=goods_05;
//遍历数组
for(int i=0;i<emps.length;i++){
System.out.println(emps[i]);
}
}
}
class Goods{
private int id;
private String name;
private String size;
private double price;
private double count;
public Goods(){}
public Goods(int id, String name, String size, double price, double count) {
this.id = id;
this.name = name;
this.size = size;
this.price = price;
this.count = count;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getCount() {
return count+"折扣";
}
public void setCount(double count) {
this.count = count;
}
@Override
public String toString() {
return "Goods{" +
"id=" + getId() +
", name='" + getName() + '\'' +
", size='" + getSize()+ '\'' +
", price=" + getPrice() +
", count=" + getPrice()+
'}';
}
}
代码解读:这个代码里面有两个类,一个商品类,定义了私有的属性和构造方法和get set方法,重写的toString方法,是一个最基本的JavaBean结构,一个是javaBeanAndArray类,里面有主方法,定义一个一维数组,和JavaBean一起使用,相当于二维数组的使用