数组
数组可以存放 多个同一类数据
养鸡场 有很多鸡 体重各不一样 怎么算他们的平均体重
语法: 数组的定义
数据类型 数组名[ ] = new 数据类型 [ 大小 ]
int a [ ] = new int [ 5]
int [ ] a 也可以
还可以 int a[ ]=[1,2,3,4,5]
数组的引用
数组名 [下标]
a [3]
public class flow {
public static void main(String[] args) {
//定义可以存放六个数据的数组
float arr[] = new float[6];
//给数组赋值
arr[0]=3;
arr[1]=5;
arr[2]=2;
arr[3]=4;
arr[4]=6;
arr[5]=7;
//计算总体重
float all=0;
for(int i=0;i<arr.length;i++){
all=all+arr[i];
}
all=all/arr.length;
System.out.println(all);
}
}
对象数组
下面的程序会发生空指针异常 dog[0] 指向的是 空
public class flow {
public static void main(String[] args) {
//定义一个对象数组
Dog dog[]= new Dog[4];
//给各个狗赋初值
dog[0].setName("a");
dog[0].setWeight(1);
}
}
class Dog{
private float weight;
private String name;
public float getWeight() {
return weight;
}
public void setWeight(float weight) {
this.weight = weight;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
必须在 用dogs[0] 之前 加一行 代码 dog[0]= new Dog();
public class flow {
public static void main(String[] args)throws Exception {
//定义一个对象数组
Dog dog[]= new Dog[4];
//给各个狗赋初值
InputStreamReader ins= new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(ins);
for(int i=0;i<dog.length;i++){
dog[i]=new Dog();
System.out.println("请输入狗名");
//从控制台读取狗名
String name = br.readLine();
dog[i].setName(name);
System.out.println("请输入体重");
//从控制台读取狗名
String weight = br.readLine();
float weight1=Float.parseFloat(weight);
dog[i].setWeight(weight1);
}
float allWeight=0;
for(int i=0;i<dog.length;i++){
allWeight= dog[i].getWeight()+allWeight;
}
float avgWeight = allWeight/dog.length;
System.out.println(avgWeight);
}
}
class Dog{
private float weight;
private String name;
public float getWeight() {
return weight;
}
public void setWeight(float weight) {
this.weight = weight;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
比较字符串字符是否相等 用 equals
数字 ==
数组的总结
1 可以存放同一类型数据
2 简单数据类型 int float 数组 可直接赋值
3 对象数组在定义后 赋值时需要再次为每个对象分配空间 new 一个对象
4数组大小必须事先指定 缺点
5数组名可以理解为 指向数组首地址的引用
6数组的下标是从0开始编号的
一个需要注意的地方
public class flow {
public static void main(String[] args)throws Exception {
int a = 1;
Dog dog= new Dog();
dog.add(a);
System.out.println(a);
}
}
class Dog{
public void add(int a ){
a++;
}
}
输出的是1 在 add 中操作的 a 不会影响主函数
如果 不是简单类型 类 或者 数组 在dog 中操作的 会影响主函数
排序
内部排序 交换 选择 插入
外部排序 合并排序 直接合并排序
计算时间
Calendar cal= Calendar.getInstance()
cal.getTime
多维数组
1. 定义 类型 数组名 [ ] [ ] = new 类型 [ size ] [ size ] 行 列
int adfaf [20] [10] = new int
0 | 1 | 2 | |
0 | 00 | 01 | 02 |
1 | 10 | 11 | 12 |
排列跟上边一样 初始赋值都是0
int a [][]= new int [3][4];
for (int i=0;i<3;i++){
for(int j=0;j<4;j++){
System.out.print(a[i][j]);
}System.out.println(" ");
}