API指的是应用程序编程接口。在API中有一些类,类里面已经定义好了方法,可以直接拿来用。
String类和StingBuffer类
在应用程序中经常会用到字符串,所谓字符串就是指一串的字符,它是由许多单个字符连接而成的。字符串中可以包含任意字符,这些字符必须包含在一对双引号" "之内。
在java中定义了String和StringBuffer两个类来封装字符串,并提供了一系列操作字符串的方法,它们都位于java.lang包中,因此不需要导包就可以直接使用。
String类的初始化
在操作String类之前,首先需要对String类进行初始化,在Java中可以通过以下两种方式对String类进行初始化,具体如下。
1.使用字符串常量直接初始化一个String对象,具体代码如下。
String Str1=" abc " ;
由于String类比较常用,所以提供了这种简化的语法,用于创建并初始化String对象。其中," abc "表示一个字符串常量。
2.使用String类的构造方法初始化字符串对象,String类的构造方法如下表所示
String类的构造方法
下面的代码中列出了String类的三种构造方法,通过调用不同参数的构造方法便可完成String类的初始化。
String类的常见操作
String类在实际开发中应用非常广泛,因此灵活地使用String类是十分重要的。下面是String类常用的一些方法。
1.字符串的基本操作
从运行结果看出,String类提供的方法可以很方便地获取字符串的长度,获取指定位置的字符以及指定字符和字符串的位置。
2.字符串的转换操作
程序开发中,经常需要对字符串进行转换操作,例如将字符串转换成数组的形式,将字符串中的字符进行大小写转换等。
其中,valueOf()方法有很多重载的形式,float、double、char等其他基本类型的数据都可以通过该方法转为String字符串类型。
3.字符串的替换和取出空格操作
程序开发中,用户输入数据时经常会有一些错误和空格,这时可以使用String类和replace()和trim()方法,进行字符串的替换和去处空格操作。
trim()方法用于去处字符串两端的空格,不能去除中间的空格。若想去除字符串中间的空格,则可以调用String类的replace()方法。
4.字符串的判断操作
操作字符串时,经常需要对字符串进行一些判断,如判断字符串是否以指定的字符串开始、结束,是否包含指定的字符串,字符串是否为空等。在String类中针对字符串的判断操作提供了很多方法。
以上涉及到的方法都是用于判断字符串的,并且返回值均为boolean类型。其中equals()方法比较重要,该方法将父类Object中的equals()方法进行了重写。
在程序中可以通过“==”和equals()两种方式对字符串进行比较,但这两种方式有明显的区别。equals()方法用于比较两个字符串中的字符是否相等,==方法用于比较两个字符串对象的地址是否相同。对于两个字符串对象,当它们的字符内容完全相同时,使用equals()方法方法判断结果会为true,但使用==判断时,结果一定为false。
true是因为s1和s2字符串内容相同
false是因为s1和s2是两个对象
??????
还有一种情况,这是因为new关键字,在以后的补充内容里面我会去讲解。
5.字符串的截取和分割
在String类中针对字符串的截取和分割操作提供了两个方法。其中,subString()方法用于截取字符串的一部分,split()方法可以将字符串按照某个字符进行分割。
字符诱索引是从0开始的。在substring()方法中传入了两个参数4和6,因为字符串在截取时,只包括开始索引,不包括结束索引,所以会截取第五个和第六个字符。split()方法会根据指定符号将字符串分割成若干个部分,并存放到一个String类型的数组中。
注意:String字符串在获取某个字符时,会用到字符的索引。当访问字符串中的字符时,如果字符的索引不存在,则会发生StringIndexOutOfBoundsException(字符串角标越界异常)。
String Buffer类
字符串是常量,一般创建,其内容和长度是不可变的,如果要对一个字符串进行修改,则只能创建新的字符串。为了便于对字符串进行修改,在JDK中提供了一个StringBuffer类(也称字符串缓冲区)。StringBuffer类和String类的最大区别在于它的内容和长度都是可以改变的。StringBuffer类似一个字符串容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对象。
针对添加和删除字符的操作,StringBuffer类提供了一系列方法,具体如表所示。
StringBuffer类的常用方法
append()方法始终将这些字符添加到缓冲区的末尾,而insert()方法可以在指定位置添加字符。
StringBuffer类和String类有很多类似之处,初学者在使用时很容易混淆。简单归纳以下两者的不同。
①String类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。而StringBuffer表示字符容器,其内容和长度可以随时修改。在操作字符串时,如果该字符串仅用于表示数据类型,则使用String类即可。但是如果需要对字符串中的字符进行增删操作,则使用StringBuffer类。
②String类覆盖了Object类的equals()方法,而StringBuffer类没有覆盖Object类的equals()方法,具体示例如下。String s1=new String("abc");
String s2=new String("abc");
System.out.rpintln(s1.equals ( ) );//打印结果为true
StringBuffer sb1=new StringBuffer( "abc" );
StringBuffer sb2=new StringBuffer( "abc" );
System.out.println( sb1.equals(sb2) );//打印结果为false
③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;//编译出错
System类与Runtime类
System类对于学过前面知识的人来说并不陌生,在前面所学需要打印结果的时候都是用System.out.println();语句,这句代码红中就用了System类。System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此,想要引用这些属性和方法,直接使用System类调用即可。
System类的常用方法
1.getPropertise()方法
System类的getPropertise()方法用于获取当前系统的全部属性,该方法会返回一个Perpertise()对象,其中封装了系统的所有属性,这些属性是以键值对形式存在的。
文件获取当前系统属性的功能。首先通过System类的getPropertise()方法获取封装了系统属性的Propertise集合,然后对Propertise集合进行迭代(以后会介绍什么是迭代),将所有系统属性的键以及对应值打印出来。
2.currentTimeMillis()
currentTimeMillis()方法返回一个long类型的值,该值表示当前时间与1970年1月1日0点0分0秒之间的时间差,单位是毫秒,通常也将该值称为时间戳。
演示了数字的求和操作,程序在求和开始和结束时,分别调用currentTimemillis()方法获得了两个时间戳,两个时间戳之间的差值便是求和操作耗费的时间。
Runtime类
Runtime类用于表示虚拟机运行时的状态,它用于封装JVM虚拟机进程。每次使用java命令启动虚拟机都对应一个Runtime实例,并且只有一个实例,因此该类采用单例模式进行设计,对象不可以直接实例化。若想在程序中获得一个Runtime实例,只能通过以下方式。RunTime run=RunTime.getRuntime();
由于该类封装了虚拟机进程,因此,在程序通常会通过该类的实例对象来获取当前虚拟机的相关信息。
空闲内存数和可用最大内存数都是以字节为单位计算的,上面的结果单位换成了兆(M)。
Runtime类中提供了一个exec()方法,该方法用于执行一个dos命令,从而实现与在命令行窗口中输入dos命令同样的效果。例如通过“notepad.exe”命令打开一个windows自带的记事本程序。