当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:17:00  来源:本站整理

java的造型运算符(Cast)[Java编程]

赞助商链接



  本文“java的造型运算符(Cast)[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
“造型”(Cast)的作用是“与一个模子匹配”.在得当的时刻,Java会将一种数据范例自动转换成另一种.比方,假定我们为浮点变量分配一个整数值,计算机会将int自动转换成float.通过造型,我们可明确设置这种范例的转换,大概在普通没有大概举行的时刻逼迫它举行.
为举行一次造型,要将括号中但愿的数据范例(包含全部改正符)置于其他任何值的左侧.下面是一个例子:

void casts() {
int i = 200;
long l = (long)i;
long l2 = (long)200;
}

正如您看到的那样,既可对一个数值举行造型处理,亦可对一个变量举行造型处理.但在这儿展示的两种情形下,造型均是多余的,因为编译器在必要的时刻会自动举行int值到long值的转换.当然,仍旧可以设置一个造型,提醒自己留神,也使程序更清楚.在其他情形下,造型只有在代码编译时才显出重要性.
在C和C++中,造型有时会让人头痛.在Java里,造型则是一种对比安全的操作.但是,若举行一种名为“缩小转换”(Narrowing Conversion)的操作(也就是说,脚本是能包容更多信息的数据范例,将其转换成容量较小的范例),此时便大概面对信息丧失的危险.此时,编译器会逼迫我们举行造型,就好象说:“这大概是一件危险的事情——假如您想让我不顾一切地做,那么对不起,请明确造型.”而关于“放大转换”(Widening conversion),则没必要举行明确造型,因为新范例必定能包容本来范例的信息,不会造成任何信息的丧失.
Java答应我们将任何主范例“造型”为其他任何一种主范例,但布尔值(bollean)要除外,后者根本不答应举行任何造型处理.“类”不答应举行造型.为了将一种类转换成另一种,必须采取特别的办法(字串是一种特别的情形,本书背面会讲到将对象造型到一个范例“家族”里;比方,“橡树”可造型为“树”;反之亦然.但关于其他外来范例,如“岩石”,则不能造型为“树”).

1. 字面值
最开始的时刻,若在一个程序里插入“字面值”(Literal),编译器普通能精确知道要生成什么样的范例.但在有些时刻,关于范例倒是暧昧不清的.若发生这种情形,必须对编译器加以得当的“指导”.办法是用与字面值关联的字符情势加入一些额外的信息.下面这段代码向大家展示了这些字符.

//: Literals.java

class Literals {
  char c = 0xffff; // max char hex value
  byte b = 0x7f; // max byte hex value
  short s = 0x7fff; // max short hex value
  int i1 = 0x2f; // Hexadecimal (lowercase)
  int i2 = 0X2F; // Hexadecimal (uppercase)
  int i3 = 0177; // Octal (leading zero)
  // Hex and Oct also work with long.
  long n1 = 200L; // long suffix
  long n2 = 200l; // long suffix
  long n3 = 200;
  //! long l6(200); // not allowed
  float f1 = 1;
  float f2 = 1F; // float suffix
  float f3 = 1f; // float suffix
  float f4 = 1e-45f; // 10 to the power
  float f5 = 1e+9f; // float suffix
  double d1 = 1d; // double suffix
  double d2 = 1D; // double suffix
  double d3 = 47e47d; // 10 to the power
} ///:~

十六进制(Base 16)——它实用于全部整数数据范例——用一个前置的0x或0X指导.并在背面跟随采取大写或小写情势的0-9以及a-f.若试图将一个变量初始化成超越自身本领的一个值(无论这个值的数值情势若何),编译器就会向我们报告一条出错消息.注意在上述代码中,最大的十六进制值只会在char,byte以及short身上呈现.若超越这一限制,编译器会将值自动变成一个int,并奉告我们需求对这一次赋值举行“缩小造型”.这样一来,我们便可清楚获知自己已超载了边界.
八进制(Base 8)是用数字中的一个前置0以及0-7的数位指导的.在C,C++大概Java中,对二进制数字没有呼应的“字面”表示办法.
字面值后的尾随字符标志着它的范例.若为大写或小写的L,代表long;大写或小写的F,代表float;大写或小写的D,则代表double.
指数老是采取一种我们认为很不直观的暗号办法:1.39e-47f.在科学与工程学范畴,“e”代表自然对数的基数,约等于2.718(Java一种更切确的double值采取Math.E的情势).它在象“1.39×e的-47次方”这样的指数表达式中利用,意味着“1.39×2.718的-47次方”.但是,自FORTRAN语言创造后,人们自但是然地认为e代表“10多少次幂”.这种做法显得颇为古怪,因为FORTRAN最初面向的是科学与工程计划范畴.理所当然,它的计划者应对这样的混合概念持谨严态度(注释①).但不管怎样,这种分外的表达办法在C,C++以及目前的Java中顽固地保存下来了.所以假使您习惯将e作为自然对数的基数利用,那么在Java中看到象“1.39e-47f”这样的表达式时,请转换您的思维,从程序计划的角度考虑它;它真正的含义是“1.39×10的-47次方”.

①:John Kirkham这样写道:“我最早于1962年在一部IBM 1620机械上利用FORTRAN II.当时——包含60年代以及70年代的早期,FORTRAN一向都是利用大写字母.之所以会呈现这一情形,大概是由于早期的输入设备大多是老式电传打字机,利用5位Baudot码,那种码并不具有小写本领.乘幂表达式中的‘E’也必定是大写的,所以不会与自然对数的基数‘e’发生冲突,后者必定是小写的.‘E’这个字母的含义其实很简单,就是‘Exponential’的意思,即‘指数’或‘幂数’,代表计算系统的基数——普通都是10.当时,八进制也在程序员中遍及利用.固然我自己未看到它的利用,但假如我在乘幂表达式中看到一个八进制数字,就会把它认作Base 8.我记得第一次看到用小写‘e’表示指数是在70年代末期.我当时也认为它极易产生混合.所以说,这个问题美满是自己‘潜入’FORTRAN里去的,并非一开始就有.假如你真的想利用自然对数的基数,实际有现成的函数可供操纵,但它们都是大写的.”

注意假如编译器可以精确地辨认范例,就没必要利用尾随字符.关于下述语句:
long n3 = 200;
它并不存在含糊不清的地方,所以200背面的一个L大可省去.但是,关于下述语句:
float f4 = 1e-47f; //10的幂数
编译器普通会将指数作为双精度数(double)处理,所以假定没有这个尾随的f,就会收到一条出错提醒,奉告我们须用一个“造型”将double转换成float.

2. 转型
大家会发现假如对主数据范例履行任何算术或按位运算,只要它们“比int小”(即char,byte大概short),那么在正式履行运算之前,那些值会自动转换成int.这样一来,最毕生成的值就是int范例.所以只要把一个值赋回较小的范例,就必须利用“造型”.此外,由于是将值赋回给较小的范例,所以大概呈现信息丧失的情形).普通,表达式中最大的数据范例是决意了表达式终究后果大小的那个范例.若将一个float值与一个double值相乘,后果就是double;如将一个int和一个long值相加,则后果为long.
  以上是“java的造型运算符(Cast)[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .