一、 自动类型转换(隐式类型转换)

  • 整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

自动转换从低级到高级。

自动转换有以下规律:

1、小的类型自动转化为大的类型
2、整数类型可以自动转化为浮点类型,可能会产生舍入误差
3、字符可以自动提升为整数

示例代码:
隐式类型转换

    int i = 128;double b = i;//128.0

整数类型可以自动转化为浮点类型,可能会产生舍入误差

  • Float和Double提供了快速的运算,然而问题在于转换为二进制的时候,有些数字不能完全转换,只能无限接近于原本的值
        float floatValue1=2+10f;float floatValue2=floatValue1-11.9f;System.out.println(floatValue2);//0.10000038


字符可以自动提升为整数

        char Value1 ='a';int Value2=Value1+10;System.out.println(Value2);//107

二、 强制类型转换(显式类型转换)

强制转换格式:(类型)变量名

  • 强制类型转换,在要强制类型转换的前面加上括号,然后在括号里面加上你要转换的类型

(强制转换需要程序员手动处理)
注意点:
1、强制类型转换可能导致溢出或损失精度
2、在把容量大的类型转换为容量小的类型时必须使用强制类型转换
3、浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
4、不能对布尔值进行转换
5、不能把对象类型转换为不相干的类型

示例代码:导致溢出(1)
容量大类型转容量小类型

  • 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
  • 溢出: 数据类型超过了计算机字长的界限而出现的数据溢出。
          int i = 128;byte b = (byte)i;//-128  内存溢出// 00000000 00000000 00000000 10000000 128的原码// 00000000 00000000 00000000 10000000 128的反码// 00000000 00000000 00000000 10000000 128的补码// 10000000 的补码// 11111111 反码// 10000000/*** 关于 原码,反码,补码的知识(了解)* 正数的反码,补码是其本身;* 负数的反码是符号位保持不变,其余位取反;负数的补码是在其反码的基础上+1*/

1、为什么会是负的呢?
2、byte 最大值是 127,这里给了它128,所以它超出了最大值,数据类型超过了计算机字长的界限而出现的数据溢出

示例代码:导致溢出(2)

package com.gr.demo;
public class demo4 {public static void main(String[] args) {//操作比较大的数的时候,注意溢出问题//JDK7新特性,数字之间可以用下划线分割int money = 10_0000_0000;int years = 20;int tota1 = money*years;//-1474836480 计算的时候溢出了System.out.println(tota1);//-1474836480long tota2 = money*years;//默认是int,转换之前已经存在问题了?long tota13 = money*((long)years);//先把一个数转换为Long 在计算之前就把精度解决掉了System.out.println(tota13);//20000000000}
}


示例代码:损失精度

  • int是要强制类型转换后的数据类型
  • 浮点数转换整数是通过舍弃小数得到的,而不是四舍五入
System.out.println((int)23.7);//23 舍弃小数
System.out.println((int)-45.89f);//-45 舍弃小数

示例代码:字符强制转换成数字

char c1 = 'a';char c2 = '中';System.out.println(c1);//aSystem.out.println((int)c1);//97 强制转换System.out.println(c2);//中System.out.println((int)c2);//20013 强制转换
  • 注意:所有的字符本质还是数字
  • Char类型 会涉及到Unicode编码问题 上面的小写a就代表着97,大写的A代表着65。

    ASCLL编码表片段,这个不是很详细,大家可以大概看看:

Java类型转换(自动类型转换+强制类型转换)相关推荐

  1. C++中的向上类型转换和向下类型转换+四种强制类型转换

    转自博客:http://blog.csdn.net/wangweitingaabbcc/article/details/7720979# 在c++的世界中有这样两个概念,向上类型转换,向下类型转换,分 ...

  2. Java基础篇:强制类型转换

    在java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换. 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需 ...

  3. 自动与强制类型转换小总结

    一: 普通类型的类型转换: 当较低类型的数据转换为较高类型时,一般只是形式上有所改变, 而不影响数据的实质内容,(自动) 而较高类型的数据转换为较低类型时则可能有些数据丢失.(强制) 如int a=( ...

  4. Java的知识点6—— 强制类型转换、基本类型转化时常见错误和问题、 简单的键盘输入和输出

     强制类型转换 强制类型转换,又被称为造型,用于显式的转换一个数值的类型.在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出. public class Test2 {pu ...

  5. java Vector.toArray 与强制类型转换

    今天写程序的时候碰到这样的问题: public String[] getPlatformIDList()     {         Vector result = new Vector();     ...

  6. java强转float_Java强制类型转换

    将较长的数据类型转换成较短的数据类型,只能用强制类型转换.形如: short s; Byte b = (byte)s; 7种类型的顺序排列如下: byte < (short = char) &l ...

  7. linux 强制类型转换,转载 指针强制类型转换

    当我们初始化一个指针或给一个指针赋值时,赋值号的左边是一个指针,赋值号的右边是一个指针表达式.在我们前面所举的例子中,绝大多数情况下,指针的类型和指针表达式的类型是一样的,指针所指向的类型和指针表达式 ...

  8. c语言数组变量的类型转换,C语言强制类型转换

    概要: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给 ...

  9. html强制类型转换,前端-JS强制类型转换之转换成数字类型

    在上一篇博客<前端-数据类型>中我们说到JavaScript的数据类型.那么下面我们介绍一下JavaScript数据类型强制转换成数字类型. 代码示例 下面的代码中,主要实现将一个全部是数 ...

  10. Java数组 强制类型转换

    数组的强制类型转换 数组的强制类型转换 数组类型转换的问题为什么会出现在我脑海中? 数组的强制类型转换 最重要的是!!!最开始的时候声明的数组类型!!! 最重要的是!!!最开始的时候声明的数组类型!! ...

最新文章

  1. Codeforces Round #469 (Div. 2) A/B
  2. 脚本没有类似C语言的预编译,开源脚本库
  3. 数据恢复专业基础之python解释NTFS runlist的代码
  4. ArcGIS中QueryTask,FindTask,IndentifyTask 之间的区别
  5. POJ-4004:数字组合(用位移方法解组合数问题,Java版)
  6. 剑指offer--51.表示数值的字符串
  7. 51nod 1435 位数阶乘 (手动计算)
  8. undefined reference to `cv::VideoCapture::VideoCapture()'
  9. leetcode组队学习——查找(一)
  10. okhttp教程——起步篇
  11. 【短时能量】基于matlab语音信号短时能量【含Matlab源码 1719期】
  12. AMEsim fatal error U1077解决方案之一
  13. 无人驾驶相关文献阅读体会
  14. 微信终于能注册小号了,无需绑定手机号!
  15. 【SQLite】C++链接SQLite读数据乱码问题(非中文)
  16. 短信工具类——mo信通
  17. (五十三)Credit VaR的计算
  18. 春赏百花秋望月,夏沐凉风冬听雪
  19. Android APP过检安全整改
  20. AI智能写作将改变文学创作的未来?

热门文章

  1. lyapunov直接法
  2. SQL 如何得到两个日期间的工作日(附假期表)
  3. 前后端开发实用网站推荐
  4. SQL 数据库简单使用
  5. EXCEL篇—时间序列分析(季节指数法)
  6. Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解
  7. pacemaker常用命令
  8. 【git版本控制】| git版本控制操作命令(全)
  9. 第一天 :二分查找+移除元素
  10. HTML5+CSS3小实例:鼠标悬停发光按钮