仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1643|回复: 19
打印 上一主题 下一主题

[学习教程] 发布一篇主范例的过载

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:36:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-2 10:58

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表