类型转换是将一个值从一种类型更改为另一种类型的过程。例如,可以将String类型数据“457”转换为一个数值型,而且可以将任意类型的数型转换为String类型。
如果从低精度数据类型向高精度数据类型转换,则永远不会举出,并且总是成功的;而把高精度数据类型向低精度数据类型转换则必然会有信息丢失,有可能失败。
数据类型转换有两种方式,即隐式转换与显式转换。
从低级类型向高级类型的转换,系统将自动执行,程序员无须进行任何操作。这种类型的转换称为隐式转换。下列基本数据类型会涉及数据转换,不包括逻辑类型和字符类型。这些类型按精度从低到高排列的顺序为byte<short<int<long<float<double。
例使用int型变量为float型变量赋值,此时int型变量将隐式转换成float型变量。实例代码如下:
int x = 50; //声明int型变量x
float y = x; //将x赋值给y
此时执行输出语句,y的结果将是50.0。
隐式类型的转换也要遵循一定的规则,来解决在什么情况下将哪种类型的数据转换成另一种类型的数据。表列出了各种数据类型转换的一般规则。
操作数1的数据类型 | 操作数2的数据类型 | 转换后的数据类型 |
---|---|---|
byte、short、char | int | int |
byte、short、char、int、 | long | long |
byte、short、char、int、long | float | float |
byte、short、char、int、long、float | double | double |
下面通过一个简单实例介绍数据类型隐式转换。
例在项目中创建类Conver,在主方法中创建不同数值型的变量,实现将各变量隐式转换。
public class Conver { //创建类
public static void main(String[] args){
//定义byte型变量mybyte,并把byte型变量允许的最大值赋给mybyte
byte mybyte = 127;
int myint = 150; //定义int型变量myint,并赋值150
float myfloat = 452.12f; //定义float型变量myfloat,并赋值
char mychar = 10; //定义char型变量mychar,并赋值
double mydouble = 45.46546; //定义double型变量,并赋值
System.out.println("byte型与float型数据进行运算结果为:"
+(mybyte + myfloat));
/*将运算结果输出*/
System.out.println("byte型与int型数据进行运算结果为:"
+ mybyte * myint);
System.out.println("byte型与char型数据进行运算结果为:"
+ mybyte/mychar);
System.out.println("double型与char型数据进行运算结果为:"
+(mydouble + mychar));
}
}
运行结果如图所示。
要理解类型转换,读者可以这么想像,大脑前面是一片内存,源和目标分别是两个大小不同的内存块(由变量及数据的类型来决定),将源数据赋值给目标内存的过程,就是用目标内存块尽可能多地套取源内存的数据。
当把高精度的变量的值赋给低精度的变量时,必须使用显示类型转换运算(又称强制类型转换)。
语法如下:
(类型名)要转换的值
下面通过几种常见的显示数据类型转换实例来说明。
例将不同的数据类型进行显式类型转换,实例代码:
int a = (int)45.23; //此时值输出a的值为45
long y = (long)456.6F; //此时输出y的值为456
int b = (int)'id'; //此时输出b的值为100
当执行显式类型转换时可能会导致精度损失。只要是boolean类型以外其他基本类型之间的转换,全部都能以显式类型转换的方法达到。
当把整数赋值给一个byte、short、int、long型变量时,不可以超出主些变量的取值范围,否则必须进行强制类型转换。例如:
byte b = (byte)129;
代码注释
通过在程序代码中添加注释可提高程序的可读性。注释中包含了程序的信息,可以帮助程序员更好地阅读和理解程序。在Java源程序文件的任意位置都可添加注释语句。注释中的文字Java编译器不进行编译,所有代码中的注释文字对程序不产生任何影响。Java语言提供了3种添加注释的方法,分别单行注释、多行注释和文档注释。
单行注释
“//”为单行注释标记,从符号“//”开始直接到换行为止的所有内容均作为注释而被编译器忽略。
语法如下:
//注释内容
例如,以下代码为声明的int型变量添加注释:
int age; //定义int型变量用于保存年龄信息
2.多行注释
“/* */”为多行注释标记,符号“/*”与“*/”之间的所有内容均为注释内容。注释中的内容可以换行。
语法如下:
/*
注释内容1
注释内容2
...
*/
在多行注释中可嵌套单行注释。例如:
/*
程序名称:Hello word //开发时间: 2015-03-05
*/
但在多行注释中不可以嵌套多行注释,以下代码非法:
/*
程序名称:Hello word
/*开发时间:2015-03-05
作者:张先生
*/
*/
文档注释
“** *”为文档注释标记符号“/**”与“*/”之间的内容均为文档注释内容。当文档注释出现在声明(如类声明、类的成员变量的声明、类的成员方法声明等)之前时,会被Javadoc文档工具读取作为Javadoc文档内容。文档注释内容。文档注释的格式与多行注释的格式与多行注释的格式相同。对于初学者而言,文档注释并不是很重要,了解即可。
一定要养成良好的编程风格。软件编码规范中提到“可读性第一,效率第二”,所以程序员必须要在程序中添加适量的注释来提高程序的可读性和可维护性。程序中注释要占程序代码总量的20%~50%。
在学习开发的过程中要养成良好的编码习惯,因为规整的代码格式会给程序的开发与日后的维护提供很大的方便。在此对编码规则作了以下总结,供读者学习
在声明变量时,尽量使每个变量的声明单独占一行,即使是相同的数据类型也要将其放置在单独的一行上,这样有助于添加注释。对于局部变量应在声明的同时对其进行初始化。
在Java代码中,关键字与关键字间如果多个空格,这些空格均被视作一个。例如:
public static void main(String args[] -等价于> public static void main(String args[])
多行空格没有任何意义,为了便于理解、阅读,应控制好空格的数量。
为了方便日后维护,不要使用技术性很高、难懂、易混淆判断的语句。由于程序的开发与维护不能是同一个人,所以应尽量使用简单的技术完成程序需要的功能。
对于关键的方法要多加注释,这样有助于阅读者了解代码结构。