介绍一下几个java中经常用到的类
?String 类
?StringBuffer、StringBuilder 类
?Date 类
?DateFormat 类
?Random、Math 等
1. String类
1.1 String 类的常用方法
?public int indexOf (String s):从当前字符串的头开始检索字符串 s,并返回首次出现 s 的位置
?indexOf(String s ,int startpoint) 求指定字符的索引
?lastIndexOf (String s)
?public String substring(int startpoint):获得一个当前字符串的子串
?substring(int start ,int end)
?public String trim(): 得到一个 去掉前后空格后 的字符串对象
- trim():去除前后空格的 trim() 方法
- split(String regex): 把字符串拆分成字符串数组
- equals(): 比较字符串内容是否相等必须使用该方法, 而不能直接使用 ==
1.2
字符串与基本数据的相互转化
?public static int parseInt(String s):可以将由“数字”字符组成的字符串
?类似地,使用java.lang包中的 Byte、Short、Long、Float、Double类调相应的类方法可以将由“数字”字符
组成的字符串,转化为相应的 基本数据类型。
1.3字符串与字符数组
?String 类的构造方法:String(char[]) 和 String(char[],int offset,int length)
分别用字符数组中的全部字符和部分字符创建字符串对象
?String类提供了将字符串存放到数组中的方法:
–public void getChars(int start,int end,char c[],int offset
)
?将字符串中的全部字符存放在一个字符数组中的方法:
–public char[]
toCharArray()
1.4字符串与字节数组
?String(byte[])用指定的字节数组构造一个字符串对象。String(byte[],int offset,int length)
用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。
?public byte[] getBytes() 方法使用平台默认的字符编码,将当前字符串转化为一个字节数组。
?public byte[] getBytes(String charsetName)
使用参数指定字符编码,将当前字符串转化为一个字节数组。
总结:
1. String 是不可变的字符序列!
2. 关于字符串缓冲池: 直接通过 = 为字符串赋值, 会先在缓冲池中查找有没有一样的字符串,
若果有就把那个引用赋给字符串变量, 否则, 会创建一个新的字符串, 并把对应的字符串放入到缓冲池中.
2. 关于字符串缓冲池: 直接通过 = 为字符串赋值, 会先在缓冲池中查找有没有一样的字符串,
若果有就把那个引用赋给字符串变量, 否则, 会创建一个新的字符串, 并把对应的字符串放入到缓冲池中.
?String使用陷阱:
– string s="a"; //创建了一个字符串 s=s+"b";
//实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b"(也就是"ab")。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能。
2.StringBuilder、StringBuffer 类
StringBuilder、StringBuffer: 是可以被修改的字符序列
public class StringTest { /** * 1. append() 方法: 把字符串加入到以后的字符序列的后面 * 注意: append() 方法的返回值还是当前的 StringBuffer 对象. 可以使用方法的连缀(只要调用一个方法,这个方法的返回值是调用者本身,就可以实现方法的连缀,这里指连续使用append). * * 2. StringBuilder VS StringBuffer: * StringBuilder 是线程不安全的, 效率更高. 所以更多的时候使用 StringBuilder * StringBuffer 是线程安全的, 效率偏低, 在多线程的情况下下使用. */ @Test public void testAppend(){ StringBuilder stringBuilder = new StringBuilder(); // ... = new StringBuilder(5); 如果预置一个容量,当超出这个容量时,会继续加入 stringBuilder.append("<html>") .append( "<body>") .append( "</body>") .append("</html>"); System.out.println(stringBuilder); } @Test public void testStringBuilder() { StringBuffer stringBuffer = new StringBuffer("abcde"); System.out.println(stringBuffer); stringBuffer.replace(1, 3, "mvp"); System.out.println(stringBuffer); } }
3.Data,DateFormat类
Date() 封装了时间和日期.
DateFormat: 把日期对象格式化为一个字符串
DateFormat: 把日期对象格式化为一个字符串
把一个字符串转为一个 Date 对象
?Date类在java.util包中。使用Date类的无参数构造方法创建的对象可以获取本地当前时间。
?SimpleDateFormat来实现日期的格式化。
public SimpleDateFormat(String pattern);
该构造方法可以用 参数pattern 指定的格式创建一个对象,该对象调用:
?public String format(Date date):方法格式化时间对象date
/** * Date() 封装了时间和日期. * * DateFormat: 把日期对象格式化为一个字符串 & 把一个字符串转为一个 Date 对象 * 1. DateFormat: 是一个抽象类. * 抽象类获取对象的方式: * 1). 创建其子类对象 * 2). 有的抽象类中提供了静态工厂方法来获取抽象类的实例. */ public class DateTest { //创建其子类对象 //这种样式是自定义的(多用) @Test public void testSimpleDateFormat() throws Exception{ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date date = new Date(); System.out.println(dateFormat.format(date)); //字符串转化为Date,字符串形式必须是dateFormat的格式 String dateStr = "1990-12-12 12:12:12"; Date date2 = dateFormat.parse(dateStr); System.out.println(date2); } //提供了静态工厂方法来获取抽象类的实例,可以不用new //这种样式只能是系统指定的,系统提供的样式 @Test public void testDateFormat() throws Exception{ DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG); Date date = new Date(); String dateStr = dateFormat.format(date); System.out.println(dateStr); //字符串转化为Date,字符串形式必须是dateFormat的格式 dateStr = "2013年10月10日 下午08时08分08秒"; Date date2 = dateFormat.parse(dateStr); System.out.println(date2); } @Test public void testDate() { Date date = new Date(); System.out.println(date); } }
4. Random,Math类