第五章@杨光浩
Java提供了非常丰富的基础类库。
String类和StringBuffer类
- String类的初始化
1.使用字符串常量直接初始化一个String对象,语法格式:String 变量名=字符串
在初始化字符串对象时,既可以将字符串对象的初始化值设为空,也可以初始化为一个具体的字符串,示例:
String str1 = null;//初始化为空
String str2 = "";//初始化为空字符串
String str3 = "abc";//初始化为abc,其中abc为字符串常量
注意空字符串与null的区别:空字符串表示String对象的内容为空,而null表示String类的变量不指向任何的String 对象。
2.使用String的构造方法初始化字符串对象,语法格式:String 变量名 = new String(字符串);
语法中字符串同样可以为空或是一个具体的字符串。
String类的常用构造方法:
小提示:链接字符串可以通过运算符+来实现,代码"a" + str + "b"
中的+的作用就是将两个字符串合并到一起生成新的字符串。在Java中,如果+两边的操作数有一个为String类型,那么+就表示字符串连接运算符。
- String类的常见操作
- StringBuffer类
Java中String类是final类类型的,所以使用String定义的字符串是一个常量,一旦创建,内容和长度是不可改变的。为了便于对字符串进行修改,JDK中提供了一个Stingbuffer类(也称字符串缓冲区)来操作字符串。StringBuffer类和String类的最大区别在于它的内容和长度都是可以改变的。StringBuffer类似一个字符容器,当在其中添加或删除字符时,所操作的都是这个字符容器,并不会产生新的StringBuffer对象。
StringBuffer构造方法
String类和StringBuffer类的不同
1.String类定义的字符串是常量,创建后内容和长度是无法修改的。StringBuffer类表示字符容器,内容和长度可以随时修改。
2.String类重写了Object类的equals()方法,StringBuffer类没有重写Object类的equals()方法。
String s1=new String("abc");
String s2=new String("abc");
System.out.println(s1.equals(s2)); //打印结果为true
StringBuffer sb1=new StringBuffer("abc");
StringBuffer sb2=new StringBuffer("abc");
System.out.println(sb1.equals(sb2)); //打印结果为false
3.String类对象可以用操作符+进行连接,而StringBuffer对象之间不能。
String s1="a";
String s2="b";
String s3=s1+s2; //合法
System.out.println(s3); //打印出ab
StringBuffer sb1=new StringBuffer("a");
StringBuffer sb2=new StringBuffer("b");
StringBuffer sb3=sb1+sb2 //编译错误
多学一招
JDK1.5之后提供了一个StringBuilder类同样可以操作字符串。StringBuffer和StringBuilder功能像是,且两个类中的所提供的方法也基本相同。不同的是StringBuffer是线程安全,而StringBuilder没有实现线程安全功能所以性能略高。
System类
System类的常用方法
Runtime类
Runtime类用于表示Java虚拟机运行时的状态,它用于封装Java虚拟机进程。每次使用java命令启动Java虚拟机时都会对应一个Runtime实例,并且直有一个实例,应用程序会通过该实例与其运行环境相连。应用程序不能创建自己的Runtime实例,若想在程序中获得一个Runtime实例,可以通过getRuntime()方法获取与之相关的Runtime对象,具体方法如下:
Runtime run = Runtime.getRuntime();
Math类
Math类是一个工具类,主要用于完成复杂的数学运算。由于其构造方法被定义成private,因此无法创建Math类的对象。Math类中的所有方法都是静态方法,可以直接通过类名来调用。
Math类的常用方法:
注意:round()方法用于对某个小数进行四舍五入,此方法会将小数点后面的数字全部忽略,返回一个int类型的数,而ceil()方法和floor()方法返回的都是double类型的数,这个数在数值上等于一个整数。
Random类
在JDK的java.util包中,有一个Random类,它可以在指定的取值范围内随机产生数字。在Random类中提供了两个构造方法。
Random类的常用方法
包装类
Java虽然是面向对象的编程语言,但是他包含的8种基本数据类型却不支持面向对象的编程机制(没有属性和方法)
JDK中提供了一系列的包装类,通过这些包装类可以将基本数据类型的值包装为引用数据类型的对象。
包装类和基本数据类型在进行转换时,引入了自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)的概念,其中自动装箱是指将基本数据类型赋给对应的包装类变量,反之,拆箱是指将包装类的对象类型直接赋给一个对应的基本数据类型变量。
自动装箱 & 自动拆箱
- 在JDK1.5之前,并没有这两项功能,所以只能通过以下途径实现
- 把基本数据类型变量变成包装类实例:使用对应包装类的valueOf()静态方法
- 获得包装类实例中包装的基本类型变量:使用包装类提供的xxxValue()实例方法
- 自动装箱:可以把一个基本类型变量直接赋给对应的包装类变量,或者赋给Object变量
- 自动拆箱:可以把包装类变量直接赋给一个对应的基本类型变量