StringBuffer类
-
创建StringBuffer类
创建必须使用new关键字
StringBuffer sbf = new StringBuffer();//无初始值 StringBuffer sbf = new StringBuffer("abc");//初始值"abc" StringBuffer sbf = new StringBuffer(32);//初始容量为32个字符
-
append()方法
append()方法可将参数转换成字符串,然后追加到此序列中。
sbf.append(obj);
-
setCharAt(int index,char ch)方法
将给定索引处的字符修改为ch。
sbf.setCharAt(index,ch)
-
insert(int offset,String str)方法
将字符串str插入到指定的索引值offset位置上。
sbf.insert(offset,str)
-
delete(int start,int end)方法
可移除此序列的子字符串中的字符。该字符串是从指定的索引start开始,一直到索引end-1处,如果end-1超过最大索引范围,则一直到序列尾部。如果start等于end,则不发生任何更改。
sbf.delete(start,end)
-
其他方法
public class StringBufferTest { public static void main(String[] args) { StringBuffer sbf = new StringBuffer("ABCDEF");//创建字符串序列 System.out.println("sbf的原值为:"+sbf);//输出原值 int length = sbf.length();//获取字符串长度 System.out.println("sbf的长度:" + length);//输出长度 char chr = sbf.charAt(5);//获取索引为5的字符 System.out.println("索引为5的字符为:"+ chr);//输出索引为5的字符 int index = sbf.indexOf("DEF");//获取字符串为DEF的索引位置 System.out.println("DEF字符串的索引位置为:" + index); String substr = sbf.substring(0,2);//截取索引从0到2的字符串 System.out.println("索引0开始至2之间的字符串:" + substr); StringBuffer tmp = sbf.replace(2,5,"1234");//替换字符串 System.out.println("替换后的字符串为:" + tmp); } }
StringBuffer与String的不同之处
String只能赋值一次,每一次内容发生改变都生成了一个新的对象,然后原有对象引用新对象。所以说String本身是不可改变的。每一次改变String的字符串内容,都会在内存创建新的对象,而每一次生成新对象都会对系统性能产生影响,降低java虚拟机的效率。
StringBuffer不同,每次都是操作自身,而不是生成新对象,其所占空间会随字符内容增加而扩充,做大量的修改操作,不会因生成大量匿名对象而影响系统性能。
Java常用类
-
包装类
Java把8个基本数据类型包装成相应的类,这样就可以通过调用各自包装类中许多实用的方法。
-
Integer类
java.lang包中的Byte类、Integer类、Short类和Long类分别是基本数据类型byte、int、short、long的包装类,由于上述4个包装类都是Number的子类,且都是对整数进行操作,所以上述4个包装类包含的方法也基本相同。以Integer类为例如下:
1.构造方法
Integer类有以下两种构造方法。
Integer(int number)
Integer number = new Integer(7);
Integer(String str)
Integer number = new Integer("45");
使用字符串变量创建Integer对象,字符串变量的值必须是数值型的(如“123”),否则会报NumberFormatException异常。
2.常用方法
/* Integer类常用方法例子 */ public class Demo { public static void main(String[] args) { int num = Integer.parseInt("456");//通过字符串转换为int类型 Integer iNum = Integer.valueOf("456");//通过构造函数创建一个Integer对象 System.out.println("int数据与Integer对象比较:" + iNum.equals(num)); String str2 = Integer.toBinaryString(num);//二进制 String str3 = Integer.toHexString(num);//十六进制 String str4 = Integer.toOctalString(num);//八进制 String str5 = Integer.toString(num,15);//十五进制 System.out.println("456的二进制表示为:" + str2); System.out.println("456的十六进制表示为:" + str3); System.out.println("456的八进制表示为:" + str4); System.out.println("456的十五进制表示为:" + str5); } }
3.常量
Integer类提供了以下四个常量:
MAX_VALUE:表示int型可取的最大值
MIN_VALUE:表示int型可取的最小值
SIZE:用来以二进制补码形式表示int值得位数
TYPE:表示基本类型int得Class实例。
-
Number类
Number类是一个抽象类,它是Byte类、Integer类、Short类、Long类、Float类和Double类的父类。
要把Number类的子类对象转换为对应基本数据类型,需要使用Number类对应子类中的方法。
byteValue() 返回值byte intValue() 返回值int floatVaue() 返回值float shortValue()返回值short longValue() 返回值long doubleValue()返回值double
-
-
Math类
Math类表示数学类,Math类中的数学方法都被定义为static形式,所以在程序中可以直接通过Math类的类名调用某个数学方法,语法格式如下:
Math.数学方法
Math类中还存在一些数学常量
Math.PI
圆周率Math.E
自然对数底数e -
Random类
java.util包提供了Random类,通过实例化一个Random类对象可以创建一个随机数生成器。
Random r = new Random();
Random提供了生成各种数据类型随机数的方法
nextInt() 返回随机int型 nextInt(int n) 返回大于或等于0小于n的随机int型值 nextLong()返回随机long型 nextBoolean()返回随机Boolean型 nextFloat()返回一个随机float型 nextDouble()返回一个随机double型 nextGaussian()返回一个概率密度为高斯分布的double型值
-
Data类
java.util包中提供了Date类来处理日期和时间。使用Date类需要先创建Date类对象,Date类的构造方法及说明如表
构造方法 功能描述 Date() 分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒) Date(long date) 分配Date对象并初始化此对象,以表示自从标准基准时间(即1970年1月1日00:00:00GMT)以来的指定毫秒数 long timeMillis = System.currentTimeMillis();//获取系统当前时间距基准时间的毫秒数。 Date date = new Date(timeMillis);
方法 返回值 功能描述 after(Date when) boolean 测试当前日期是否在指定日期之后 before(Date when) boolean 测试当前日期是否在指定日期之前 getTime() long 获得基准时间开始 到现在所表示的毫秒数 setTime() void 设置当前Date对象所表示日期时间值,该值用以表示基准时间以后time毫秒的时间点 为了将时间显示为”2021-03-02“或者”14:25:43“的格式,java.text包中提供了DateFormat类,按照指定格式对日期或者时间进行格式化。DateFormat提供了四种默认的格式化风格。
SHORT:完全为数字,如12.13.52或3:30pm
MEDIUM:较长,如Jan 12,1952
LONG:更长,如January 12,1952或3:30:42pm
FULL:完全指定,如Tuesday、April 12、1952AD或3:30:45pm PST
使用DateFormat类还可自定义日期、时间的格式。首先创建DateFormat类对象。由于DateFormat类是抽象类,因此需要使用DateFormat类的静态方法getDateInstance()创建DateFormat对象
DateFormat df = new DateFormat.getDateInstance();
DateFormat类常用方法
方法 返回值 功能描述 format(Date date) String 将一个Date格式化为日期/时间字符串 getCalendar() Calendar 获取与此日期/时间格式器关联的日历 getDateInstance() static DateFormat 获取日期格式器,该格式器具有默认语言环境的默认格式化风格 getDateTimeInstance() static DateFormat 获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格 getInstance() static DateFormat 获取SHORT风格的默认日期/时间格式器 getTimeInstance() static DateFormat 获取时间格式器,该格式器具有默认语言环境的默认格式化风格 parse(String source) Date 将字符串解析成一个日期,并返回这个日期的Date对象
枚举类型
枚举类型常用于设置常量。传统常量在实际开发过程中习惯性被定义在接口中。例如,创建接口Constants,在Constants中定义两个常量Constants_A,Constants_B。
public interface Constants{
public static final int Constants_A = 1;
public static final int Constants_B = 12;
}
由于枚举类型是一种数据类型,而且被视为以系列具有名称的常量的集合,所以被赋予了在程序编译时检查数据类型的功能,使得枚举类型定义的常量逐渐取代了传统常量。使用枚举类型定义常量的语法如下:
public enum Constants{
Constants_A;
Constants_B;
}
其中,enum是定义枚举类的关键字。在程序中可以通过Constants.Constants_A
的方式使用枚举类型常量。