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 ...
随机推荐
- @Html.DropDownList()的四种用法及自定义DropDownList扩展
https://blog.csdn.net/xiaouncle/article/details/82856982
- AcWing 482. 合唱队形
#include<iostream> using namespace std ; ; int f[N],g[N]; int w[N]; int main() { int n; cin> ...
- Codeforces Round #621 (Div. 1 + Div. 2)E(二分查找,枚举分界点,容斥原理)
可以把每头牛看作一个位置,有几对牛可以放置相当于有几对位置可以给它睡觉,没有牛可以在其他牛的位置睡觉,所以有几对牛放置的可能答案就乘多少(相当于在原本的两个集合里分别插入一个元素,元素代表它睡觉的位置 ...
- mysql中循环插入数据
循环插入1w条数据 表结构: mysql> desc time_table; +-------+-----------+------+-----+-------------------+---- ...
- MATLAB一些常用的function
在MATLAB中一些常用的算数符号与我们平时所用的不同,比如:根号,平方,e,以及对数函数等. (1)平方:a^2 意思为a的平方,亦可以写成a*a: (2)根号:sqrt(x)意思为对x开根号,x既 ...
- elasticSearch 起步(CentOS7 success)
安装和启动 这里使用docker进行安装的 docker pull elasticsearch 然后使用 docker run -e ES_JAVA_OPTS="-Xms256m -Xmx2 ...
- Wordpress里提示警告信息creating default object from empty value in *** 的解决方法
PHP里提示 Creating default object from empty value 的问题,一般是由于PHP版升级的原因,PHP 5.4 以上的版本一般会报这个错误.PHP的解决方法:找到 ...
- Hadoop中的java基本类型的序列化封装类
Hadoop将很多Writable类归入org.apache.hadoop.io包中,在这些类中,比较重要的有Java基本类.Text.Writable集合.ObjectWritable等,重点介绍J ...
- 2019 ICPC徐州网络赛 E. XKC's basketball team(二分)
计蒜客题目链接:https://nanti.jisuanke.com/t/41387 题目大意:给定一组无序序列,从第一个数开始,求最远比这个数大m的数,与这个数之间相隔多少数字?如果没有输出-1,否 ...
- ES5中, map 和 forEach的区别
forEach和map区别在哪里知道吗? // forEach Array.prototype.forEach(callback(item, index, thisArr), thisArg) // ...