1、
public class foo {
private static void testMethod(){
System.out.println("testMethod");
}
public static void main(String[] args) {
((foo)null).testMethod();
}
}
这个是可以正常运行的,如果把static去掉就会空指针异常
1: null可以转化为任何类型
2: private 只是权限声明
2:static静态关键字 仅仅意味着可以不用实例化这个类
通过类名.方法名就可以访问
当然也可以通过实例化类的对象后 通过对象.方法名
但是不能通过this关键字,因为this是指本实例中的方法被static声明的方法属于类的方法
<html>
<body>
<script>
var name="abc";
function foo(){
alert(name);
var name="123";
alert(name);
}
function foo1(){
alert(name);
foo();
alert(name);
}
foo1();
</script>
</body>
</html>
输出:abc、undefined、123、abc
3、
public class A {
static String str="goodluck";
static char ch[]={'a','b','c'};
public static void main(String[] args) {
A ex= new A();
ex.change(str, ch);
System.out.print("str:"+str+" ch:");
for(char r:ch){
System.out.print(r);
}
}
public void change(String s,char c[]){
s="test OK";
c[0]='m';
}
}
输出:str:goodluck ch:mbc
ex.change(ex.str,ex.ch);
这句话调用之后,str这个字符串,传入之后,接收的时候,实际上重新分配一个地址,就是
change中的str,在这个方法中,只修改了方法中的局部变量。
而ch[]这个数组传递的是引用
他们指的都是一个地址,所以修改的时候,修改的是全局的那个。
4、String转换成int:
public class foo {
public static void main(String[] args) {
String str="123";
int i = Integer.parseInt(str);
int j= Integer.valueOf(str).intValue();
System.out.println(i+" "+j);
}
}
输出:123 123
str中可能包含非数字字符,转换时使用try,catch捕获异常。