一:包装类
1.意义:把基本数据类型转换成引用数据类型操作。
jdk5.0以后支持自动拆装箱操作。
2.拆箱:引用数据类型转换成基本数据类型
int a = new Integer("4");//自动拆箱
3.装箱: 把基本数据类型转换成引用数据类型
Double a = 3.14F;//编译错误
Float b = 3.14F;//编译正确
4.编译器在检查基本数据类型变量的方法时,
先检查是否有本身或者是自动转换的基本数据类型的方法
如果有,就调用。
如果没有,检查本身包装类的方法。
有,就调用,没有就编译错误。
public static void main(String[] args) {
byte num = 5;
show(num);// 输出的short:5
}
public static void show(int a){
System.out.println("int:"+a);
}
public static void show(short a){
System.out.println("short:"+a);
}
public static void show(Byte a){
System.out.println("Byte:"+a);
}
public static void show(Long a){
System.out.println("Long:"+a);
}
public static void show(float a){
System.out.println("float:"+a);
}
public static void show(Double a){
System.out.println("Double:"+a);
}
5.包装类提供将字符串转换成相应的基本数据类型
parseXXX(String str);
XXX:对应的是基本数据类型名
reg:
int num = Integer.parseInt("123");
//结果为int类型的123
String str = "3.14";
double d = Double.parseDouble(str);
double d = Double.parseDouble("3.14a");
//上述代码会报异常
NumberFormatException,数字格式异常。
6.提供了其他方法
①:提供将基本数据类型转成二进制以字符串的形式。
int num = 5;
String str = Integer.toBinaryString(num);
②:提供将基本数据类型转成16进制以字符串的形式。
int num = 5;
String str = Integer.toHexString(num);
二、日期操作
1:日期类型:
Date:java.util包下的类型
获取当前系统时间的方式:
Date now = new Date();
//获取的是日期格式的当前系统时间
方法:
getTime():获取毫秒数。long类型
setTime(long time)
System.currentTimeMillis();
//获取的是距1970年1月1日时间点的毫秒数
2:日期格式化类型:
SimpleDateFormat:
定义格式,
①:可以格式化日期,将日期变成字符串
format(Date date)
②:可以将字符串转换成日期
parse(String date)
可能会出现ParseException异常
常用的格式字符:
y:年
M:月
d:日
H:时,24制
h:时,12制
m:分
s:秒
E:星期
a:上下午
3:日历类型:Calendar,是一个接口,不能实例化。有很多子类型
最常用的是格力高里历法(大多数国家通用的历法,即我们说的阳历)
1:作用是更方便的计算日期分量。
2:获取子类型的方法
getInstance():获取子类型,会自动划分时区,是静态方法
三、正则表达式:
什么是正则表达式?
是一个有规律的,有特定意义的一串字符,通常用来
进行匹配,查找等操作。
常用符号:
*:任意字符。
[abc]:表示abc中的任意一个字母
[^abc]:表示除了abc之外任意字符
[0-9]:表示0-9中的任意一个数字
[a-z]:表示a-z中的任意一个字母
[0-9a-zA-Z_]:表示这些字符中的任意一个
[a-z&&[^abc]]:表示a-z中除了abc之外的任意一个字母
[\d]:表示0-9中的任意一个数字
[\D]:表示非数字中任意一个字符
[\w]:表示单词字符中任意一个 相当于[0-9a-zA-Z_]
[\W]:除了单词字符外的任意一个
\s:表示[\n\t\r\f],空白
\S:非空白
\d*:表示有0个或0个以上数字
\d?: 表示没有或者有1个的数字
\d+:表示有1个或者是1个以上的数字
\d{n}:标有有n个数字
\d{n,}:表示有n个或n个以上的数字
\d{n,m}:表示有n-m个数字
用()进行分组
():表示分组
"(186)|(137)\d{8}":
表示匹配186的手机号,或者137的手机号
"^":表示从头开始检查字符串是否匹配正则表达式
"$": 表示检查字符串的结尾是否匹配正则表达式
"^[\d]{8}$":表示从头到尾检查字符串是否完全匹配
在写字符串时,想表达"\"这个字符,必须在前面添加转义字符
转义字符:\
有一些特殊字符都需要被转义,才行。
String支持正则表达式:
1:matchs(String reg):
参数为正则表达式,用来判断字符串是否匹配正则表达式
匹配:返回true
不匹配:返回false
2:split(String reg):
用来拆分字符串:用符合正则表达式的子字符串拆分成字符串数组。
返回值类型是字符串数组。
如果字符串的首位就符合正则表达式,会拆出一个空字符串""元素
在字符串的末尾如果符合了,不会拆分出一个空字符串元素。
3:replaceAll(String reg,String new):
作用是使用new这个字符串替换字符串中符合reg的子串
Object类型:
是所有引用类型的父类,在引用类型的顶端。
它的引用变量可以指向任何类型的一个对象
Object obj = "aaaa";
obj = new int[3];
obj = new Scanner(System.in);
面试题:怎么使用数组存一些类型不同的数据
用Object定义一个数组
Object[] arr = new Object[3];
arr[0] = "aaa";
arr[1] = new int[3];
arr[2] = new Scanner(System.in);
Object类型中的常用方法:
1:toString():
在Object类型中,方法的返回为"类全名@散列码"
在自定义类型时,如果不手写继承Object,系统会默认提供继承Object
toString()方法就会被继承。
继承后的方法返回的字符串没有意义。我们应该重写toString():
用来描述new出来的对象的信息。
重写toString():默认规则如下:
"类全名[属性名=属性值,属性名=属性值]"
toString():当想输出显示对象信息时,会默认调用这个方法
2:equals():
在Object类型中,equals()相当于==,比较的是地址,是不是同一个对象。
在大多数情况下,我们不比较是不是同一个对象,而应该比较
这两个对象的内容是否一样。
自定义的类继承过来的方法就不满足要求了。
应该重写equals()
重写规则:
public boolean equals(Object obj){
}
1:应该判断传进来的参数是不是null
2:判断传进来的参数是不是自己
3:判断传进来的参数是不是本类型
如果是同一类型,再去比较属性。