java/android 做题中整理的碎片小贴士(11)
1、java中length属性用于数组,length()方法用于String,size()针对泛型集合。
2、①finally语句中的return会将try中的覆盖掉,并且会使try中对数据的操作无效;②如果finally中没有return,也没有改变返回值,则会先执行完finally语句,再回过头来执行try中的return语句;③如果finally中没有return,并且修改了返回值,类似于值传递和引用传递的关系来起作用。
3、输出顺序:构造块 构造块 静态块 构造块 (这里静态域首先执行)
public class B{ public static B t1 = new B(); public static B t2 = new B(); { System.out.println("构造块"); } static { System.out.println("静态块"); } public static void main(String[] args){ B t = new B(); } }
4、Java语言中的非静态方法属于对象(而非类)中的成员(member)。
5、运行正常,能输出。
public class TestClass {
private static void testMethod(){
System.out.println("testMethod");
}
public static void main(String[] args) {
((TestClass)null).testMethod();
}
}
null可以被强制类型转换成任意类型(不是任意类型对象),于是可以通过它来执行静态方法。
6、JVM根据两个条件判断两个类是否相同:①类的全称②类的加载器。
7、对外部类来说只有两种访问修饰,public 和默认(default),因为外部类放在包中,只有包可见和不可见两种。而内部类才是可以用private,protected。
8、
public void first( ){ Value v=new Value( ); v.i=25; second(v); } public void second(Value v){ v.i = 20; Value val = new Value( ); v = val; }
v = val 只改变second()中的临时变量的指向,不影响外部的v。而v.i= 20则修改了指向的对象的值,对外部v造成了影响。
9、枚举类enum是一个类,因而不是一个原始数据类型。