特点:类型使用final修饰的,底层是字符数组和其对数组的一些操作
创建出来的对象不可变(声明的变量是可变的),
java语言中最常用的类型,所以有一定的优化:
在使用String类型时,提供了字符串常量池
常量池:再给字符串变量赋值时,先去常量池寻找对象,有就把对象地址给变量,找不到再新建字符串对象放入常量池。(有利于对象的重用性)
这样的对象:必须是字符串字面量,或者是字面量之间
如:String str = "helloworld";
String str = "hello" + "world";
字符串的字面量拼接是在编译期间拼接出结果
String常用的API:
indexOf();
lastIndexOf();
length();:返回字符串的长度。数组中有length(是属性),集合中有size()。
substring();:截取字符串
toUpperCase();:将字符串中英文字母变大写
toLowerCase();:将字符串中英文字母变小写
2.正则表达式
是一个有规律的,有特定意义的一串字符,通常用来进行匹配,查找等操作。
其实是一个特殊的字符串,是一组“规则字符串”
常用符号:
. :任意字符
[]:表示取中括号中的一个
[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:表示非空白
^(不再中括号里):表示从头开始检查字符串是否匹配正则表达式
$:表示检查字符串的结尾是否匹配正则表达式
^[]{}$:表示从头到尾是否完全匹配
():表示分组
{}:表示个数
+:1个以上
?:0个或1个
*:0或0个以上
字符串中要表达“\”时,使用“\\”,第一个“\”是转义字符
3.String支持正则表达式
matches(String reg):参数为正则表达式,用来判断字符串是否匹配正则表达式
匹配:返回true 不匹配:返回false
split(String reg):用符合正则表达式的子字符串拆分成字符串数组
返回值类型:字符串数组 (如果正则表达式在首位,拆出一个空字符串;在末尾并不会多拆除一个空字符串)
replaceAll(String reg,String str):把符合正则表达式的内容全部替换为str
返回值类型:字符串
4.Object类型:所有引用类型的父类,在引用类型的顶端
它的引用变量可以指向任何类型的一个对象(向上转型)
Object obj = "aaa";
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类型中的常用方法:
toString():在Object类型中,方法的返回值为“类全名@散列码”
在自定义类型时,如果不手写继承Object,系统会默认继承Object,那么toString()方法就会被继承
继承后的方法返回的字符串没有意义。我们应该重写toString()方法用来描述new出来的对象的信息。
重写toString()默认规则:
“类全名[属性名 = 属性值, 属性名 = 属性值]”
toString():当想输出显示对象信息时,会默认调用这个方法。
equals():在Object类型中,equals()相当于==,比较的是地址,是
在大多数情况下,我们不比较是不是同一个对象,而应该比较两个对象的内容是否一样
自定义的类继承来的方法就不能满足需求,应该重写
重写规则:
public boolean equals(Object obj){
}
1.应该判断传进来的参数是不是null
2.判断传进来的参数是不是自己
3.判断传进来的参数是不是本类型;如果同一类型,再去比较属性。
5.包装类:八大基本数据类型
java语言是面向对象的语言,而八大基本数据类型的值不是对象,当我们想把这些值当作对象时就需要使用包装类
包装类的功能就是把基本数据类型的数值转换成对象
byte----java.lang.Byte
short----java.lang.Short
int----java.lang.Integer
long----java.lang.Long
float----java.lang.Float
double----java.lang.Double
char----java.lang.Character
boolean----java.lang.Boolean
常用方法:
将字符串转换成包装类型
int i = Integer.parseInt("12");
当想把数值转换成对象时 (装箱操作)
Integer i = Integer.valueOf(int val); 会将int的值转换成Integer类型的对象
当想把包装类对象转换为基本数据类型时(拆箱操作)
int i= (Integer对象).intValue(); 会将Integer类型的对象转换成int类型值
在jdk1.5版本以后,支持自动拆箱和装箱
在做运算时,包装类的对象都会转换成相应的基本数据类型再计算(自动拆箱)
reg:
Integer a = 4; 装箱
Integer b = 4; 装箱
Integer c = a + b; 先拆箱再装箱
异常处理:
Integer.parseInt("abc");这种情况会出现数字格式转换异常(NumberFormatException),在程序运行时发生
6.日期类型
java.util.Date
获取当前系统时间的方式:
1:Date now = new Date();//获取的是日期格式的当前系统时间
方法:
getTime():获取毫秒数。lang类型
setTiem(long time)
2.System.currentTimeMillis();//获取的是距1970年1月1日时间点的毫秒数
java.text.SimpleDateFormat:
SimpleDateFormat(String pattern); 构造器 pattern用来定义日期格式
y:年 M:月 d:日 H:24小时制 h:12小时制 m:分 s:秒 E:星期 a:上下午
1.通常用来对日期格式化
format(Date date); 返回String 将日期转换成字符串
2.将字符串转换成日期
Date.parse(String str); 将字符串转换成日期类型 有可能出现ParseException:转换异常,编译期间检查的