2008-03-24

java解惑 - 漂亮的火花

关键字: 解惑
下面的程序用一个方法对字符进行了分类。这个程序会打印出什么呢? public class Classifier {     public static void main(String[] args) {         System.out.println(             classify('n') + classify('+') + classify('2')); &nbs ...
下面的程序从一个字节序列创建了一个字符串,然后迭代遍历字符串中的字符,并将它们作为数字打印。请描述一下程序打印出来的数字序列: public class StringCheese { public static void main(String[] args) { byte bytes[] = new byte[256]; for (int i = 0; i < 256; i++) bytes[i] = (byte)i; String str = new String(bytes); ...
2008-03-24

java解惑 - Hello world(续)

关键字: 解惑
面的是一个合法的Java程序吗?如果是,它会打印出什么呢? \u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020 \u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079 \u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020 \u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063 \u0076\u006f\u0069\u0 ...
2008-03-24

java解惑 - Hello world

关键字: 解惑
下面的程序是对一个老生常谈的例子做出了稍许的变化之后的版本。那么,它会打印出什么呢? /** * Generated by the IBM IDL-to-Java compiler, version 1.0 * from F:\TestRoot\apps\a1\units\include\PolicyHome.idl * Wednesday, June 17, 1998 6:44:40 o’clock AM GMT+00:00 */ public class Test{ public static void main(String[] args){ ...
2008-03-24

java解惑 - 转义字符

关键字: 解惑
下面的程序使用了两个Unicode的转义字符,它们是用其十六进制代码来表示Unicode字符。那么,这个程序会打印什么呢? public class EscapeRout{ public static void main(String[] args){ // \u0022 是双引号的Unicode转义字符 System.out.println("a\u0022.length() +\u0022b".length()); } } 对该程序的一种很肤浅的分析会认为它应该打印出26,因为在由两个双引号"a\u0022.length() ...
2008-03-24

java解惑 - ABC

关键字: 解惑
下面的程序将打印什么呢? public class ABC{ public static void main(String[] args){ String letters = "ABC"; char[] numbers = {'1', '2', '3'}; System.out.println(letters + " easy as " + numbers); } } 可能大家希望这个程序打印出ABC easy as 123。遗憾的是,它没有。如果你运行它,就会发现它打印的是诸如ABC easy as [C@16f ...
下面的程序将打印出什么呢? public class LastLaugh{ public static void main(String[] args){ System.out.print("H"+"a"); System.out.print('H'+'a'); } } 你可能会认为这个程序将打印HaHa。该程序看起来好像是用两种方式连接了H和a,但是你所见为虚。如果你运行这个程序,就会发现它打印的是Ha169。那么,为什么它会产生这样的行为呢? 正如我们所期望的,第一个对System.out.print的调用打印的是Ha:它的 ...
2008-03-24

java解惑 - 半斤八两(二)

关键字: 解惑
与上一个例子相反,如果我们给出的关于变量x和i的声明是如下的合法语句: x = x + i; 但是,它并不是: x += i; 乍一看,这个谜题可能看起来与前面一个谜题相同。但是请放心,它们并不一样。这两个谜题在哪一条语句必是合法的,以及哪一条语句必是不合法的方面,正好相反。 就像前面的谜题一样,这个谜题也依赖于有关复合赋值操作符的规范中的细节。二者的相似之处就此打住。基于前面的谜题,你可能会想:符合赋值操作符比简单赋值操作符的限制要少一些。在一般情况下,这是对的,但是有这么一个领域,在其中简单赋值操作符会显得更宽松一些。 复合赋值操作符要求两个操作数都是原始类型的,例如int,或包 ...
我们给出一个对变量x和i的声明即可,它肯定是一个合法的语句: x += i; 但是,它并不是: x = x + i; 许多程序员都会认为该迷题中的第一个表达式(x += i)只是第二个表达式(x = x + i)的简写方式。但是这并不十分准确。这两个表达式都被称为赋值表达式。第二条语句使用的是简单赋值操作符(=),而第一条语句使用的是复合赋值操作符。(复合赋值操作符包括 +=、-=、*=、/=、%=、<<=、>>=、>>>=、&=、^=和|=)Java语言规范中讲到,复合赋值 E1 op= E2等价于简单赋值E1 = (T)((E1)op(E2)),其中T是E1的类型,除非 ...
这个谜题将测试你对条件操作符的掌握程度,这个操作符有一个更广为人知的名字:问号冒号操作符。下面的程序将会打印出什么呢? public class DosEquis{ public static void main(String[] args){ char x = 'X'; int i = 0; System.out.println(true ? x : 0); System.out.println(false ? i : x); } } 这个程序由两个变量声明和两个print语句构成。第一个print语句计算条件表达式(true ? x : 0)并打印 ...
2008-03-24

java解惑 - 奇数性

关键字: 解惑
下面的方法意图确定它那唯一的参数是否是一个奇数。这个方法能够正确运转吗? public static boolean isOdd(int i){ return i % 2 == 1; } 奇数可以被定义为被2整除余数为1的整数。表达式 i % 2 计算的是 i 整除 2 时所产生的余数,因此看起来这个程序应该能够正确运转。遗憾的是,它不能;它在四分之一的时间里返回的都是错误的答案。 为什么是四分之一?因为在所有的 int 数值中,有一半都是负数,而 isOdd 方法对于对所有负奇数的判断都会失败。在任何负整数上调用该方法都回返回 false ,不管该整数是偶数还是奇数。 这是 Ja ...
#include<stdio.h> #define BITS 500 /*不小于结果的位数*/ long R,a,y,_[(BITS+11)/6]={!!BITS,!!BITS},_1=!!BITS;int main(int __){ return~-__?y?__>a?printf("%06ld",__[_-a]),main(~-__):0:(_1<=*_||__++<a&&(_1=!(R=0)) ?R+=_[_1]*__,_[_1]=R%1000000l,R/=1000000l,_1++==*_&&R&&++*_:(__=*_+a, y+=printf("%ld ...
2008-03-15

变态的C程序(-)

关键字: c 编程 牛
#include <stdio.h> main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_, main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13? main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?main(_,t, "@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n ...
#include #include long a=10000, b, c=2800, d, e, f[2801], g; main() { for(;b-c;) f[b++]=a/5; for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a) for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b); } 计算结果: 314159265358979323846264338327950288419716939937510582 ...
因为你是男人 当母亲带着疲惫的微笑将你捧给世界,你已经是一座高山,是一片大海了。性别交给你一副重担,指给你一条路,对你说:走吧,你这男子汉!于是你便要长一副铮铮铁骨,把脚下坚实的土地踏得咚咚作响,去完成你的使命、你的光荣、你的答卷。 当洪水涌来的时候,你要退在最后;当大火燃烧的时候,你却要扑在前边。因为你是男人,你就应该有一副侠肝义胆! 当朋友成功的时候,你要大碗喝酒;与女友分手时,要真诚地说声道歉。因为你是男人,你就应该如此气壮心宽。 因为你是男人,所以,对女儿你应是一棵结满故事的大树,对妻子你应是一片金色的沙滩,对 ...
因为你是男人 崔晓柏         当母亲带着疲惫的微笑将你捧给世界,你已经是一座高山,是一片大海了。性别交给你一副重担,指给你一条路,对你说:走吧,你这男子汉!于是你便要长一副铮铮铁骨,把脚下坚实的土地踏得咚咚作响,去完成你的使命、你的光荣、你的答卷。         当洪水涌来的时候,你要退在最后;当大火燃烧的时候,你却要扑在前边 ...
男,就职于一家IT媒体。 女,就职于一家IT公司。 女:亲爱的,最近我发现你情绪低落,反应速度大大降低,是不是头脑里碎片太多,要不要我帮你整理一下? 男:我也说不清楚,我觉得越来越与同事不兼容了。 女:也许这与你和他们配置有关系,你们办公室好像就你一个是从外地毕业分到北京的。 男:这不是主要原因。有时,他们谈得正热闹时,我一插话就死机。 女:难道你谈了什么非法话题? 男:不是我非法,他们尽谈论一些行业应用话题,什么汽车啦,房子啦,三陪啦。我觉得他们的话题版本大低,应该升级。 女:你应该学会向下兼容。 男:这是一个迅 ...
导读:《Computerworld》网站10月17日评出了IT史上10大最尴尬瞬间,其中包括比尔·盖茨遭遇Windows 98蓝屏死机、索尼BMG版权保护软件引起消费者反感等。下面就是这10大尴尬瞬间的简介:   1、比尔·盖茨遭遇Windows 98蓝屏死机   与Windows 3.1相比,Windows 95提供了更为出色的用户界面,但其功能及稳定性还有待完善。微软对此表示,Windows 98的稳定性将大幅提高。然而Windows 98的蓝屏死机现象仍然严重。最令人尴尬的是,在1998年举办的COMDEX/Spring主题演讲中,盖茨在演示Windows 98亮点之一的USB功 ...
一日,去逛电脑城,突然觉得一阵腹痛。不好,要如厕。   急匆匆来到WC前,抬头只见门口上方挂一电子牌:上写   “最新WIN2004 SERVER WC“   不禁赞叹:果然是IT,高科技!   好急,快进去,怎么门推不开?抬头一看,电子板上显示:   “用户名不存在或密码错误,请找管理员”   给看门老头交了两毛钱,拿了个密码,急忙入内,冲向马桶   可是马桶盖怎么也打不开,我实在忍不住了,用力一拉,墙上弹出一块牌子:   “!系统提示:您没有这个马桶的访问权限”   **!好在我知道一个超级用户密码,这时起了作用,在控 ...
程序员是怎么喝酒的 大家喝的是啤酒。这时你入座了。 你给自己倒了杯可乐,这叫低配置。 你给自已倒了杯啤酒,这叫标准配置。 你给自己倒了杯茶水,这茶的颜色还跟啤酒一样,这叫木马。 你给自己倒了杯可乐,还滴了几滴醋,不仅颜色跟啤酒一样,而且不冒热气还有泡泡,这叫超级木马。 你的同事给你倒了杯白酒,这叫推荐配置。 人到齐了,酒席开始了。 你先一个人喝了一小口,这叫单元测试。 你跟旁边的人说哥们咱们随意,这叫交叉测试。 但是他说不行,这杯要干了,这叫压力测试。 于是你说那就大家一起来吧,这叫内部测试。 这个时候Boss向全场举杯了,这叫公开测试。 菜过三巡,你就不跟他们客气 ...
2008-03-11

四个程序员的一天

关键字: 编程 java c 函数
你,一个DotNet程序员,刚刚加入一个新项目组。除了你之外,其他的成员包括:Ceer,一直从事C项目的程序员,他刚刚转入C#不到一个月; Jally,整天抱着本Design Pattern(没错,就是GoF的那本)在啃的前Java程序员;以及Semon,你对他完全不了解,只是听PM介绍说他是搞Scheme的(传说中的第二古老的语言LISP的方言之一)。不过你也没在意,毕竟计算机这玩意,老东西是不吃香的。   周一,刚打开电脑,老板就跑到你们组的办公座面前:“好吧,伙计们,现在有个function需要你们来搞定。具体是这样的:用户输入2个数,并输入一个操作符。你根据输入的情况来得出 ...
2008-03-11

程序员和黑客的区别

关键字: 程序员 黑客 编程 c++
题目:   设有如下C++类 class A { int value; public: A(int n = 0) : value(n) {} int GetValue() { return value; } };    请使用某种方式来在类的外部改变私有成员A::value的值。 程序员的可能做法: class A { int value; public: A(int n = 0) : value(n) {} int GetValue() { ...
纪念关系数据库之父 大家都说,Edgar F. Codd(通常被称为Ted)是一个才华横溢的人。他的成就之一,是在二十世纪七十年代初开发了一个关系型数据管理模型--存储和操作大量业务数据的一个复杂、完整的理论。根据Codd的设计构建的关系数据库成为了当今企业的基础;银行依赖关系数据库来跟踪资金流动;零售商使用它们来监控库存水平;人力资源部门使用它们来管理员工账户;图书馆、医院和政府机构在其中存储数百万条记录;事实上,世界上几乎所有的企业都在使用某种容量的关系数据库。自从Codd公布其理论以来的30年中,关系数据库已经成为一个年收入近130亿美元的行业。 早期生活 Ted Codd于1 ...
开始启动《程序人生》系列操作系统 。。。。。。。。。。。 启动成功正在启动《程序人生1996》操作系统 。。。。。。。。。。。启动成功启动《程序员 1.0》 。。。。。。。。。。。。。。。。。。  启动成功《程序员1.0》正在运行 。。。。。。。。。。。。。。。。。运行良好《程序员》正在加载《女友妤.Dll》。。。。。 。。。。。。。加载成功----------------------------------------------------------------          《程序员1.0》输出结果          --                         ...
除了程序设计语言之外,沃思在其他方面也有许多创造。为了定义和描述语言,沃思对著名的“巴科斯-诺尔范式”BNF进行了扩充,成为EBNF(Extended BNF)。我们目前所看到的许多语言的 BNF实际上是EBNF,不过人们往往忽略掉这个E字。和BNF一起出现的,还常常有一些看上去像铁路图那样的图形,称作“语法图”(syntax chart或 syntax diagram)或“铁路图”(railroad diagram),这也是由沃思所设计与发明的,这种图形标记法的描述能力等价于BNF,但当然更易于阅读与理解,更加直观。在语法图中,用圆圈表示终结符,用方框表示非终结符,用有向弧表示走向,图上一条 ...
凡是学过一点计算机知识的人大概都知道“数据结构十算法= 程序”这一著名公式。提出这一公式并以此作为其一本专著的书名的瑞士计算机科学家尼克劳斯·沃思(Niklaus Wirth)由于发明了多种影响深远的程序设计语言,并提出结构化程序设计这一革命性概念而获得了1984年的图灵奖。他是至今惟一获此殊荣的瑞士学者。   沃思1934年2月15日生于瑞士北部离苏黎世不远的温特图尔(Winterthur),其父瓦尔特是一位地理学教授。沃思小时就喜欢动手动脑,组装飞机模型是他的最大爱好。中学毕业以后,沃思进入在欧洲甚至全世界都很有名气的苏黎世工学院(ETH),1958年取得学士学位。之后他远渡大西洋到加 ...
40年前,一个寒冷的冬天,在加拿大一个村庄里,Gosling家的第一个男孩哇哇落地了。家人给他起了名字,叫James。谁也没有想到的是,长大之后,他成为了一个改变计算机语言的天才。   James Gosling从小就喜欢技术,爱鼓捣东西。12岁的时候,他用报废的电话机和电视机中的部件做了一台电子游戏机。附近农民的康拜因(联合收割机)出了问题也常常找他修理。14岁的时候,中学组织到附近大学参观,他记住了大学计算中心的门锁密码,从此开始偷偷地溜进计算中心,学习计算机编程。一年后,大学的天文系招他当了一名临时编程员,编写计算机程序来分析卫星天文数据。   80年代初,James Gosli ...
Anders Hejlsberg,丹麦人,曾在丹麦科技大学学习工程学。Anders Hejlsberg第一次登上软件界历史舞台是在80年代早期,因为他为MS-DOS和CP/M设计了一个Pascal编译器。当时,还是一个小公司的Borland很快雇用了他,并买下了他的编译器,改称Turbo Pascal。在Borland,Hejlsberg继续开发Turbo Pascal,并最终带领他的小组设计了Turbo Pascal的替代品、开发工具史上的奇迹:Delphi语言。   1996年,Anders Hejlsberg在Delphi3发布前离开Borland去了MS。   在此之前,MS ...
在一家又一家注定要倒闭的dot-com公司工作过之后,一位名叫Bram Cohen的年轻程序员最终厌倦了这种失败的生活。   “最终我认为我想做一些人们会实际用到的、有用的并且有趣的项目。”他回忆到。   3年后,28岁的Cohen成为了下一波互联网文件共享风潮的掌门人。如果说Napster是文件交换的第一浪,像Kazaa这样的文件交换网络则代表了第二浪。那么,由Cohen开发的BitTorrent将会引领文件交换的第三浪——目前BitTorrent实际的用户难以估量,但是BitTorrent这个软件至少被下载了超过1000万次。   在早 ...
1.公元1998年在我讀高二那年,那还是我用Windows 98的时候有次我系统崩溃了, 因为我那时还是个电脑白痴,我同学帮我介绍了一个电脑高手来帮我修电脑。 他看了一下电脑,问我有没有Windows 98 的光盘?,我说没有。 他想了一下,叫我把家里电话拿给他,我心里想说修电脑要电话干什么? 但人家是电脑高手,我也不好意思说什么,就把电话拔下来给他了。 他把 电话线空着的一头接在主机版的一个插孔内 ,然后进入了 DOS , 然后就开始在电话上不停的按着键,他按键的速度非常快,但是他都只按电话的0,1两个键。 我搞不懂这有什么用?但也不敢问,看了半个多小时,他还是不停的按这两个键, ...
justjavac
搜索本博客
存档
最新评论