引用类型数组 和 “开关“的用法

一、引用类型数组

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");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值