数组中常见的错误或异常
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();