java的类型转换问题

问题描述

请问一下,在java中,long的大小是8字节,float的大小是4字节,8字节的long怎么就可以隐式的转换为4字节float的呢? 问题补充:我的意思是 8字节→4字节 不是应该强制转换吗?因为要去位呀~~怎么java可以隐式的转换~~

解决方案

这都说了些什么!这不误人子弟嘛兄弟,是这个样子的:由于浮点数的存储机制与定点不同,使得它能表示的数的范围大大扩展了,举个例子 float i=2345000000000L;对这个数而言,4字节的int类型是指定存不下的,但是单精度浮点数是可以的。纵使是单精度,它也是浮点数,可表示数的范围-2^127~2^127折合十进制-1.7*10^38~1.7*10^38 , 瘦死的骆驼比马大。 long 可表示的数的范围还不足10^20,那你说可不可以自动转型 ?!为什么同样是四个字节,float这么厉害? 那还要long干什么 ?切记:使用浮点型的时候,要注意它的“有效数字”(强调一下),单精度为7位,7位以后的皆不可信了。 它牺牲的是 有效数字的位数!数的范围是足够了
解决方案二:
这个java类型转换,向上转是自动档,位数不够自动补0
解决方案三:
要是穷根问底的话就好比是1+1=2 Why?
解决方案四:
这是java中的机制呀,“向上转型”,java中最大的对象是object,那么肯定object可以转成所有的对象。也可以说兼容所有的对象!

时间: 2024-09-30 20:10:31

java的类型转换问题的相关文章

简要JAVA数据类型转换

数据|数据类型|转换 1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异. 2 如何将整数 int 转换成字串 String ? A. 有叁种

Java数据类型转换详解_java

一.基本数据类型阐述 Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型.[注]JAVA没有unsigned类型 (1). 整数:int,short,byte,long (2). 浮点型:float,double (3). 字符:char (4). 布尔:boolean 基本型别     大小         最小值            最大值 void boolean     -----         -----             

java string类型转换boolean类型的方法_java

今天偶然想把string 类型转换成 boolean 类型 ,查了下api文档,发现文档似乎有点不太对经... 嗯,就直接发测试代码吧,废话懒得说了... String s1 = "false"; String s2 = "true"; String s3 = "fAlSe"; String s4 = "TrUe"; String s5 = "true_a"; 以上的string 分别用 Boolean.g

Java 8 类型转换及改进

为对象的类型做强制转换是一种非常不好的设计.但在某些情况下,我们没有其他选择.Java自诞生的那一天起,就具备这种功能. 我认为Java 8在一定程度改善了这项古老的技术. 静态转型 Java中最常用的转型方式如下: 静态转型 Object obj; // may be an integer  if (obj instanceof Integer) {      Integer objAsInt = (Integer) obj;      // do something with 'objAsI

从Java的类型转换看MySQL和Oracle中的隐式转换(二)

说起数据类型转换,在开发中如此,在数据库中也是如此,之前简单对比过MySQL和Oracle的数据类型转换情况,可以参见MySQL和Oracle中的隐式转换 http://blog.itpub.net/23718752/viewspace-1787973/ 不过当时写完之后,有个读者随口问了一句为什么,为什么呢?似乎自己还是一知半解,说是规则,无规矩不成方圆,倒也无可非议,不过我觉得还是要再看看,看看还能有哪些收获,接下来的内容我就不能保证正确性了,希望大家明辨,也希望提出意见,毕竟就是希望把问题

Java中类型转换的特例

转换 先看一下下面的语句那些是非法的. byte b1=2;byte b2=1+1;byte b3=b1+1;byte b4=b1++; int i1=Integer.MAX_VALUE+1; //Integer.MAX_VALUE=2147483647int i2=2147483648; 把byte改为char和short几乎是一样的.因为整数字面常量是int型的,也就是1和2都是int型的在赋值语句中直接把一个int型赋给byte肯定是不行的.int i=1:byte b=i:是编译不过的,

java 日期类型转换-JAVA 日期类型内部转换

问题描述 JAVA 日期类型内部转换 如何将 日期类型数据 "Fri Nov 15 12:01:32 CST 2013 "转换成 "2013-11-15 12:01:32"的日期类型数据? 代码如下: try { // 将已有的时间字符串转化为Date对象 Date date; // 首先设置"Fri Nov 15 12:01:32 CST 2013"的格式,用来将其转化为Date对象 DateFormat df = new SimpleDate

实用技巧 Java类型转换与强制类型转换

技巧|转换 如果你以前有编程经验,那么你已经知道把一种类型的值赋给另外类型的一个变量是相当常见的.如果这2种类型是兼容的,那么Java 将自动地进行转换.例如,把int 类型的值赋给long 类型的变量,总是可行的.然而,不是所有的类型都是兼容的,因此,不是所有的类型转换都是可以隐式实现的.例如,没有将double 型转换为byte 型的定义.幸好,获得不兼容的类型之间的转换仍然是可能的.要达到这个目的,你必须使用一个强制类型转换,它能完成两个不兼容的类型之间的显式变换.让我们看看自动类型转换和

数组类型转换-JAVA如何利用反射指定類型

问题描述 JAVA如何利用反射指定類型 自己写一个工具类,求大神帮忙看下能否利用反射或者泛型实现类型转换. public static Object[] getArray(Class cString str){ List list=jdbcUtil.getList(c str);//list是利用反射生成的List return list.toArray(new Object[list.size()]);//可否根据传入的Class指定Array类型 } 因為:Object[] objs=new