发布一篇主范例的过载
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。主(数据)范例能从一个“较小”的范例主动变化成一个“较年夜”的范例。触及过载成绩时,这会略微形成一些凌乱。上面这个例子展现了将主范例传送给过载的办法时产生的情形:
//:PrimitiveOverloading.java
//Promotionofprimitivesandoverloading
publicclassPrimitiveOverloading{
//booleancantbeautomaticallyconverted
staticvoidprt(Strings){
System.out.println(s);
}
voidf1(charx){prt("f1(char)");}
voidf1(bytex){prt("f1(byte)");}
voidf1(shortx){prt("f1(short)");}
voidf1(intx){prt("f1(int)");}
voidf1(longx){prt("f1(long)");}
voidf1(floatx){prt("f1(float)");}
voidf1(doublex){prt("f1(double)");}
voidf2(bytex){prt("f2(byte)");}
voidf2(shortx){prt("f2(short)");}
voidf2(intx){prt("f2(int)");}
voidf2(longx){prt("f2(long)");}
voidf2(floatx){prt("f2(float)");}
voidf2(doublex){prt("f2(double)");}
voidf3(shortx){prt("f3(short)");}
voidf3(intx){prt("f3(int)");}
voidf3(longx){prt("f3(long)");}
voidf3(floatx){prt("f3(float)");}
voidf3(doublex){prt("f3(double)");}
voidf4(intx){prt("f4(int)");}
voidf4(longx){prt("f4(long)");}
voidf4(floatx){prt("f4(float)");}
voidf4(doublex){prt("f4(double)");}
voidf5(longx){prt("f5(long)");}
voidf5(floatx){prt("f5(float)");}
voidf5(doublex){prt("f5(double)");}
voidf6(floatx){prt("f6(float)");}
voidf6(doublex){prt("f6(double)");}
voidf7(doublex){prt("f7(double)");}
voidtestConstVal(){
prt("Testingwith5");
f1(5);f2(5);f3(5);f4(5);f5(5);f6(5);f7(5);
}
voidtestChar(){
charx=x;
prt("charargument:");
f1(x);f2(x);f3(x);f4(x);f5(x);f6(x);f7(x);
}
voidtestByte(){
bytex=0;
prt("byteargument:");
f1(x);f2(x);f3(x);f4(x);f5(x);f6(x);f7(x);
}
voidtestShort(){
shortx=0;
prt("shortargument:");
f1(x);f2(x);f3(x);f4(x);f5(x);f6(x);f7(x);
}
voidtestInt(){
intx=0;
prt("intargument:");
f1(x);f2(x);f3(x);f4(x);f5(x);f6(x);f7(x);
}
voidtestLong(){
longx=0;
prt("longargument:");
f1(x);f2(x);f3(x);f4(x);f5(x);f6(x);f7(x);
}
voidtestFloat(){
floatx=0;
prt("floatargument:");
f1(x);f2(x);f3(x);f4(x);f5(x);f6(x);f7(x);
}
voidtestDouble(){
doublex=0;
prt("doubleargument:");
f1(x);f2(x);f3(x);f4(x);f5(x);f6(x);f7(x);
}
publicstaticvoidmain(String[]args){
PrimitiveOverloadingp=
newPrimitiveOverloading();
p.testConstVal();
p.testChar();
p.testByte();
p.testShort();
p.testInt();
p.testLong();
p.testFloat();
p.testDouble();
}
}///:~
若察看这个程序的输入,就会发明常数值5被看成一个int值处置。以是倘使可使用一个过载的办法,就可以猎取它利用的int值。在其他一切情形下,若我们的数据范例“小于”办法中利用的自变量,就会对那种数据范例举行“转型”处置。char取得的效果稍有些分歧,这是因为假期它没有发明一个正确的char婚配,就会转型为int。
若我们的自变量“年夜于”过载办法希冀的自变量,这时候又会呈现甚么情形呢?对前述程序的一个修正展现出了谜底:
//:Demotion.java
//Demotionofprimitivesandoverloading
publicclassDemotion{
staticvoidprt(Strings){
System.out.println(s);
}
voidf1(charx){prt("f1(char)");}
voidf1(bytex){prt("f1(byte)");}
voidf1(shortx){prt("f1(short)");}
voidf1(intx){prt("f1(int)");}
voidf1(longx){prt("f1(long)");}
voidf1(floatx){prt("f1(float)");}
voidf1(doublex){prt("f1(double)");}
voidf2(charx){prt("f2(char)");}
voidf2(bytex){prt("f2(byte)");}
voidf2(shortx){prt("f2(short)");}
voidf2(intx){prt("f2(int)");}
voidf2(longx){prt("f2(long)");}
voidf2(floatx){prt("f2(float)");}
voidf3(charx){prt("f3(char)");}
voidf3(bytex){prt("f3(byte)");}
voidf3(shortx){prt("f3(short)");}
voidf3(intx){prt("f3(int)");}
voidf3(longx){prt("f3(long)");}
voidf4(charx){prt("f4(char)");}
voidf4(bytex){prt("f4(byte)");}
voidf4(shortx){prt("f4(short)");}
voidf4(intx){prt("f4(int)");}
voidf5(charx){prt("f5(char)");}
voidf5(bytex){prt("f5(byte)");}
voidf5(shortx){prt("f5(short)");}
voidf6(charx){prt("f6(char)");}
voidf6(bytex){prt("f6(byte)");}
voidf7(charx){prt("f7(char)");}
voidtestDouble(){
doublex=0;
prt("doubleargument:");
f1(x);f2((float)x);f3((long)x);f4((int)x);
f5((short)x);f6((byte)x);f7((char)x);
}
publicstaticvoidmain(String[]args){
Demotionp=newDemotion();
p.testDouble();
}
}///:~在这里,办法接纳了容量更小、局限更窄的主范例值。若我们的自变量局限比它宽,就必需用括号中的范例名将其转为得当的范例。假如不如许做,编译器会呈报堕落。
人人可注重到这是一种“减少转换”。也就是说,在外型或转型过程当中大概丧失一些信息。这恰是编译器强制我们明白界说的缘故原由——我们需明白表达想要转型的希望。
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的), 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 是一种语言,用以产生「小应用程序(Applet(s)) 是一种使用者不需花费很多时间学习的语言 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
页:
[1]