1.Math
帮助我们用于进行数学计算的工具类
- round(float a):四舍五入
- max (int a, int b) :获取两个int值得较大值
- random () :返回值是double得随机值,范围 [0.0,1.0)
package cn.sxau; public class MathDemo1 { public static void main(String[] args) { //random int random = (int)(Math.random()*20+1); //[1,21) System.out.println(random); //round System.out.println(Math.round(12.34));//12 System.out.println(Math.round(12.54));//13 System.out.println(Math.round(-12.34));//-12 System.out.println(Math.round(-12.54));//-13 //max System.out.println(Math.max(2, 3)); //3 //min System.out.println(Math.min(1, 3));//1 } }
案例:判断应该数是不是质数
package cn.sxau; import java.util.Arrays; public class API { public static void main(String[] args) { // 判读那一个数是不是质数 ,只能被自己或者1整除 int number = 15; if(number==1 || number ==2){ System.out.println("是质数"); }else{ int count =0; for (int i = 1; i <=number/2; i++) { if(number % i ==0) { count++; } } if(count >2){ System.out.println("不是质数"); }else{ System.out.println("是质数"); } } } } //采用MathAPI改进后 package cn.sxau; import java.util.Arrays; public class API { public static void main(String[] args) { // 判读那一个数是不是质数 ,只能被自己或者1整除 System.out.println(isPrime(25)); } public static boolean isPrime(int number){ for (int i = 2; i <=Math.sqrt(number); i++) { if(number % i ==0){ return false; } } return true; } }
2. System
System是一个工具类,提供一些与系统相关的方法
- public static void exit (int status) 终止当前运行的Java虚拟机
- public static long currentTimeMillis() 返回当前系统的时间毫秒值形式
- public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数) 数组拷贝
package cn.sxau; import java.util.Arrays; public class API { public static void main(String[] args) { int [] arr = {1,8,5,7,65}; int [] arr1 = new int[10]; System.arraycopy(arr,0,arr1,0,5); System.out.println(Arrays.toString(arr1)); } }
3.Runtime
- public sttaic Runtime getRuntime() 当前系统的运行环境对象
4.Object
Object是Java中的顶级父类,所有类都直接或间接继承于Object类
-
public String toString() 返回对象的字符串表示形式
-
public boolean equals(Object obj) 比较两个对象是否相等
-
protected Object clone (int a) 对象克隆 ,(由于 被protected修饰,所以只能被本类和本包的类或子类以及子类访问,使用的时候可以重写)
对象克隆:把A对象的属性值完全拷贝给B对象,也叫对象拷贝,对象复制
clone(方法会在底层创建一个对象,把原来的对象的数据拷贝过去)
克隆方式一(浅克隆):基本数据类型的值,直接拷贝值,引用数据类型的值,直接拷贝其记录的地址值,但是当将一个数组拷贝后,原数组发生改变,拷贝完的也发生改变(用的是相同地址)
克隆方式二(深克隆):基本数据类型的值,直接拷贝值;引用数据类型的值,(例如数组,再拷贝的时候,会重写创建一个数组将原数组的值拷贝过去,再将拷贝后的数组的地址值交付个拷贝的数组变量)
拷贝的实现流程:
- 重写Object中的clone方法
- 让javabean类实现Cloneable接口,原因:一旦实现Cloneable接口,那么当前类的对象就可以被克隆
- 创建原对象,并调用clone
//浅克隆 package cn.sxau.API; public class Studnet implements Cloneable{ private int id ; private String name; public Studnet() { } public Studnet(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Studnet{" + "id=" + id + ", name='" + name + '\'' + '}'; } @Override protected Object clone() throws CloneNotSupportedException { //调用父类的clone return super.clone(); } } package cn.sxau.API; public class ObjectDemo1 { public static void main(String[] args) throws CloneNotSupportedException { //创建对象 Studnet s = new Studnet(1,"李四"); //克隆 Studnet s1 = (Studnet) s.clone(); System.out.println(s1); } }
深克隆
package cn.sxau.API; import java.util.Arrays; public class Studnet implements Cloneable{ private int id ; private String name; private int [] data; public Studnet() { } public Studnet(int id, String name, int[] data) { this.id = id; this.name = name; this.data = data; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int[] getData() { return data; } public void setData(int[] data) { this.data = data; } @Override public String toString() { return "Studnet{" + "id=" + id + ", name='" + name + '\'' + ", data=" + Arrays.toString(data) + '}'; } @Override protected Object clone() throws CloneNotSupportedException { //调用父类的clone //先把被克隆对象中的数组获取出来 int [] data = this.data; //创建新的数组 int [] newData = new int[data.length]; //拷贝数组中的数据 for (int i = 0; i <data.length ; i++) { newData[i] = data[i]; } //调用父类中的方法克隆对象 Studnet s = (Studnet) super.clone(); s.data = newData; return s; } } package cn.sxau.API; public class ObjectDemo1 { public static void main(String[] args) throws CloneNotSupportedException { int [] arr = {1,2,3,45,6,46}; //创建对象 Studnet s = new Studnet(1,"李四",arr); //克隆 Studnet s1 = (Studnet) s.clone(); System.out.println(s1); } }
5.Objects
Objects是一个工具类,提供一些方法去完成一些功能
5.1 成员方法
- public static boolean equals(Object a , Object b) 先非空拍的奶的那,比较两个对象
- public static boolean isNull(Object obj) 判断对象是否为null,如果是null返回true
- public static boolean nonNull (Object obj) 判断对象是否为null,如果是null返回false
6.正则表达式
作用一:校验字符串是否满足一定的规则,并用来校验数据格式的合法性
作用二:在一段文本中查找满足要求得内容
正则表达式的规则
package cn.sxau.正则表达式;
public class demo1 {
public static void main(String[] args) {
System.out.println("a".matches("[abc]")); //判断a是否在,[a,b,c]范围内 true
System.out.println("a".matches("[^abc]"));//false
System.out.println("zz".matches("[a-z][a-z]"));//判断 zz是否在[a-z][a-z]范围内 true
// [a-z][A-Z],[a-z[A-Z]],[a-zA-Z] 效果是一样的
System.out.println("zz".matches("[a-zA-Z]"));//false
System.out.println("az".matches("[a-z[A-Z]]"));//false
System.out.println("-----------------------");
System.out.println("255wsdx".matches("\\w{6,}"));//表示至少出现6次英文,数字,下划线 true
System.out.println("25x_".matches("\\w{4}"));//必须是出现4次,true
System.out.println("2x_".matches("\\w{2,4}"));//必须是出现2到4次,true
System.out.println("-----------------------");
//校验手机号码
String regex1 = "1[3-9][0-9]{9}";
System.out.println("18564856235".matches("1[3-9]\\d{9}"));
//校验邮箱
System.out.println("1968554844@qq.com".matches("\\w+@{1}[0-9a-z]{2,6}(\\.[a-zA-Z]{2,3}){1,2}"));
System.out.println("lisi2000@163.com".matches("\\w+@{1}[0-9a-z]{2,6}(\\.([a-zA-Z]{2,3})){1,2}"));
System.out.println("lisi2000@163.com.cn".matches("\\w+@{1}[0-9a-z]{2,6}(\\.([a-zA-Z]{2,3})){1,2}"));
}
}