Java中的类型转换
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
无论在C/C++还是在Java,强制类型转换已经不是陌生的概念了。但是要想全面掌握Java中类型转换的要点可不那么简单,本文将带领大家一同了解有关Java类型转换的所有要点。
数值类型的类型转换
众所周知,Java有两种数据类型:基本数据类型与引用数据类型;Java又有两种基本的类型转换原则:拓宽转换原则(widening conversion)与缩小转换原则(narrowing conversion)。
拓宽转换与缩小转换只适用于基本数据类型中的数值类型。数据值类型按照范围从小到大排列为:
byte short int long float double
当目标类型的范围比源类型的范围大时遵循拓宽转换原则,不必强制转换。如:
byte b = 10;
short s = b;
反之则遵循缩小转换原则,即
当目标类型的范围比源类型的范围小时遵循缩小转换原则,必须强制转换。如:
short s = 10;
byte b = (byte)s;
需要注意的是拓宽转换原则不丢失数据。如:
long l1 = Long.MAX_VALUE;
float f = l1;
long l2 = (long)f;
System.out.println("转换前:" + l1);
System.out.println("转换后:" + l2);
上例输出结果为:
转换前:9223372036854775807
转换后:9223372036854775807
缩小转换原则在超出目标类型的取值范围时会导致数据丢失。如:
int i1 = 257;
byte b = (byte)i1;
int i2 = b;
System.out.println("转换前:" + i1);
System.out.println("转换后:" + i2);
上例输出结果为:
转换前:257
转换后:1
字符类型与数值类型之间的转换
基本数据类型char等同于一个无符号短整型,范围从0x0000到0xFFFF。
从其它数值类型转换到char类型时,必须进行强制转换。如:
byte b = 10;
short s = 10;
int i = 10;
long l = 10L;
float f = 10.0F;
double d = 10.0;
char c = (char)b;
c = (char)s;
c = (char)i;
c = (char)l;
c = (char)f;
c = (char)d;
将char类型转换成其它数值类型时,除byte、short必须强制转换外,int long float double均不必强制转换。如:
char c = 'a';
byte b = (byte)c;
short s = (byte)c;
int i = c;
long l = c;
float f = c;
double d = c;
引用类型的类型转换
引用类型的赋值常见于具有继承关系的两种类型的转换。如下面的例子:
public class Person {
p
相关文档:
对象只能存在于内存中 ,而内存中不能永久保存数据。如果要永久保存对象的状态,需要进行对象的持久化,即把对象存储到专门的数据存储库中 目前,关系数据库冉冉是使用最广泛的数据存储库。关系数据库中存放的是关系数据,它是非面向对象的。
持久化是将Java虚拟机对象持久保存,而不是将数据库映射为对象,通常数据的存储 ......
在Java中,synchronized关键字为防止资源冲突提供了支持,其作用域有二种:
实例范围。
对象实例范围内synchronized使用的两种形式:
实例范围同步方法
publicd class syncTest {
…
synchronized void aMethod() {
//需要同步使用的代码
}
}
synchronized aMethod(){}可以防止多个线程同时 ......
今天和大家一起学习Java的设计模式。本人的水平不是很高,这系列文章只是自己学习的过程,并希望能同大家分享经验。
先说下我对工厂模式的理解:当我们需要某个对象时,最直接的办法是看到这个对象就拿过来。但是当对象非常多的时候,找起来就很不方便。这时就需要一个中介来帮助我们取得想要的东西,这个中介就是工厂(fa ......
方法的重载
:同一个类里面方法的名字相同,方法的参数项(主要是参数类型,参数个数)
不同
,
返回类型可能不同。
重载方法可以具有不同的返回类型,但返回类型本身不足以区分方法的两个版
本。 ......
java文件过滤器的使用代码如下:
测试代码:package file;
import java.io.File;
public class fileFilter {
public static void main(String[] args) {
File file = new File("d:\\");//设置文件路径
for (File fileList : file.listFiles(new file.MyFileFilter())) {
......