发个恒生电子的坑爹笔试题,我猜90%的人会答错,不信你试试 我觉得是 123啊,因为静态块先于main方法执行,加载类最先执行,然后是构造块跟构造器不知道解释的对么,LZ?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 System.err.println("3"); 恒生太贱了 三个代码块的执行顺序是先类的静态(static)初始化,再实例初始化(本例中没有),最后执行构造方法public TestCodeSeg()。main方法只是用来输出结果 额。就是1 2 3么。。我特意去百度的System.err.println 看错了。。三个代码块的执行顺序是先类的静态(static)初始化----System.out.println("1");再实例初始化----System.out.println("2");最后执行构造方法public TestCodeSeg()。main方法只是用来输出结果 奇怪了,我用命令窗口,最原始的的编译方法 javac命令编译,然后运行,怎么总是1 2 3 没有别的结果!!奇怪了,我用命令窗口,最原始的的编译方法 javac命令编译,然后运行,怎么总是1 2 3 没有别的结果!! 123.我来说一下。静态是随着类的加载而加载。所以先执行1,这时对象还没有加载。当new对象时,构造函数语句开始初始化,初始化过程是父类构造函数执行,属性进行隐式初始化,构造代码块开始执行,属性开始显式初始化,构造函数的自定义语句执行。于是执行顺序是1,2,3 老有人喜欢拿thj里面的代码来糊弄小白 1和2顺序是不变的,因为它们是静态(类装载时被执行),3是在构造函数里。所以,程序执行顺序是静态部分然后是构造函数。但是输出结果还要收到System.out和System.err的影响。System.out是行缓冲而System.err是不缓冲,所以System.err.println("3")是立即输出。但System.out.println("1")和System.out.println("2")则因为缓冲的原因可能稍晚(但1和2的顺序不变)。具体输出结果1先2后是绝对的,但3在哪里出现跟程序执行时情况有关。如果System.err.println("3")执行时,1和2还没输出,再是则是3先:321如果1已经输出但换行符还没输出则是:132以此类推还有:132等等情况 两种情况 312 12ERR导致输出错误出现312情况,因为已经输出3,所以后面不会再持续之所以出现12,是因为3为无效输出 System.err.println("3");看来笔试一不小心就被阴了 有个疑问:System.err.println()虽然是行缓冲,但是其在每次调用的时候都会自动添加一个回车,相当于flush了缓冲区,应该立即输出才对啊? 26楼:System.err是没有缓冲的,你是说System.out是行缓冲,然后System.out.println()会自动加上换行对吧?关键在换行符还没处理之前是缓冲的,所以有个时间段(因为只有一个字符1或者2,所以很短)。如果在这个时间段System.err.println()被调用了,那么它可能先输出。 = = 恒生不是用delphi的吗... 1 2 3 3的位置不确定。 System.err.println("3"); 改成System.out.print("3") 就是123,静态块先于main方法执行,加载类最先执行,最后进入构造块。 请教一个一个关于引用传递的问题 如何用Struts标签实现多行提交? java是否有操作串并口的API ? 几个关于JBoss和Tomcat的问题,新学JAVA请大虾们详细一些,谢谢了! 各位大师级人物,帮忙看一下我们学校的教学计划!!(某985工程大学) 请问java到底有多强?能做局域网下的文件共享吗?java高手请看,高分给!!! 请教熟悉JGraph类的高手 所谓的J2SE指的是那些部分啊? 真不知道为什么啊,兄弟快来帮帮我啊 关于swing线程的问题 小妹推荐一套java教程 求帮助,很简单的
先类的静态(static)初始化,
再实例初始化(本例中没有),
最后执行构造方法public TestCodeSeg()。main方法只是用来输出结果
2
3
么。。我特意去百度的System.err.println
三个代码块的执行顺序是
先类的静态(static)初始化----System.out.println("1");
再实例初始化----System.out.println("2");
最后执行构造方法public TestCodeSeg()。main方法只是用来输出结果
奇怪了,我用命令窗口,最原始的的编译方法 javac命令编译,然后运行,怎么总是1 2 3 没有别的结果!!
3
2
1
如果1已经输出但换行符还没输出则是:
132
以此类推还有:
1
3
2
等等情况
312 12ERR导致输出错误出现312情况,因为已经输出3,所以后面不会再持续
之所以出现12,是因为3为无效输出
看来笔试一不小心就被阴了
有个疑问:System.err.println()虽然是行缓冲,但是其在每次调用的时候都会自动添加一个回车,相当于flush了缓冲区,应该立即输出才对啊?
System.err是没有缓冲的,你是说System.out是行缓冲,然后System.out.println()会自动加上换行对吧?
关键在换行符还没处理之前是缓冲的,所以有个时间段(因为只有一个字符1或者2,所以很短)。如果在这个时间段System.err.println()被调用了,那么它可能先输出。
System.err.println("3"); 改成System.out.print("3") 就是123,静态块先于main方法执行,加载类最先执行,最后进入构造块。