大学期间的一读书笔记

1.小心使用Boxing
自动装箱和拆箱是所谓的编译器蜜糖(Compiler Sugur)
如Integer i=100;
<=>Integer i=new Integer(100);
但是下面程序是可以通过编译的
Integer i=null;
int j=i;
编译时期是合法的,但运行时就会出错,因为这种写法相当于:
Integer i=null;
int j=i.intValue();
由于i没有参考至任何实体,所以就不可能操作intValue()方法,出现NullPointerException
2.数组元素初始化
数组类型初始值 数组类型初始值
byte 0 float o.of
short 0 double 0.0d
int 0 char \u0000
long 0L boolean false
3.Sring Pool
在Java执行时会维护一个String池,对于一些可以共享的字符串对象,会先在String池中查找是否有相同的String内容(字符相同),如果有直接返回,而不是直接创造一个新的String对象,以减少内存的耗用在程序中如下声明,实际上指向同一个字符串对象:
String str1="flyweight";
String str2="flyweight";
System.out.println(str1==str2);
intern()方法会先检查String池中是否有字符相同的字符串对象,如果有就返回,而不需要创建。
4.取得当前时间
long beginTime=System.currentTimeMillis();
//被测试的语句
long endTime=System.currentTimeMillis();
System.out.println("执行时间:"+(endTime-beginTime));
5.Java的静态方法不允许使用非静态成员
由于静态成员属于类而非对象,所以当调用静态方法时,并不会传入对象的参考,即静态方法中不会有this参考名称。由于没有this名称,所以在Java的静态方法不允许使用非静态成员。
静态区的代码首先执行
static{
//类加载时执行
}
6.编译器处理重载方法、装箱问题和不定长参数时,会依据以下顺序来寻找合适的方法
寻找在还没装箱单做前可以符合参数个数和类型的方法
尝试装箱动作后可以符合参数个数和类型的方法
尝试设有不定长参数并符合的方法
编译器找不到合适的方法,报告编译错误
7.重写方法时要注意的是,可以增大父类中的方法权限,但不可以缩小权限.
8.Object的toString()的方法默认返回类名称和16进制的编码
即getClass().getName()+'@'+Integer.toHexString(hashCode())
在重写toString()方法时,建议重写hashCode()方法
9.匿名内嵌类(annonymous inner class)
public void someMethod(){
finna int x=10;//声明为finnal
Object obj=
new Object(){
public String toString(){
return String.valueOf(x);
}
};
System.out.println(obj);
}
区域辩论x并不是真正被拿来在内嵌类中使用,x会被匿名类复制作为数据成员来使用。由于真正在匿名类中的是x复制品,即使在内嵌类中被修改,也不会影响真正的区域变量x,事实上也通不过编译器的检查。
10.使用正则表达式(Regular Express)
. 符合任一字符
\d 符合0~9任一个数字字符
\D 符合0~9以外的字符
\s 符合\t,\n,\x0b,\f,\r等空格符
\w 符合a~z,A~Z,0~9等字符
\W 符合a~z,A~Z,0~9等之外的字符
字符类范例
[abc] 符合a b c
[^abc] 符合abc之外的字符
[a-zA-Z]符合a~z或是A~Z的字符
[a-d[m-p]] 符合a-d或是m-p的字符=[a-dm-p]
[a-z&&[def]]符合a-z且是d或e或f,结果是d或e或f
[a-z&&[^bc]]符合a-z且不是b或c
[a-z&&[^m-p]]符合a-z且不是m-p
贪婪量词范例(Greedy Quantifies)
X? X一次或没有
X* X零次或多次
X+ X一次或多次
X{n} X出现n次
X{n,} X至少出现n次
X{n,m} X至少n次不超过m次
11.框架:
在Design Patterns Elements of Reusable Object-Oriented Software书中对“框架”做出的解释是:框架是由一组互相合作的类组成,它们为特定类型的软件开发提供了一个可以重复使用的设计。
简单的说,你可以直接使用框架所提供的工具类,并在遵守框架制定的标准下,快速地开发你所需要的软件,并避免软件开发过程中所可能发生的重大错误。
所谓“微架构”,就是搭建应用程序和系统的积木块。与列入目录的那些单独模式相比,这个概念是一种更高层面的抽象,它常常表现为一组相互关联的模式组合,用于解决在应用架构中经常重现的一些共通问题。
我们乐于把“微架构”当作一种由相互关联的模式组成的网络,由此形成一种现成的解决方案,用于解决一个粒度更大的问题,比如子系统的设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值