7、Java类型转换
类型转换

自动类型转换
自动类型转换指的是容量小的数据类型可以自动转换为空量大的数据类型。(容量大小不是看字节数来定的,是按照类型可以容纳多的数来定的,所以long,可以自动转为float)
//特例:
byte a = 123; //常量是为int,但是这里没有报错,就是因为自动转换
//byte b = 1234; //报错,是因为1234这个常量的值超过byte类型的最大值了
强制类型转换
强制类型转换,是用于显式的转换一个数值的类型,在有可能丢失信息的情况下进行的转换是可能造成精度的溢出或降低的。
例:
double a = 1.2222;
int b = (int) a;
System.out.println("b=" + b);
//结果为:b=1
//精度变低了,并且没有小数部分了
基本数据转换的一个经典错误
操作较大的数的时候,有时会在不经意间溢出,尤其是操作整数的时候。
int a = 1000000000; //10亿
int b = 20;
int num = a * b;
System.out.println("num=" + num);
//输出的结果:num=-1474836480
//输出的结果是一个负数,是因为a和b的乘积已经超过了int的最大值了
//发生了内存溢出问题,所以就变成一个负数了。但是如果是下面这样呢:
long num2 = a * b;
System.out.println("num2=" + num2);
//输出的结果还是:num2=-1474836480
//输出的结果还是一个负数,是因为 = 符号从右往左运算的,先计算左边的值
//再赋值给右边,当右边计算完成时,还是一个int类型,
//但是已经溢出了,再转为long类型也没有用了
//下面的是正确的:
long num3 = a * (long)b;
System.out.println("num3=" + num3);
//结果为:num3=20000000000
//为什么可以成功呢?
//因为在等号右边进行计算前,b已经转为long类型了,
//所以当一个表达式中有一个long类型的时候,这个表达式的值为long的。
细节决定成败!
个人愚见,如有不对,恳请扶正!
7、Java类型转换的更多相关文章
- java类型转换
//java类型转换public class Demo2 { public static void main(String[] args){ int num1 = 55; int num2 =77; ...
- Java 类型转换精度问题
基本数据类型占用内存大小 最近项目中修复了一个关于类型转换精度丢失的问题,以前对于类型转换会丢失精度只知其然,不知其所以然,这次了解了下相关原理,也分享给大家.先来回顾一下 Java 的基本数据类型中 ...
- Java类型转换详解
Java类型转换详解 最近有同学问:自动类型转换老是记不住,到底是大转小,还是小转大 其实这个不用死记硬背,很好理解,我们拿 int 和 short 来举例: int 是 4 字节,也就是 32 bi ...
- Java 类型转换以及Object转成其他类型
Object转int int count=(int)map.get("count") int count=Integer.parseInt((String)map.get(&quo ...
- java 类型转换(摘自网络)
java基本类型转换规则 1.基本数据类型的转换是指由系统根据转换规则自动完成,不需要程序员明确地声明不同数据类型之间的转换. 转换在编译器执行,而不是等到运行期再执行. 2.基本数据类型 ...
- SQLServer类型与Java类型转换问题解决
ResultSet 接口提供用于从当前行获取列值的获取 方法(getBoolean.getLong 等).可以使用列的索引编号或列的名称获取值.一般情况下,使用列索引较为高效.列从 1 开始编号.为了 ...
- 从字节码看java类型转换【 深入理解 (T[]) new Object[size] 】
我们都知道,java中对类型的检查是很严格的,所以我们平操作时,也往往很小心. 如题: (T[]) new Object[size],这种写法是一般我们是不会干的!但是有点经验的同学,还是会遇到这样写 ...
- Java 类型转换(int->String)
1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([ ...
- java 类型转换:
数值数据类型: 1.自动类型转换 byte->short ->int->long-->float--->double 范转小的类型向范围大的类型号转换,由系统自动完成 ...
- java类型转换详解(自动转换和强制转换)
自动转换 class Hello { public static void main(String[] args) { //自动转换 int a = 5; byte b = 6; int c = a ...
随机推荐
- Eclipse的使用配置
Eclipse 是一个开放源代码的.基于Java的可扩展开发平台.目前许多开发者开发时仍会选择使用Eclipse,很多初学者刚开始接触Java也是从使用Eclipse开始的.本篇博客主要介绍Eclip ...
- 【Linux】iptables相关实践,原理及参数解释
1.禁止指定IP地址的主机进行连接 iptables -I INPUT -s .***.***. -j DROP 2.解除禁止指定IP地址的主机进行连接 iptables -D INPUT -s .* ...
- QT安装和vs2015使用
下载Qt5.7.0安装包(qt-windows-opensource)与Qt插件(Visual Studio Add-in) QT软件下载地址: http://download.qt.io/archi ...
- Docker(二)Image 与网络
Docker Image 我们介绍一下如何构造一个自定义的 Docker Image.在Docker 中,我们使用Dokcerfile 构建一个docker的描述. 首先我们定义一下需要启动一个什么 ...
- C#通过属性名字符串获取、设置对象属性值
之前理工项目从这个博客找到了相对应的方法:C#通过属性名字符串获取.设置对象属性值 https://www.cnblogs.com/willingtolove/p/12198871.html
- 【Python】文本进度条
1.0代码: import time#引入time库 scale=10#文本进度条宽度 print("------执行开始------") for i in range(scale ...
- SQL With As的用法
WITH AS,也叫子查询部分(subquery factoring),可以定义一个SQL片断,该SQL片断会被整个SQL语句用到.可以使SQL语句的可读性更高,也可以在UNION ALL的不同部分, ...
- 算法导论2-4 O(nlgn)时间复杂度求逆序对
def mergesort(nums,le,ri): if le>ri-2: return 0 mi=le+(ri-le)//2 a=mergesort(nums,le,mi) b=merges ...
- 图像滤波—opencv函数
函数原型 方框滤波 ,-), bool normalize = true, int borderType = BORDER_DEFAULT) 均值滤波 ,-), int borderType = ...
- mybatis(六):设计模式 - 工厂方法模式