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 ...
随机推荐
- js及jsp.java查错的几种方式
一.js 1.console.log("你想输出的内容"); 2.alert("你想输出的内容"); 3.debugger;(记得打开F12) 4.快速找到js ...
- jQuery---jQuery对象与DOM对象的区别
jQuery对象与DOM对象的区别 1. DOM对象:使用JavaScript中的方法获取页面中的元素返回的对象就是dom对象.2. jQuery对象:jquery对象就是使用jquery的方法获取页 ...
- HTML文本域标签
textarea文本域 cols指定列数 rows行数(不够用会自动扩容)
- VS Code的一些常用插件
1.Bracket Pair Colorizer(括号对彩色化)功能:vscode中括号提醒比较简答,对于层级比较多的比较难看出他的结构,它为代码中的各种结对的括号提供了颜色高亮等功能,将括号对用线连 ...
- jsp中的javascript的$(document).ready( function() { $("#loginForm").validate()
转自:https://bbs.csdn.net/topics/392459787?list=71147533 下面是jsp页面中的JavaScript代码 $(document).ready( fun ...
- Centos7下配置Apache的虚拟主机
一.虚拟主机 虚拟主机是Apache提供的一个功能,通过虚拟主机拉雅在一台服务器上部署多个网站.虽然服务器的IP地址是相同的,但用户当用户使用不同的域名访问时,访问到的是不同的网站. 下面讲解Apac ...
- 同步选中所有checkbox
$("input[type=checkbox][tag=ckAll]").change(function () $(this).parent().parent().siblings ...
- StringBuilder与String的区别
String 在进行运算时(如赋值.拼接等)会产生一个新的实例,而 StringBuilder 则不会.所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 ...
- 1059 Prime Factors (25分)
1059 Prime Factors (25分) 1. 题目 2. 思路 先求解出int范围内的所有素数,把输入x分别对素数表中素数取余,判断是否为0,如果为0继续除该素数知道余数不是0,遍历到sqr ...
- 动态数组、allocator 类
12.2 动态数组 12.2.1 new 和数组 1.分配一个动态数组即是在分配一个new对象时在类型名之后加一对方括号,用来存放数组大小,该数可以是任意表达式.也可以是0,只需是整形.无需是常量.数 ...