thinking in java 笔记

  1. 导出类构造器中最好只用基类的final或者private方法

  2. 策略:将不变的方法封装至类为策略,将对象作为参数传入main中某方法中

  3. 适配器:将不符合接口的类,封装在接口下

  4. 要创建不带任何方法定义以及成员变量的基类;接口,而不用抽象类

  5. 工厂

  6. 匿名內部类有参数的构造函数:

new Class(x){…}

  1. 匿名内部类可用其所在的作用域内的变量,且必为static变量

void func(final int a){

  new Class{

        i = a;

  }

}

  1. 匿名內部类调用构造器(实质是实例的初始化):

new Class(x){

{ ... }

}

  1. Collections.addAll(collection, elem1, elem2, …);

  2. list.addAll(list/ index, list);

  3. 直接修改Arrays.asList( T[ ] )传回的list会改变底层的数组,建议再装进一个容器里:

new Collection(Arrays.asList( T[ ] ));

Exception:

  1. 导出类异常是基类异常的子集

  2. 构造器中如果有需要清理的对象,比如要进行file.close()

此时需要嵌套的 try catch :

try
{
	// 需要清理的对象 obj
	try
	{
		// 其他操作
	}
	catch (Exception e)
	{
		obj.dispose();
	}
}
catch (Exception e)
{
	// 不需要再写dispose()
}
  1. 派出类构造器不能捕获基类构造器的异常
  2. 可以把导出型MyException放在try catch中优先的catch中,用来屏蔽这类Exception,方便对其做特殊处理
    因为都是try都是优先找最近的catch模块
  3. 可以通过把异常包装成RunTimeException来暂时搁置这个异常(当然会在运行时的main中自动捕捉),方便在不知道怎么处理这个异常的时候,率先通过编译;后来需要处理的时候就捉住这个RunTimeException e并e.getCause();

String

  1. String的每个操作都要重开一片内存,所以String本身是不可更改的;同时.clone()的时候就不需要考虑深复制问题
  2. 如果循环中需要str1 + str2,建议用StringBuilder,效率较高
  3. String.format() 用来排版比较方便,操作有点像c语言的printf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值