一、引用类型数组
1.数组是一种相同数据类型的组合,它本身也是一种引用数据类型.
2.类是自己定义的、包含变量和方法的一种引用数据类型
3.类和数组,都可以声明为数组,即引用类型数组
4.new之后,基本类型数组每个元素都是0;引用类型数组每个元素都是null
数组中的基本类型需要重新赋值;引用类型需要重新创建对象
5.引用类型数组的定义及初始化
1)为类创建数组
Cell[] cs = new Cell[4]; //new是在创建Cell类型数组,包含四个Cell类元素,默认值均为null
cs[0] = new Cell(); //cs[0]为Cell类型,new是在创建Cell对象
cs[1] = new Cell(2); //创建对象时自动调用不同的构造函数
cs[2] = new Cell(5,4);
cs[3] = new Cell(2,6);
也可以创建数组的时候初始化:
Cell[] cs1 = {
new Cell(),
new Cell(1),
new Cell(5,4),
new Cell(2,7)
};
或者:
Cell[] cs2 = new Cell[]{
new Cell(),
new Cell(1),
new Cell(5,4),
new Cell(2,7)
};
2)为数组创建数组
//声明int[]类型的数组,包含4个int[]类型的元素,默认值均为null
int[] [] arr = new int[4][];
arr[0] = new int[2];//arr[0]是int[]类型
arr[1] = new int[4];
arr[2] = new int[2];
arr[3] = new int[5];
for(int i=0;i<arr.length;i++) {
for(int j=0;j<arr[i].length;j++) {
System.out.println(arr[i][j]);
}
}
简写三行五列赋值:
int[][] ar = new int[3][5];
for(int i=0;i<3;i++){ //行
for(int j=0;j<5;j++){ //列
ar[i][j] = 100;
}
}
二、开关的用法:并非一次判断得到最终结果
for循环上,定义开关;
for循环里,条件变更开关,break跳出此次循环;
for循环外,得到最终结果;
例如
1、判断100以内哪些是质数
int count = 0; //计数器
for(int i=2;i<=100;i++){
boolean flag = true; //1.假设每个数都是质数
for(int j=2;j<=Math.sqrt(i);j++){
if(i%j==0){//若是可以整除------说明不是质数
flag = false; //2.改为不是质数
break; //后面不用判断了,提高效率
}
}
if(flag){ //3.判断得最终结果
System.out.print(i+" ");
count++; //计数增1
if(count%10==0){ //每10个换一行
System.out.println();
}
}
}
System.out.println("共"+count+"个质数");
2、在长10高20的墙上,打出T型格子形状
1)先给格子定义一个Cell类的数据类型
public class Cell {
int row;
int col;
Cell(){ //构造方法
this(0,0);
}
Cell(int n){
this(n,n);
}
Cell(int row,int col){
this.row=row;
this.col=col;
}
}
2)创建一个T型的格子数组
Cell[] cells=new Cell[4]; //创建Cell型数组,包含四个Cell对象,默认值为null
cells[0]=new Cell(2);//分别创建Cell对象
cells[1]=new Cell(2,3);
cells[2]=new Cell(2,4);
cells[3]=new Cell(3);
3)遍历输出T型格子和墙
for(int i=0;i<20;i++) {//20行
for(int j=0;j<10;j++) {//10列
boolean flag=false;//1.假设都打墙-
for(int k=0;k<cells.length;k++) {
if(i==cells[k].row&&j==cells[k].col) {//若行和列均匹配上,则属于T型
flag=true;//2.改为打T型*
break;//后面不用判断了,跳出去匹配T型另一个格子,提高效率
}
}
if(flag) { //3.判断得最终到结果
System.out.print("* ");
}else {
System.out.print("- ");
}
}
System.out.print("\n");
}