当前位置: 技术问答>java相关
一道题,没搞懂
来源: 互联网 发布时间:2015-02-23
本文导语: public class Q1 { static void processorB() { System.out.println(" is a boolean Operator."); } static Q1 processorA(){ Q1 q=null; if (("java").startsWith("null")) return q; ...
public class Q1 {
static void processorB() {
System.out.println(" is a boolean Operator.");
}
static Q1 processorA(){
Q1 q=null;
if (("java").startsWith("null"))
return q;
else
return null;
}
static {
System.out.print("Java".startsWith(""));
}
public static void main(String[] args) {
processorA().processorB();
}
}
结果?为什么?
static void processorB() {
System.out.println(" is a boolean Operator.");
}
static Q1 processorA(){
Q1 q=null;
if (("java").startsWith("null"))
return q;
else
return null;
}
static {
System.out.print("Java".startsWith(""));
}
public static void main(String[] args) {
processorA().processorB();
}
}
结果?为什么?
|
结果是 true is a boolean Operator.
首先,在main()里,该类的静态元素(方法、属性)可以不需限制符,直接引用。就是连类名都不用啦。
其次,执行中,首先加载的是类型,虚拟集分配了空间给类型,包括方法指令和静态数据(事实上,对象只分配了独立非静态数据空间)。processorA()可以执行,他返回的是类型Q1当然,它是指向的对象空间是null的,但是,他有与类型的联系。由于processorB();是静态方法,不需要独立的对象空间,也就是她没有去查找对象,就执行了,所以不会抛出Null异常。
首先,在main()里,该类的静态元素(方法、属性)可以不需限制符,直接引用。就是连类名都不用啦。
其次,执行中,首先加载的是类型,虚拟集分配了空间给类型,包括方法指令和静态数据(事实上,对象只分配了独立非静态数据空间)。processorA()可以执行,他返回的是类型Q1当然,它是指向的对象空间是null的,但是,他有与类型的联系。由于processorB();是静态方法,不需要独立的对象空间,也就是她没有去查找对象,就执行了,所以不会抛出Null异常。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。