一些细枝末节的 Java 题 也许你也会被考到呢。。

2020-09-27 21:22:43 +08:00
 Newyorkcity
public class Main {

    public static void main(String[] args) {
        System.out.println(1 + 999 + "s");
        System.out.println("s" + 1 + 999);
        int i = 128;
        byte b = (byte) i;
        System.out.println(b);
    }

    static class ConcreteClass {

    }

    static abstract class AbstractClass extends ConcreteClass {

    }
}

程序能否编译通过并运行? 去掉抽象类继承具体类这个骚操作后能编译并运行吗? 运行输出的结果会是啥?

1978 次点击
所在节点    程序员
7 条回复
zhanglintc
2020-09-27 21:45:03 +08:00
试了下,不去掉也可以运行来着。
mxalbert1996
2020-09-27 22:17:44 +08:00
抽象类继承具体类怎么就成骚操作了?这是很常见的设计吧。
qwerthhusn
2020-09-27 22:23:35 +08:00
1000s
s1999
0

能运行
能运行

没问题,我都懒得打开编辑器或者 IDE 去验证
Newyorkcity
2020-09-27 22:28:36 +08:00
@qwerthhusn 最后一个错了 我这里运行出来是 -128
qwerthhusn
2020-09-27 23:49:18 +08:00
@Newyorkcity 额,翻车了,现了原形
应该是 00000000 00000000 00000000 10000000
我想成了 00000000 00000000 00000001 00000000
palmers
2020-09-28 09:20:45 +08:00
int i = 128;
byte b = (byte) i;
这段挺好 可以引发计算机数值表示 机器数 真值 原码 反码 补码的原理
Newyorkcity
2020-09-28 09:39:27 +08:00
@palmers 我在做的时候有想过机器是大小端会不会影响结果

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/711064

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX