当前位置: 首页 > 知识库问答 >
问题:

怪码输出

钱和安
2023-03-14

我偶然发现了一些非常奇怪的代码,我很惊讶竟然没有导致错误

public class WeirdCode {

    public static int fooField = 42;

    public WeirdCode getFoo(){
        return null; 
    } 
    public static void main(String args[]) {
        WeirdCode foo = new WeirdCode();
        System.out.println(foo.getFoo().fooField); 
    }
}

令人惊讶的是,它打印出42!有人能解释吗?

共有1个答案

贲高寒
2023-03-14

对类的静态成员的引用在编译时解析。编译器不关心表达式的值是什么,只关心它的类型,因此((WeirdCode)null).foofield就像其他任何东西一样解析为WeirdCode.foofield

 类似资料:
  • 问题内容: 每当我在控制台中输入错误或出错时,都会出现以下消息: 我同时使用Anaconda安装了Python 2.7和3.3。我想知道这是否正常还是python 2.7和3.3之间存在冲突 问题答案: 假设您使用的是ubuntu,这是相关的错误报告https://bugs.launchpad.net/ubuntu/+source/python3.3/+bug/1192890 您需要修补/etc/

  • 问题内容: 我正在使用jmh 使用maven并按照http://openjdk.java.net/projects/code- tools中 建议的命令行方法对一个简单的应用程序进行基准测试。成功设置并建立基准后,我可以使用avgt模式获得以下基准结果: 我不确定如何解释此输出,但我确定某些地方出了错…?知道什么或如何调试吗? 问题答案: JMH输出使用扩展的Unicode字符。特别是, ?10

  • 因此,在迁移到其他主机,导出和导入数据库,修复链接后,我得到了一些奇怪的php输出,该输出在以前的主机上运行良好。 php连接: php数据库调用: html格式的输出: '; } echo“”;echo“”;如果($row['priceMax']){echo'';}elseif($row['price']){echo'';}$firstRow=0;}}? 有人能解释这里到底出了什么问题吗?我不知

  • 我有以下C代码: 当我为两个scanf输入正常整数和双精度值时,它运行良好。但是我想让它更健壮。如果我为int scanf输入一个十进制值,代码将直接跳到下一个printf,并跳过scanf以获得double。它将我在int中输入的小数部分打印为双精度值。 eg: hello world,我是一个返回值为10的函数 现在输入一个值:44.67 所以您输入了值:44 现在输入一个双精度值:直到4的双

  • 问题内容: 所有! 我在LinkedBlockingQueue中发现了奇怪的代码: 谁能解释为什么我们需要局部变量h?它对GC有什么帮助? 问题答案: 为了更好地了解发生了什么,让我们看看执行代码后列表的样子。首先考虑一个初始列表: 然后指向和指向: 然后指向和指向: 现在,实际上我们知道只有一个指向第一个元素的活动引用,它本身就是(),并且我们还知道GC收集的对象不再具有活动引用,所以当方法结束

  • 问题内容: 我使用jsoup从不同页面的html源代码中提取了一些信息。它们大多数是UTF-8编码的。其中之一是使用ISO-8859-1编码的,这会导致一个奇怪的错误(在我看来)。 包含错误的页面是:http : //www.gudi.ch/armbanduhr- metall- wasserdicht-1280x960-megapixels-p-560.html 我用以下代码阅读了所需的Stri