2021.03.22数组中常见的错误、冒泡排序、查找、数组的一些方法、二维数组及其遍历、创建对象

数组中常见的错误或异常

1.ArrayIndexOutOfBoundsException  数组下标越界异常

int[] arr={1,3,5,7};System.out.println(arr[4]);

2.NullPointerException  空指针异常

int[] arr3 ={2,4,6,8};arr3 =null;System.out.println("arr3[0] = " + arr3[0]);

!!!!!!(非常重要)冒泡排序

线性查找

有一个数组{1,3,5,7,-11},从键盘输入要查找的元素,判断是否在数组中,如果存在返回下标,不存在返回-1

 BinarySearch 二分查找法,也可以称为 折半查找法

二分查找前提是所有的元素已经按照从小到大排序了

数组的一些方法

1.Arrays.sort(数组名) 排序数组

2.Arrays.toString(数组名) 将数组转换为字符串

3.Arrays.binarySearch(数组名,要查找的数字) 二分查找查找数字在不在数组中,存在返回元素下标,不存在返回-1

4.Arrays.equals(数组名1,数组名2); 判断两个数组是否相等,返回值为布尔类型

5.Arrays.copyOf(要复制的数组名,新数组的长度);  复制指定数组,得到一个新的数组,新数组的长度大于要复制的数组,则混用0来填充,小于的话,则进行截取

6.Arrays.fill(arr,要填充的数字)  填充数组

7.字符串.indexof("子字符串")  返回此字符串中第一次出现指定子字符串的索引

面试题

有这样一个数组

1.统计指定水果出现的次数            2.统计出现次数最多的水果名称,以及出现的次数


package com.sky.day6.p1;

public class Demo7Apple{

    public static void main(String[] args) {

        String[] arr ={"苹果","香蕉","橘子","榴莲","苹果","苹果","橘子","香蕉"};

        String fruit ="苹果";

        int times=fruitTime(arr,fruit);

        System.out.println("苹果出现的次数times = " + times+"次");

        maxTimes(arr);

    }

    public static int fruitTime(String[] arr,String fruit) {

        int count=0;//计数器,制定水果出现的次数

        for(int i=0;i

            //每出现一次指定的水果,计数器加一

            if(fruit.equals(arr[i])){

                count++;

            }

}

        return  count;

    }

    public static void maxTimes(String[] arr) {

        String name =null;//出现次数最多的水果名称

        int max=0;//最大出现的次数

        //外层循环获取每种水果

        for(int i=0;i

            int count=0;//水果出现的次数

            for(int j=0;j

                if(arr[i].equals(arr[j])){

                    count++;

                }

}

            if(count>max){//如果次数>当前的max

                max=count;

                name=arr[i];

            }

}

        System.out.println( name+"出现次数最多,出现"+max+"次");

    }

}


合并两个数组,组成一个新的数组

用两个数组,数组a{1,3,5,7},数组b{2,4,6,8}将两个数组合并为数组c,并打印输出

将两个数组合并为一个数组的函数

System.arraycopy(源数组,源数组中的起始位置,目标数组,目标数据中的起始位置,要复制的数组元素的数量)

object是java中所有类的父类

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

src - the source array源数组。

srcPos - starting position in the source array源数组中的起始位置。

dest - the destination array目标数组。

destPos -starting position in the destination data目标数据中的起始位置。

length - the number of array elements to be copied要复制的数组元素的数量。

二维数组

1.创建二维数组
(1)第一种方法是:

数据集类型[][] 数组名= new 数据类型[行的个数][列的个数]

int[][] xx= new int[3][4];

[3]表示二维数组中的有三个一维数组

[4]表示每一个一维数组中有四个元素

(2)第二种方式:

数据类型[][] 数组名 = new 数据类型[行的个数][];

int [][] xx= new int[3][];

第二种方式和第一种类似,只是数组中每个元素的长度不确定

(3)第三种方式:静态初始化

数据类型[][] 数组名={{第0行初始化}.{第一行初始化},....,{第n行初始化}}

将二维数组转成字符串输出用Arrays.deepToString(数组名)

将一维数组转成字符串 Arrays.toString(数组名)

int[][] arr={{1,2,3},{4,5,6},{7,8,9}};

System.out.println("Arrays.deepToString(arr) = " + Arrays.deepToString(arr));

二维数组的遍历

1.通过两层for循环嵌套

创建对象

1.创建Person类

一个类中包含成员变量和成员方法

(1)成员变量(又称属性,字段)

成员变量定义在类中 并且在方法外

String   name;//姓名                            int   age;//年龄                                String    sex;//性别

(2)成员方法,对应着对象的行为

public void speak() {

    System.out.println(name +"在说话");

}

2.创建对象

(1)语法:类名 对象名 = new 类名();  (对象名要遵守标识符的命名规则)

Person person = new Person();

(2)对象访问成员变量:对象名.成员变量名

成员变量有默认的初始值,分类型讨论:byte short int long 默认初始值是0;float 默认0.0f;   double默认是0.0;boolean 默认是false;char 默认是空字符 \u0000;引用数据类型 默认是 null

给成员变量赋值: 对象名.成员变量=值

person.name = "Anna";

(3)调用成员方法: 对象名.成员方法()或对象名.成员方法(参数列表)

person1.speak();

你可能感兴趣的:(2021.03.22数组中常见的错误、冒泡排序、查找、数组的一些方法、二维数组及其遍历、创建对象)