Math:

sqrt开平方根;cbrt开立方根
abs只用于int,无对应值的时候会出错
absExact有报错的时候会有提示
random返回的是0.0到1.0的随机数字
System:

exit状态码:0正常结束,非0不正常结束
数组拷贝需要数组类型保持一致,否则会报错;不够长也会报错;原数组和目的数组都是引用数据类型,
那么子类类型可以赋值给父类类型
Runtime:
Runtime表示当前虚拟机的运行环境

Runtime r1=Runtime.getRuntime();创建对象,获取对象
获取的都是同一个runtime
r1.exit(0);
== Runtime.getRuntime().exit(0);
r1.exe("命令 eg:notepad(打开notepad)");//但是有一些命令是用不了的Object:
Object是Java中的顶级父类。所有的类都直接或间接的继承于Object类。object类中所有都可以被子类访问;没有成员变量;只有无参构造方法。

toString()可以把object对象写成字符串的表达形式:
Object obj = new Object();
String str1 = obj.toString();
System.out.println(str1);//java.lang.Object@119d7047 (包名+类 @ 地址值)
和直接打印对象是一样的
System.out.println(obj);Object中的equals比较的是地址值
Object中的clone是protected,所以只能调用;
重写clone后要让本类实现一个接口:Cloneable(空的,标记性接口,说明当前类的对象可以clone)
浅克隆和深:
对于基本数据类型:都是复制值
对于引用数据类型:浅克隆创建对象后指向的是同一个数据,深克隆创建对象后会再复制一份引用数据指向的数据,再指向新的空间,和原对象互不干扰。
字符串都是在串池管理
object中的clone都是浅克隆
深克隆自己重写clone

Objects:

BigInteger:
对象一旦创建,值不可以改变
计算也只是创建一个新的对象
存储方式:截取成数组储存
构造方法:

radix为进制,val需要符合相应进制的规范
val只能是数字字符串,不然会报错

valueOf方法:
取值范围比较小,在long范围内,超出不行
在内部对常用的数字:-16~ 16进行了优化。提前把-16 ~ 16 先创建好BigInteger的对象,如果多次获取不会重新创建新的。
常见成员方法:

public double doubleValue(BigInteger val) 转double
eg:
BigInteger a=new BigInteger(“1”);
BigInteger b=new BigInteger(“1”);
BigInteger c=a.add(b); //2
BigInerger[] arr=a.divideAndaRemainder(b); //arr.length==2BigDecima:
小数的精确计算,或者用于很大的小数
构造方法:
1.BigDecima bd1=new BigDecima(double name);
double b=0.1;
BigDecima bd1=new BigDecima(b);
不一定准确
2.BigDecima bd2=new BigDecima(String s);
BigDecima bd2=new BigDecima("0.01");
3.通过静态方法 有优化,对于0~10的数字有预先准备
BigDecima bd3=new BigDecima.valueOf(10);常见方法:

正则表达式:
import java.util.regex.Pattern;
可以在文档汇总查Pattern
作用:校验字符串是否满足规则;在一段文本中查找满足要求的内容

方法:
matches(“正则表达式”)
System.out.print1n( "a".matches( "[abc]")); // true
System.out.print1n( "ab".matches( "[abc]")); //false
System.out.print1n( "ab".matches( "[abc][abc]"));//true
?i匹配时不区分大小写
?!除了后面的
细节:如果要求两个范围的交集,那么需要写符号&& [a-z&&[b-c]]
如果写成了一个&,那么此时&表示就不是交集了,而是一个简简单单的&符号
\d等需要再加一个\表示转义
要打".",需要\\.
捕获分组:
用括号表示分组

\\组号:表示调用第几组的 (只能用在内部)
$组号:可以外部

非捕获分组:

不占用组号

爬虫:
正则表达式:import java.util.regex.Pattern;
匹配器Matcher:import java.util.regex.Matcher;
文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取。在大串中去找符合匹配规则的子串。
//正则表达式创建
Pattern p=Pattern.compile(“正则表达式”);
//获取文本匹配器的对象
//m:文本匹配器的对象
//str:大串
//p:规则
//m要在str中找符合p规则的小串
Matcher m = p.matcher(str);
//拿着文本匹配器从头开始读取,寻找是否有满足规则的子串
//如果没有,方法返回false
//如果有,返回true。在底层记录子串的起始索引和结束索引+1
boolean b = m.find( );
//方法底层会根据find方法记录的索引进行字符串的截取
//substring(起始索引,结束索引);包头不包尾 (所以结束索引要+1
//会把截取的小串进行返回。
string s1 = m.group( );
System.out.print1n(s1);
再次调用find会直接从一个位置开始找,重复循环直到find返回false网络爬虫:

贪婪&非贪婪爬取:
尽可能地多(少)获取数据。
eg:对于ab+,前者会尽可能多获取b,后者只有ab
`String s="ab+" //贪婪爬取
String s="ab+?" //非时间:
jkd7以前时间相关类:
Date:
Date类是一个JDK写好的Javabean类,用来描述时间,精确到毫秒。利用空参构造创建的对象,默认表示系统当前时间。利用有参构造创建的对象,表示指定的时间。
public class Date{
private long time;//计算时候都要用long
public Date(){
this.time=System.currentTimeMillis();
}
public Date(long time){
this.time=time;
}
public setTime(long time){
this.time=time;
}
getTime() return this.time;//比较时间先后的时候要比较里面的time 而不是对象Date
}
//java内部有可以直接用SimpleDateFormat:
格式化时间,把时间按照我们喜欢的格式;把字符串的时间转成Date

默认格式用斜杠隔开的
SimpleDateFormat sdf=new SimpeDateFormat("yyyy年MM月dd日 HH:mm:ss");
解析的时候要传入和对象中格式一致的字符串

Calendar:


ps:month获取的范围是0~11,对应1到12
星期从1开始是星期日
field:对应0~纪元(Calendar.YEAR),1~年 2~月 3~一年中的第几周 4~一个月的第几周 5~日
jdk8新增:
更简单安全

Zoneld:

Instant:

is包括前后,判断时间的前后
ZoneDateTime:

with 年月日等;mius、plus同理
DateTimeFormatter:
时间的格式化和解析

Calendar:

get中获取的是对象,输出的话是对象,不是对象的值,还要getValue()

工具类:

Period period=Period.between(LocalDate ld1,ld2) // ld2-ld1
//例如period.getYeas获取其中的特定
//period.toTotalMonth 全部换算成月
CHronoUnit中元素最多,包装类:
char-character int-integer 其他都是首字母大写
JDK5后可以自动拆箱和包箱 (不需要new,不需要调用方法)

除了character都有对应的parse***方法
本文介绍了Java中Math类的基本运算,如开平方根和立方根,以及abs和random方法。讨论了System类的exit状态码和数组拷贝。详细讲解了Object类的toString、equals和clone方法。提到了BigInteger和BigDecimal的使用,以及正则表达式的应用,包括Pattern和Matcher。还概述了Java时间处理,从JDK7的Date、SimpleDateFormat到JDK8的新特性,如ZoneId和Instant。最后提及了网络爬虫的基本概念。
1212

被折叠的 条评论
为什么被折叠?



