怎么理解这句话 如果没有在定义处初始化,那么除非发生了不可避免的运行期异常,否则将不能保证信息在发送给对象引用之前已经被初始化。这是java编程思想了的一句话,怎么理解? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该指的是延迟绑定。是指Java直到运行时才检查类、域、方法的名称,而不象C/C++的编译器那样在编译期间就清除了类、域、方法的名称,代之以偏移量数值——这是Java二进制兼容得以发挥作用的要害。 由于采用了延迟绑定技术,方法、域、类的名称直到运行时才解析,意味着只要域、方法等的名称(以及类型)一样,类的主体可以任意替换——当然,这是一种简化的说法,还有其他一些规则制约Java类的二进制兼容性,例如访问属性(private、public等)以及是否为abstract(假如一个方法是抽象的,那么它肯定是不可直接调用的)等,但延迟绑定机制无疑是二进制兼容的核心所在。 只有把握了二进制兼容的规则,才能在改写类的时候保证其他类不受到影响。 定义A (不初始化,有些类型 编译器会赋初始值)[赋值A] (有可能)引用A 就推出定义的时候不初始化A,在引用A的时候就有可能为null 这有什么难理解的? private String a;public void run1(){ System.out.println(a.length());}public void run(int index){ if(index==1){ a="abc"; }}如果运行run()传过来的index不等于一,那么运行run1()的时候会怎么样呢? 意思就是,比如object o;o.equals();这样就会报错,而object o=new object();o.equals();这样就不出错,如果一个引用没有new的话,你再去使用它,就是错误的,明白了? 我在配置jdk运行javac一直提示找不到或无法加载主类 关于unicode编码问题 各位高手帮帮忙 请问java数据转移的问题: 请教一个模糊的问题 JAVA编程一般用什么工具?? 菜鸟求助 在JMenuItem中再加菜单用啥方法 怎样捕捉ctrl+key和mouse右键事件? 求教JAVA高手:如何父对话框中得到子对话框中的内容 关于正则表达式的一个问题。 请高手帮忙事件传值怎么传?
由于采用了延迟绑定技术,方法、域、类的名称直到运行时才解析,意味着只要域、方法等的名称(以及类型)一样,类的主体可以任意替换——当然,这是一种简化的说法,还有其他一些规则制约Java类的二进制兼容性,例如访问属性(private、public等)以及是否为abstract(假如一个方法是抽象的,那么它肯定是不可直接调用的)等,但延迟绑定机制无疑是二进制兼容的核心所在。
只有把握了二进制兼容的规则,才能在改写类的时候保证其他类不受到影响。
[赋值A] (有可能)
引用A 就推出定义的时候不初始化A,在引用A的时候就有可能为null 这有什么难理解的?
System.out.println(a.length());
}public void run(int index){
if(index==1){
a="abc";
}
}如果运行run()传过来的index不等于一,那么运行run1()的时候会怎么样呢?
这样就会报错,而object o=new object();o.equals();
这样就不出错,如果一个引用没有new的话,你再去使用它,就是错误的,明白了?