仓酷云

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

[学习教程] 来看java的外型运算符(Cast)

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:36:59 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

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

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

x
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊
“外型”(Cast)的感化是“与一个模子婚配”。在得当的时分,Java会将一种数据范例主动转换成另外一种。比方,假定我们为浮点变量分派一个整数值,盘算时机将int主动转换成float。经由过程外型,我们可明白设置这类范例的转换,大概在一样平常没有大概举行的时分强制它举行。
为举行一次外型,要将括号中但愿的数据范例(包含一切修正符)置于其他任何值的左边。上面是一个例子:

voidcasts(){
inti=200;
longl=(long)i;
longl2=(long)200;
}

正如您看到的那样,既可对一个数值举行外型处置,亦可对一个变量举行外型处置。但在这儿展现的两种情形下,外型均是过剩的,由于编译器在需要的时分会主动举行int值到long值的转换。固然,仍旧能够设置一个外型,提示本人寄望,也使程序更分明。在其他情形下,外型只要在代码编译时才显出主要性。
在C和C++中,外型偶然会让人头痛。在Java里,外型则是一种对照平安的操纵。可是,若举行一种名为“减少转换”(NarrowingConversion)的操纵(也就是说,剧本是能包容更多信息的数据范例,将其转换成容量较小的范例),此时便可能面对信息丧失的伤害。此时,编译器会强制我们举行外型,就好象说:“这多是一件伤害的事变——假如您想让我不顾地做,那末对不起,请明白外型。”而关于“缩小转换”(Wideningconversion),则不用举行明白外型,由于新范例一定能包容本来范例的信息,不会形成任何信息的丧失。
Java同意我们将任何主范例“外型”为其他任何一种主范例,但布尔值(bollean)要除外,后者基本不同意举行任何外型处置。“类”不同意举行外型。为了将一品种转换成另外一种,必需接纳特别的办法(字串是一种特别的情形,本书前面会讲到将对象外型到一个范例“家属”里;比方,“橡树”可外型为“树”;反之亦然。但关于其他外来范例,如“岩石”,则不克不及外型为“树”)。

1.字面值
最入手下手的时分,若在一个程序里拔出“字面值”(Literal),编译器一般能正确晓得要天生甚么样的范例。但在有些时分,关于范例倒是暗昧不清的。若产生这类情形,必需对编译器加以得当的“引导”。办法是用与字面值联系关系的字符情势到场一些分外的信息。上面这段代码向人人展现了这些字符。
  1. //:Literals.java
  2. classLiterals{
  3. charc=0xffff;//maxcharhexvalue
  4. byteb=0x7f;//maxbytehexvalue
  5. shorts=0x7fff;//maxshorthexvalue
  6. inti1=0x2f;//Hexadecimal(lowercase)
  7. inti2=0X2F;//Hexadecimal(uppercase)
  8. inti3=0177;//Octal(leadingzero)
  9. //HexandOctalsoworkwithlong.
  10. longn1=200L;//longsuffix
  11. longn2=200l;//longsuffix
  12. longn3=200;
  13. //!longl6(200);//notallowed
  14. floatf1=1;
  15. floatf2=1F;//floatsuffix
  16. floatf3=1f;//floatsuffix
  17. floatf4=1e-45f;//10tothepower
  18. floatf5=1e+9f;//floatsuffix
  19. doubled1=1d;//doublesuffix
  20. doubled2=1D;//doublesuffix
  21. doubled3=47e47d;//10tothepower
  22. }///:~
复制代码
十六进制(Base16)——它合用于一切整数数据范例——用一个前置的0x或0X唆使。并在前面跟从接纳年夜写或小写情势的0-9和a-f。若试图将一个变量初始化成超越本身才能的一个值(不管这个值的数值情势怎样),编译器就会向我们呈报一条堕落动静。注重在上述代码中,最年夜的十六进制值只会在char,byte和short身上呈现。若超越这一限定,编译器会将值主动酿成一个int,并告知我们必要对这一次赋值举行“减少外型”。如许一来,我们便可分明获知本人已超载了界限。
八进制(Base8)是用数字中的一个前置0和0-7的数位唆使的。在C,C++大概Java中,对二进制数字没有响应的“字面”暗示办法。
字面值后的跟随字符标记着它的范例。若为年夜写或小写的L,代表long;年夜写或小写的F,代表float;年夜写或小写的D,则代表double。
指数老是接纳一种我们以为很不直不雅的暗号办法:1.39e-47f。在迷信与工程学范畴,“e”代表天然对数的基数,约即是2.718(Java一种更准确的double值接纳Math.E的情势)。它在象“1.39
逍遥一派 该用户已被删除
沙发
 楼主| 发表于 2015-6-6 03:48:04 | 显示全部楼层
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-21 20:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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