Java的常用类库
一、字符串操作:
String / StringBuffer / StringBuilder:
A) String做字符串拼接的时候,性能极低(耗时),原因是Sting是不可变的,每次内容改变都会在内存中创建新的对象。
(1)String对象的创建:
1):直接赋一个字面量: String str1 = “ABCD”;
2):通过构造器创建:String str2 = new String(“ABCD”);
(2)两种方式有什么区别,分别在内存中如何分布?
String对象的空值:
1):表示引用为空(null): String str 1 = null; 没有初始化,没有分配内存空间.
2):内容为空字符串: String str2 = “”; 以及初始化,分配内存空间,不过没有内容.
(3)判断字符串非空:
1):引用不能为空(null);2):字符内容不能为空字符串(“”);
(4)字符串的比较操作:
1):使用”==”号: 只能比较引用的内存地址是否相同.
2):使用equals方法: 在Object类中和”==”号相同,建议子类覆盖equals方法去比较自己的内容.
String类覆盖equals方法,比较的是字符内容.
StringBuffer和StringBuilder都表示可变的字符串,当对象创建完毕之后,该对象的内容可以发生改变,当内容发生改变的时候,对象保持不变,功能方法都是相同的.
唯一的区别:
StringBuffer: StringBuffer中的方法都使用了synchronized修饰符,表示同步的,在多线程并发的时候可以保证线程安全,保证线程安全的时候,性能(速度)较低.
StringBuilder:StringBuilder中的方法都没有使用了synchronized修饰符,不安全,但是性能较高.
StringBuilder常用方法:
(1)append(Object val): 表示追加任意类型数据
(2)StringBuilder deleteCharAt(int index) : 删除字符串中,指定位置的字符
(3)insert():在任意位置给你添加类容
(4)reverse():反向操作
(5)replace:替换
(6)substring():截取字符串
(7)indexof():查找指点的内容是否存在
二、随机数(Random类):
1、Random类用于生产一个伪随机数(通过相同的种子,产生的随机数是相同的)。
2、public Random():使用默认的种子(以当前系统时间作为种子)。
3、public Random(long seed):根据指定的种子。
三、日期类(Date):java.Util.Date
1、分类:DateFormat/SimpleDateFormat类/Calendar类:
Date类中的大量方法都已经过时了,过时不代表不存在,依然可以使用,只不过不建议使用,官方建议我们使用Calendar类。
2、日期格式化操作:
a) DateFormat类(在java.text包):
Demo:
DateFormat d1 = DateFormat.getDateInstance();
DateFormat t1 = DateFormat.getTimeInstance();
System.out.println(d1.format(new Date()));
System.out.println(t1.format(new Date()));
DateFormat d2 = DateFormat.getDateInstance(DateFormat.YEAR_FIELD,new Locale("zh","cn"));
DateFormat t2 = DateFormat.getTimeInstance(DateFormat.ERA_FIELD,new Locale("zh","cn"));
System.out.println(d2.format(new Date()));
System.out.println(t2.format(new Date()));
//Locale类:Locale 对象表示了特定的地理、政治和文化地区。
b) SimpleDateFormat
Demo:
String strDate = "2012-10-01 11:10:10.222";
String formt1 = "yyyy-MM-dd HH:mm:ss.SSS";
String formt2 = "yyyy年MM月dd日HH时mm秒ss分SSS毫秒";
SimpleDateFormat sdf1 = new SimpleDateFormat(formt1);
SimpleDateFormat sdf2 = new SimpleDateFormat(formt2);
Date dd = null;
try {
dd = sdf1.parse(strDate );//这里只能是sdf1不能是sdf2
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(sdf2.format(dd));
3、日历类(Calendar):是抽象类,表示日历,比Date更强大.
创建日历对象:
Calendar c = Calendar.getInstance();
关于Java的常用类还有很多,我只列举了几个用得较多的,大家可以参考一下。