------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一、散列表类与性能优化线程同步散列表类
1、Vector 与ArrayList
对于线程安全而言,一些散列表核心类是线程安全的,如Vector类,一些核心类不是线程安全的,如ArrayList类。
原则:对线程安全有严格要求时,尽量选用线程安全的散列表类,在不要求的情况下,尽量选用非线程安全的散列表类,因为线程安全的散列表会将本来可以并行处理的任务的多线程进行排队。当这些线程试图并行访问该散列表对象时,会被转为串行处理。
2、设置ArrayList初始化容量
ArrayList给新添加的元素提供必要的存储空间,需要增加自身的内部数据结构,这个过程由系统自动完成。但如果数组很大,需要提高添加元素的性能
先看一个例子
Java代码
<span style="font-size:18px;">public class SetArraySize{
final int N = 1000000;
Object obj=new Object();
ArrayList list = new ArrayList();
long startTime = System.currentTimeMills();
for(int i=1; i<N; i ){
list.add(obj);
}
long endTime = System.currentTimeMills();
System.out.println("没有ensucreCapacity耗时:" (endTime-startTime) ms);
list = new ArrayList();
long startTime = System.currentTimeMills();
list.encrureCapacity(N);
for(int i=1; i<N; i ){
list.add(obj);
}
long endTime = System.currentTimeMills();
System.out.println("调用ensucreCapacity耗时:" (endTime-startTime) ms);
}
public class SetArraySize{
final int N = 1000000;
Object obj=new Object();
ArrayList list = new ArrayList();
long startTime = System.currentTimeMills();
for(int i=1; i<N; i ){
list.add(obj);
}
long endTime = System.currentTimeMills();
System.out.println("没有ensucreCapacity耗时:" (endTime-startTime) ms);
list = new ArrayList();
long startTime = System.currentTimeMills();
list.encrureCapacity(N);
for(int i=1; i<N; i ){
list.add(obj);
}
long endTime = System.currentTimeMills();
System.out.println("调用ensucreCapacity耗时:" (endTime-startTime) ms);
}</span>
运行结果:
没有ensucreCapacity耗时:172ms
调用ensucreCapacity耗时:63ms
提前调用ensucreCapacity,系统性能大大提高
3、ArrayList与LinkedList
ArrayList通过内部数组结构Object[]实现,而LinkedList通过一系列的内部记录连接在一起实现,不同场合的应用,性能差别较大
二、String类与性能优化
1、字符串累加与性能优化
StringBuffer.append累加字符串比 或 =累加性能高很多,数值越大,差别越大
2、字符串的lentht()与性能优化
在循环外就计算好字符串的长度int len=s.length(),不要在循环中用for(int i=0;i<s.length();i ).每循环一次都要计算长度,必然耗系统资源
3、toCharArray()
调用toCharArray()将字符串转为数组,通过数组索引值获取指定位置的字符,比用charAt()逐一获取特定位置的字符性能提高
4、字符串转为数字
d=new Double("8.97");
d=new Double(8.97); 第二种写法比第一种写法性能高很多倍
三.系统I/O类
1、通过系统缓冲流提高I/O操作效率
2、自定制缓冲区提高I/O操作效率更大程度提升系统性能。
3、通过压缩流提高I/O操作效率
ZipOutputStream
四.java中的常见api以及了解程度
(1)java.lang包下的80%以上的类的功能的灵活运用。
(2)java.util包下的80%以上的类的灵活运用,特别是集合类体系、正则表达式、zip、以及时间、随机数、属性、资源和Timer.
(3)java.io包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。
(4)java.math包下的100%的内容。
(5)java.net包下的60%以上的内容,对各个类的功能比较熟悉。
(6)java.text包下的60%以上的内容,特别是各种格式化类。
(7)熟练运用JDBC、java.security包下40%以上的内容,如果对于安全没有接触的话根本就不可能掌握java.
(8)AWT的基本内容,包括各种组件事件、布局管理器、常用组件、打印。
(9)wing的基本内容,和AWT的要求类似。
(10)XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。
五.java中时间类的简介
- 在 Java 应用中,格式化日期时间通常会用到 SimpleDateFormat 类
- public class SimpleDateFormat extends DateFormat
- SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类。 它允许格式 化 (date -> text)、语法分析 (text -> date)和标准化。
- SimpleDateFormat 允 许以为日期-时间格式化选择任何用户指定的方式启动。 但是,希望 用 DateFormat 中的 getTimeInstance、 getDateInstance 或 getDateTimeInstance 创 建一个日期-时间格式化程序。 每个类方法返回一个以缺省格式化方式初始化的日期/时间格式化程序。 可以根据需要用 applyPattern 方法修 改格式化方式。
- SimpleDateFormat 函数的继承关系:
- java.lang.Object
- |
- ----java.text.Format
- |
- ----java.text.DateFormat
- |
- ----java.text.SimpleDateFormat
- 下面代码演示:
<span style="font-size:18px;">public class FormatDateTime {
public static void main(String[] args) {
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm");
SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString()
SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
SimpleDateFormat myFmt4=new SimpleDateFormat(
"一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
Date now=new Date(); }} </span>
总结:
java语言以API闻名,所以我们一定要好好掌握java语言中的所有API上面的只是一些基础入门API,要想独立开发项目,我们还需要不断的学习。