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

六、数组

7Arrays

利用Java的工具类来对数组进行操作。

import java.util.Arrays;      调用工具类

之后使用内部方法,对数组进行操作

import java.util.Arrays;

复制

int[] b = Arrays.copyOfRange(源数组,起始位置,取不到位置);

转化成字符串

String s = Arrays.toString(b);

注意,需要输出s才能在控制台中测试。

排序

Arrays.sort(a);

注意,排序后测试需要System.out.println(Arrays.toString(a));输出测试。

搜索

Array.binarySearch(a,50);

参数为搜索的数组,以及所需的数字。注意,使用前需要先Arrays.sort(a);

对a进行排序,返回一个int类型值

判定数组是否相同

Arrays.equal(a,b);返回一个布尔类型值

填充

Arrays.fill(a,5);数组内所有位置填充成5

另外:关于两个数组合并的逻辑

int[] a3 = new int[a1.length+a2.length];

System.arraycopy(a1,0,a3,0,a1.length);

System.arraycopy(a2,0,a3,a1.length,a2.length);

System.out.println(Arrays.toString(a3));

题目:对二维数组进行排序

import java.util.Arrays;

import java.util.Scanner;

import java.lang.Math;

public class HelloWorld{

    public static void main(String[] args){

        Scanner s = new Scanner(System.in);

        System.out.println("请输入你所需要的的是几行几列的数组");

        int x =s.nextInt();

        System.out.println(x+"行");

        int y =s.nextInt();

        System.out.println(y+"列");

       

        int[][] a = new int[x][y];

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

            }

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

        }

        //化为一维数组,再排序

        int[] aall =new int [x*y];

        System.out.println(Arrays.toString(aall)+"\t"+a.length+"\t"+a[1].length);

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

            System.arraycopy(a[i],0,aall,i*y,a[i].length);

        }

        System.out.println(Arrays.toString(aall));

        Arrays.sort(aall);

        System.out.println(Arrays.toString(aall));

        //排序完后返回一维数组

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

            System.arraycopy(aall,i*a[i].length,a[i],0,a[i].length);

        }

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

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

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

            }

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

        }

    }

}

七、类与对象

1引用

在初学时,我理解错了定义对象的含义。Hero aqua = new Hero();,把左边误认为,aqua是对象,右边是类。其实,左边是引用,右边是对象。实际含义是aqua是一个引用,指向新建的Hero对象的。总而言之,基于一个类可以创建多个对象,而可以新建一个类型相同的引用,通过这个引用来使用此对象。

例如Hero h1 = new Hero();Hero h2 = h1;那么两者是指向同一个对象的。这就是多个引用,一个对象。

但是Hero h1 = new Hero();Hero h2 = new Hero();二者就是分别指向不同对象了。

还可以Hero h1 = new Hero();h1 = new Hero();那h1就不再指向第一个对象,而是指向第二个了。这就是一个引用,多个对象。

2继承

子类继承父类,关键字extends

public calss son extends father{}

子类可继承父类的属性、方法,还可以拥有自己的新属性、新方法。

3重载

重载是动态定义变量。一种是写多个方法,每个方法传递的参数数量、类型不同。还有一种是设置可变数量的参数,使用操作数组的方式,方法内使用for循环

第一种,在类中写重载方法(参数数量或参数类型不同)

    void heal(Hero h){

       System.out.println(""+h.name+"回血");

    }

    void heal(Hero h,int hp){

       System.out.println(""+h.name+""+hp+"的血");

    }

第二种,可变数量参数

    void heal(Hero...heros){

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

           System.out.println(""+heros[i].name+"回血");

       }

    }

之后测试

       Hero h1 = new Hero();

       Hero h2 = new Hero();

       h2.name="aqua";

       Hero h3 = new Hero();

       h3.name="ajax";

       Hero h4 = new Hero();

       h4.name="equal";

      

       h1.heal(h2);

       h1.heal(h2,1000);

       h1.heal(h2,h3,h4);

4构造方法

通过一个类创建一个对象的过程叫做实例化,是通过调用构造方法,即构造器来完成的。

构造方法名与类名相同。如果不自己写的话,会默认构造一个隐式的空构造。自己写还可以对这个函数进行重载。

注意格式

public Hero(){}   构造方法名与类名一致,连类型也一致。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值