声明:由于学习所用环境为JDK1.8,所有java代码均在JDK1.8环境中测试通过,如果环境发生变化,可能会发生错误!
一、常用类
1、Math类
(1)Math 类提供了一序列基本数学运算和几何函数的方法。
Math类是final类,并且它的所有成员变量和成员方法都是静态的。
(2)Math类的常用属性和方法
a、静态常量--PI:圆周率的double值
b、静态方法:
System.out.println("5的3次方为:"+Math.pow(5,3));
System.out.println("9的平方根:"+Math.sqrt(9));
System.out.println("-8.90的绝对值是:"+Math.abs(-8.90));
System.out.println("8.4向上取整:"+Math.ceil(8.4));
System.out.println("6.9向下取整:"+Math.floor(6.9));
System.out.println("6.4四舍五入的结果:"+Math.round(6.4));
System.out.println("8.5四舍五入的结果:"+Math.round(8.5));
System.out.println("随机返回一个从0.0(包括)到1.0(不包括)值:"+Math.random());
int ran=(int)(Math.random()*10)+2;
System.out.println("随机返回2到11的数字:"+ran);
System.out.println("圆周率是:"+Math.PI);
2. Random类
Random ran=new Random();
int result=ran.nextInt(16)+3;
System.out.println("随机返回3到18的数字:"+result);
System.out.println("随机返回boolean值:"+ran.nextBoolean());
3. System类
System.out.println("正常输出标准信息!");
System.err.println("输出标准错误信息!");
int[] a={1,5,6,9,4};
int[] b=new int[5];
System.arraycopy(a, 1,b,3, 2);
for(int x:b){
System.out.print(x+" ");
}
System.exit(0); //正常退出程序
gc()方法public class Person {
@Override
protected void finalize() throws Throwable {
System.out.println("调用gc之前执行finalize");
}
}
public class Finalizedemo {
public static void main(String[] args) {
Person person=new Person();
person=null;
System.gc();
//System.out.println("123");
}
}
currentTimeMillis方法 long start=System.currentTimeMillis();
long end=System.currentTimeMillis();
System.out.println("耗时"+(end-start)+"毫秒");
4. Runtime类
Runtime rt= Runtime.getRuntime();
rt.gc(); // 显式请求JVM进行垃圾回收gc
System.out.println("当前JVM的内存总量是:"+rt.totalMemory()+"字节");
System.out.println("JVM试图使用的最大内存量:"+rt.maxMemory());
System.out.println("当前JVM的空闲内存量:"+rt.freeMemory());
try {
rt.exec("notepad");
rt.exec("calc");
}
} catch (IOException e) {
e.printStackTrace();
}
}
5. Date类与SimpleDateFormat类
Date date=new Date();
System.out.println(date);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String now=sdf.format(date);
System.out.println(now);
6. Calendar类:
邮箱的验证:
public static void main(String[] args) {
System.out.println("请输入邮箱:");
Scanner scan=new Scanner(System.in);
String email=scan.next();
String regex="\\w+@\\w+.\\w+";
Pattern pattern=Pattern.compile(regex);
Matcher matcher=pattern.matcher(email);
if(matcher.matches()){
System.out.println("输入正确");
}else{
System.out.println("输入错误");
}
}
正则表达式的分组
public static void main(String[] args) {
String string="hdjjfkfdmnjava111fhfkdjava222fhjjksckjava333";
String regex="(java\\d+)";
Pattern pattern=Pattern.compile(regex);
Matcher matcher=pattern.matcher(string);
while(matcher.find()){
System.out.println(matcher.group(1)); //“1”表示正则表达式的第一个分组(正则表达式的()表示一个分组)
}
}
反向引用
public static void main(String[] args) {
String string="adhxyzxyzcjifjafxafxdhiuwsdrsdr";
/*
* 在正则表达式中,\num代表“反向引用”第num个分组中的内容
*/
String regex="([A-Za-z]{3})\\1";
Pattern pattern=Pattern.compile(regex);
Matcher matcher=pattern.matcher(string);
while(matcher.find()){
System.out.println(matcher.group(0));
}
“\”的几种解释:
1. 反斜线后面可以加特定字符,组成所谓的“转义字符”。eg: \n \t
2. 用于取消元字符的意义,使元字符变为普通字符。eg: “\\” 代表”\”。
3. 用于组成正则表达式中的元字符。eg: “\d” 在正则表达式中代表“匹配一个数字字符”。
2、Pattern类与Matcher类
1. Pattern类与Matcher类都在java.util.regex包 中定义。
2. Pattern类的对象代表正则表达式编译之后的对象;Matcher类主要用于执行验证。
3.Pattern类的主要方法:
public static Pattern compile(String regex);
public Matcher matcher(CharSequence input)
Matcher类的主要方法:
public boolean matches();
3、String类对正则表达式的支持
(1)public boolean matches(String regex) 判断字符串是否与给定的正则表达式匹配。
(2)public String replaceAll(String regex,String replacement) 字符串替换
(3) public String[] split(String regex) 字符串拆分
public static void main(String[] args) {
String string1="helloabbbbbb12345";
String string2="中国|加拿大|美国|墨尔本";
System.out.println(string1.matches("hello\\w+"));//判断字符串是否与给定的正则表达式匹配
System.out.println(string1.replaceAll("\\d","*"));//字符串替换
String[] array=string2.split("\\|"); //字符串拆分
for(String x:array){
System.out.print(x+" ");
}
补充:
public class GreedyRegex {
public static void main(String[] args) {
String str="abbbbbbb";
System.out.println("贪婪模式匹配: "+str.replaceAll("ab+","#")); // "贪婪匹配"
System.out.println("非贪婪模式匹配: "+str.replaceAll("ab+?","#"));
}
}
public enum SexEnum{
MALE("我是男生",1), FEMALE("我是女生",0); // 枚举对象必须写在第一行
private String name;
private int id;
private SexEnum(){
}
// 枚举的构造方法必须是private
private SexEnum(String name,int id){
this.name=name;
this.id=id;
}
// 自定义的方法,通过id查找枚举对象
public static SexEnum findSexById(int id){
for(SexEnum sex:SexEnum.values()){
if(sex.id==id){
return sex;
}
}
return null;
}
public class TestSex {
public static void main(String[] args) {
SexEnum sex=SexEnum.findSexById(1);
System.out.println(sex);
}
}