Java编程思想
介绍一些Java语言的细节。
this
this关键字只能在方法内部使用,表示对“调用这个方法的对象”的引用。如果在同一个方法内部调用同一个类的另一个方法,不必使用this。返回对当前对象的引用有的时候是一种有效的方法。经常在构造器中使用this。
static
static方法就是没有this的方法。在static方法的内部不能调用非静态方法,反过来是可以的。通过类本身调用static方法,实际上正是static方法的主要用途。
static确实具有全局语义。如果代码中出现大量的static方法,就该重新考虑自己的设计了。
无论创建多少个对象,静态数据都只占用一份内存区域。static关键字不能应用于局部变量,因此它只能作用于域(类的成员变量)。
构造器是静态方法。
初始化
Java尽量保证,所有变量在使用前都能得到恰当的初始化。
对于方法的局部变量,Java以编译时错误的形式来贯彻这种保证。
对于类的数据成员则略有不同。如果类的数据成员是基本类型,则会被赋予一个初始值。
- boolean -> false
- char -> 0(显示为空白)
- byte/short/int/long -> 0
- float/double -> 0.0
- 对象引用 -> null
Set集合
Set 转 String[]:
String[] array = set.toArray(new String[0]);
但是这通常不是好的,摘自stackoverflow:
When you pass toArray() an array of too small size, the toArray() method has to construct a new array of the right size using reflection. This has significantly worse performance than passing in an array of at least the size of the collection itself. Therefore [0] should be replaced with [myset.size()] as in the accepted answer.
String[] array = set.toArray(new String[set.size()]);