1. java.lang.*
lang包提供Java语言开发所需要的最基本的类,这个包会自动导入,对于其中的类,可以直接使用而不需要import引入,如System类,String类,包装类,Math类,Object类,Thread类,Exception类。
1.1 包装类
java是面向对象的语言,但java中的基本数据类型却不是面向对象的,所以java中又为每一个基本数据类型设计了一个对应的类,称为包装类。
在JDK5.0以上,基本数据类型与包装类之间可以直接转换,称为自动拆装包。
byte ··> Byte
short ··> Short
int ··> Integer
long ··> Long
char ··> Character
boolean ··> Boolean
float ··> Float
double ··> Double
好处:提供了很多用于处理当前数据类型的常用方法;java中很多类的方法参数要求是Object对象,而基本数据类型不是对象,因此提供了包装类。
1.2 Math类
Math类包含了许多静态方法和静态常量,不允许实例化。
包括常量PI、绝对值、三角函数、最大整数最小整数、对数函数、指数函数、幂函数、平方根、四舍五入等。
1.3 Object类
Object类是所有类的父类,定义一个类不继承任何类,默认继承 Object。
这个类中一共11个方法,包含了所有类都需要定义的方法:
protected clone():克隆方法,创建一个与当前对象完全相同的对象
equals(Object):与另一个对象的内容进行比较,相同返回True,不同返回False。可以通过继承和重写equals方法,完成不同逻辑的比较。
自反性:s.equals(s)需为True
对称性:a.equals(b)和b.equals(a)结果应相同
传递性:如果a.equals(b),b.equals(c)为True,那么a.equals(c)也为True。反之也成立
一致性:equals中比较的信息不被修改时,多次调用结果应相同。
与null相比,返回False
hashcode(): 返回一个int整型值。一般都是同时重写hashcode()和equals()
一致性:对象信息不被修改时,多次调用结果应相同。
如果两个对象是相等的(调用equals方法返回True),那么它们调用hashcode()也必须返回相同的整数。但两个对象不相等,也可能返回相同的hashcode。
finalize():当一个对象标记成垃圾时,JVM可能会调用此方法
wait()
notify()
toString():返回当前对象的字符串表示。使用System.out.println()直接输出某个对象时,会自动调用此方法。
1.4 String类
字符串是常量,一旦创建就不能更改。
常用方法:返回值类型 方法名 方法含义
char charAt(int index):返回指定位置处的字符
int length():返回字符串的长度
boolean contains(CharSequence s):是否包含另一个子串
int indexOf(char ch):返回指定字符在字符串中第一次出现处的索引
int indexOf(char ch,int fromIndex):从指定下标开始查找
int indexOf(String str):返回指定子字符串在字符串中第一次出现处的索引
int indexOf(String str,int fromIndex):从指定下标开始查找
boolean isEmpty():判断字符串是否为空,当且仅当length()为0时。
int lastIndexOf(char ch):返回最后一次出现的索引,重载情况同上。
String replace(char oldChar,char newChar):使用newChar替换所有的oldChar
String replace(CharSequence target,CharSequence replacement):使用指定字面值替换所有的目标字面值
String replaceAll(String regex,String replacement) :可以使用正则表达式替换
String replaceFirst(String regex,String replacement) :只替换第一个子字符串
String[] split(String regex):根据正则表达式拆分字符串
boolean startsWith(String prefix):是否以指定的前缀开始
boolean startsWith(String prefix,int offset):从指定位置处是否以指定的前缀开始
boolean endsWith(String suffix):是否以指定后缀结束
String toUpperCase():将字符串中所有字符都转为大写
String toLowerCase():将字符串中所有字符都转为小写
String trim():去掉字符串中左侧和右侧的空格,中间的空格不变
String substring(int beginIndex):返回一个子字符串,从beginIndex开始到原字符串结尾
String substring(int beginIndex,int endIndex):返回一个子字符串,从beginIndex开始到endIndex结束(包含beginIndex,但不包含endIndex)
boolean equals(Object obj):将字符串与指定对象比较,判断两个字符串内容是否完全相同。
boolean equalsIgnoreCase(String str):将字符串与另一个字符串比较,且不考虑大小写。
boolean matches(String regex):判断字符串是否符合正则表达式的格式
字符串缓冲池(String Pool):因为String类是使用频率最高的,同时String又是一个常量,因此为了提升性能对String类做了特殊的处理。当使用双引号直接定义一个字面值的字符串时,java会在字符串缓冲池中查找,如找到相同字面值,则直接指向(使用这个引用)这个值。找不到时,会在池中创建一个常量值并指向。
String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
String str4 = new String("hello");
System.out.println(str1==str2);
System.out.println(str3==str4);
因此,上面第一个的输出为true,第二个的输出为false
字符串与基本数据类型的转换:可以通过包装类的方法,如Integer.parseInt(String)、Double.parseDouble(String)等,将字符串转化为对应的数据类型。
1.5 StringBuffer类、StringBuilder类
StringBuffer,字符串缓冲区,它是可变的,且线程安全。
方法使用同String类似,区别是StringBuffer会直接返回处理后的字符串,不需要使用额外的变量去接收。
String str1 = "hello";
String str2 = str1 + "OK";
StringBuffer str3 = new StringBuffer("hello");
str3.append("OK");
System.out.println(str1);
System.out.println(str3);
/*
可以看出str1做了字符串连接操作后,str1本身并没有改变。
*/
append():追加
insert():插入
replace():替换
delete():删除
substring():取子串
reverse():反转
capacity():容量
length():长度
StringBuilder类似于StringBuffer,但是线程不安全
1.6 正则表达式
用于字符串的格式匹配。
主要作用:格式验证(邮箱、网址、身份证号、手机号等),判断是否合法
字符串查找
字符串替换
正则表达式的语法:
^:以什么开头(一般查找时使用)。^abc:以abc开头
$:以什么结尾。abc$:以abc结尾
[]:[]中的任意一个字符。[0-9]:0-9任一个数字,[0123]:0-3中任一个数字,[abc],[a-zA-Z]
.:任意一个字符
*:前一项字符匹配0至多次
+:前一项字符匹配1至多次
?:前一项字符匹配0或1次
{n}:固定匹配n次
{n,m}:匹配n-m次
{n,}:匹配至少n次
():设置一个捕获项,不加()会把前面的单个字符当成捕获项。(其实就是改变优先级)
|:或
\:转义字符,对正则表达式中有特殊含义的字符进行转义(比如在匹配网址xxxxx.com时就需要对.进行转义,需要转义两次,因为\也有特殊含义。这要分两步看,首先字符串中的\\被编译器解释为\,然后作为正则表达式,\.又被正则表达式引擎解释为.,如果在字符串里只写\.的话,第一步就被直接解释为.,之后作为正则表达式被解释时就变成匹配任意字符了)
\d:数字,[0-9]
\D:非数字,[^0-9]
\s:空白字符
\S:非空白字符
\w:单词字符,[a-zA-Z_0-9]
\W:非单词字符
1.7 Pattern类
对正则表达式对象的封装,代表编译后的正则表达式
1.8 Matcher类
是对一个正则表达式和需要进行匹配的字符串的封装。
提供了一些用于匹配的方法:boolean matches():整体匹配
boolean lookingAt():从头开始匹配
boolean find():查找
Pattern p = Pattern.compile("[0-9]{6}");
Matcher m = p.matcher("gdfjgqrhh1gh3g2h4342132jgbnjbfgh341234hg");
boolean b =m.matches();
System.out.println(b);
2. java.util.*
util包提供事件模型、集合框架、日期时间工具和各种有用的类
2.1 Random类
随机数生成器,生成各种类型的伪随机数
next():
nextBoolean():
nextBytes():
nextDouble():
nextFloat():
nextInt():生成任意一个int类型的数
nextInt(int n):生成0-n(不包括n)的随机整数
nextLong():
2.2 Date类
关于日期处理可以看另一篇:日期处理常用类