Arrays类
Arrays:针对数组操作的工具类
常用方法:
1>public static String toString(int[]a):可以将int类型的数组转换成字符串 ([元素1,元素2,元素3...])
2>public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序
3>public static int binarySearch(int[]a,int key):二分搜索法: 在int类型的数组中查找key元素的索引
代码说明:
package cn.itcast_02;
importjava.util.Arrays;
publicclassarraysDemo{
publicstaticvoidmain(String[]args){
//定义一个数组:静态初始化
int[]arr={24,69,80,57,13};
//public static String toString(int[] a):可以将int类型的数组转换成字符串 ([元素1,元素2,元素3...])
//直接用Arrays去调用
Stringstr=Arrays.toString(arr);
System.out.println("str:"+str);
System.out.println("-----------------------");
// public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序
Arrays.sort(arr);
Stringstr2=Arrays.toString(arr);
System.out.println("str2:"+str2);
System.out.println("-----------------------");
//public static int binarySearch(int[] a,intkey):二分搜索法:
//在int类型的数组中查找key元素的索引
//需求:查找57元素对应的索引
Arrays.sort(arr);
intindex=Arrays.binarySearch(arr,57);
System.out.println("index:"+index);
intindex2=Arrays.binarySearch(arr,577);
System.out.println("index2:"+index2);
}
}
运行结果:
str:[24,69, 80, 57, 13]
-----------------------
str2:[13,24, 57, 69, 80]
-----------------------
index:2
index2:-6
注意:
以后在实际开发中,只要有引用类型,在对引用类型数据进行操作的时候,对引用类型的对象进行非空判断,
防止空指针异常(NullPointerException)
//toString(int[] a)的源码分析
public staticString toString(int[] a) {
//对数组进行非空判断
if (a == null)
return "null";
intiMax = a.length - 1;
//如果该数组长度为0,返回括号
if (iMax == -1)
return "[]";
StringBuilder b = newStringBuilder(); //创建了一个字符串缓冲区
b.append('['); //先追加了左中括号:[
for (inti = 0; ; i++) {
b.append(a[i]); //给缓冲区中追加数组中的元素
//如果是最后一个数据,返回并且并追加了右中括号:]并且将数据元素转换字符串
if (i == iMax)
returnb.append(']').toString();
//如果不是最后一个索引,那么中间追加逗号
b.append(", ");
}
}
public static intbinarySearch(int[] a,int key)的源码分析:
public static intbinarySearch(int[] a, int key)
return binarySearch0(a, 0, a.length,key);
}
/**
a--->arr:指定的int类型的数组
fromIndex:指定索引开始:0
toIndex:arr.length5
key:577
*/
int[] arr= {13,24,57,69,80} ;
private static intbinarySearch0(int[] a, int fromIndex, inttoIndex,
int key) {
intlow = fromIndex; //最小索引
inthigh = toIndex - 1;// 最大索引 4
while (low <= high) { //如果最小索引小于=最大索引
intmid = (low + high) >>> 1; //>>> :无符号右移动(位运算符)
intmidVal = a[mid]; // 查找中间索引对应的元素:
if (midVal < key) //判断:中间索引对应的元素 < key
low = mid + 1;
else if (midVal > key)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1); // key not found. // return -(low+1) = -6
}
/*
位^:位异或
位&:位与
位|:位或
<<:左移动
有符合的数据表示法(原码,反码,补码)
计算机底层运算数据的时候:通过补码进行运算的
*/
System类
System 类包含一些有用的类字段和方法。它不能被实例化。
常用的方法:
public static void gc()运行垃圾回收器。
public static void exit(int status)终止当前正在运行的 Java 虚拟机。参数用作状态码; 一般情况,需要终止,一般用0
public static long currentTimeMillis()返回以毫秒为单位的当前时间
//单独使用,没有意义
//一般情况,来测试一段代码的执行效率 (后面:jdbc: PreparedStatement Statement 也可以用currentTimeMillis来测试速率 )
long start =System.currentTimeMillis() ;
for(int x =0 ; x < 1000; x ++){
System.out.println("hello"+x);
}
long end =System.currentTimeMillis() ;
System.out.println("共耗时:"+(end-start)+"毫秒");
System.out.println("---------------------------");
public static void arraycopy(Object src,intsrcPos, Object dest,int destPos, int length):从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束
src:原数组
dest:目标数组
srcPos :从原数组的哪个位置开始
destPos:目标数组的开始位置
length:长度
代码举例
package cn.itcast_02;
importjava.util.Arrays;
publicclassarrayCopy{
publicstaticvoidmain(String[]args){
int[]arr1={11,22,33,44,55,66};
int[]arr2={5,6,7,8,9,10};
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
System.out.println("---------------------------");
System.arraycopy(arr1,1,arr2,2,2);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
}
}
运行结果:
[11, 22, 33, 44, 55, 66]
[5, 6, 7, 8, 9, 10]
---------------------------
[11, 22, 33, 44, 55, 66]
[5, 6, 22, 33, 9, 10]
Math
Math 类包含用于执行基本数学运算的方法,
*常用的方法:
* public static int abs(int a):绝对值
* public static double ceil(double a):向上取整
* public static double floor(double a):向下取整
* public static int max(int a,int b):求最大值
* public static int min(int a,int b):求最小值
* public static double pow(doublea,double b):a的b次幂
* public static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0
* public static int round(float a):四射五入
* public static double sqrt(double a):一个数的正平方根
//面试题:有两个变量,让他们的值进行互换
int a = 10 ;
int b = 20 ;
//实际开发中:中间变量的方式进行互换
//位^的特点:一个数据被另一个数据位^两次,其值是它本身
//=号左边: a ,b,a
//=右边: a^b
a = a ^ b ;
b = a ^ b ;//b = a^b ^ b
a = a ^ b ;
Random
Random:是一个可以获取随机数的类
*publicRandom():无参构造方法
*publicRandom(long seed) :指定long类型的数据进行构造随机数类对象
*public intnextInt():获取随机数,它的范围是在int类型范围之内
*public intnextInt(int n):获取随机数,它的范围是在[0,n)之间