第一阶段-从头开始复习Java基础-day5

五、控制流程

回顾

continue 结束此次循环,进行下一次。while(){if(i=5) continue;} 执行后仍然会执行i=6,i=7…会继续循环

break 只能结束循环 while(){if(i=7) break;} 执行后就不再继续执行了,不会继续循环

boolean 可以借助变量来结束

boolean b =false;

for(int i=0;;){

  for(int j=0;;){

    if(j=10) {b=true;break;}

  }

  if(b){break;}

}

还有outloop:标记

outloop:

for(){if(){break outloop;}}

控制循环的标记方式很多,但是用法还需要在测试、具体应用中实践,才能加深印象。

对于变量的探究

byte b=127;//8位(+-)

short s=1024*32-1;//16位(+-)

int i=1024*1024*1024*2-1;//32位(+-)

System.out.println(b+"\r\n"+s+"\r\n"+i);//发现byte和short类型不会溢出,会直接报错。而int类型结果溢出一位,就直接跑到符号位上去,负溢,而再进一位直接溢出为0了

六、数组

1创建数组

int[] array = new int[5];

创建数组的过程也可以与面向对象类比。运用Java内置类,来创建数组。

Hero aqua = new Hero();

int[] array = new int[5];

同样,数组的创建也可以分为声明使用类与创建对象

int[] array;

array = new int[5];

注意,数组大小定义为5,array[0]-array[4]这五个int型32B存储空间

array[0]=1;赋值操作

System.out.println(array.length);length方法输出数组长度。

Math.random()随机0-1的小数,乘100再强转可以输出随机100以内的数。需要java,lang.Math类

需要注意的是,Math类类型是private,因此无法创建Math类的对象。但Math类的方法都是类方法,可以不用创建对象直接Math.random()这样用类名调用类方法。

2初始化数组

数组有多种写法,以下是两种常用且不容易出错的方法

int[] a1 = new int[5];只定义

int[] a2 = {0,1,2,3,4};定义并赋值

在数组中,需要特别注意一点,定义时的int[] a = new int[5] 定义范围是a[0]-a[4],并且a.length=5。所以在对数组元素进行操作时,最末尾元素为a[a.length-1]。进行循环操作时更需要注意。

在创建类时,因为类无参数,导包即可,于是类的创建为public class 类名{}。

而不需要像创建方法一样 public 返回值类型 方法名(参数){}

3排序

选择排序

例子:使用选择排序进行正排序,数组大小为5

需要两个循环语句。内部循环控制单次选择,外部循环控制进行a.length-1次选择。

//选择排序

        for(int i=0;i<a.length-1;i++){

            for(int j=i+1;j<a.length;j++){

                if(a[i]>a[j]){

                    int temp=a[j];

                    a[j]=a[i];

                    a[i]=temp;

                }

            }

            System.out.println("第"+(i+1)+"次选择排序:");

            for(int k=0;k<a.length;k++){

                System.out.print(a[k]+"  ");

            }

            System.out.println("\r\n");

        }

在单次选择中,需要进行a.length-1次比较。循环条件也可以(int j=0;j<a.length-1;j++),但内部a[j]得换成a[j+1]

在此过程中,我们只需要控制比较对调(if对调)、比较次数(两次循环)即可

4增强型for循环

foreach循环,一般拿来遍历数据使用。只能取值,不能赋值。

for(int each:array){System.out.println(each);}

5复制数组

复制数组可以使用for循环,也可以使用System.arraycopy(src,srcPos,dest,destPos,length)来复制。

(复制的数组a,a的起始位置,粘贴的数组b,b的起始位置,复制数据的长度)

先定义两个数组

int[] a ={1,2,3,4,5,6};

int[] b =new int[4];

使用方法

System.arraycopy(a,0,b,0,4);

之后遍历测试

for(int each:b){System.out.println(each);}

6二维数组

二维数组可以理解为数组的数组,有以下几种定义方式。

int[][] a = new int[2][3];         定义了二维数组的大小

int[][] b = {{1,2,3},{4,5,6}};       定义后还分配空间

import java.lang.Math;

public class test {

    public static void main(String[] args) {

       int[][] a = new int[5][5];

       int x=0,y=0,value=0;

       System.out.println("随机二维数组如下:");

       for(int i=0;i<a.length;i++){

           for(int j=0;j<a[i].length;j++){

              a[i][j]=(int)(Math.random()*100);

              System.out.print("\t"+a[i][j]);

              if(a[i][j]>value){

                  value=a[i][j];

                  x=i;

                  y=j;

              }

           }

           System.out.println("\r\n");

       }

       System.out.println("最大的值为"+value+"坐标为["+x+"]["+y+"]");

    }

}

foreach遍历只能用一维数组。但是如果想要遍历二维数组,就得在外部多写一个for循环。

for(int i=0;i<a.length;i++){

    for(int each : a[i]){

        System.out.print("\t"+each);

    }

    System.out.println("\r\n");

}

二维数组其实就是数组的集合。

在一维数组中,a表示一维数组,a[i]是元素;

在二维数组中,a表示二维数组,a[i]是一维数组,a[i][j]是元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值