一、自动类型转换

转换的过程自动发生
规则:小——>大
byte->short->int->long->float->double
char类型识别为int,可以转成int,不可自动转成byte、short

二、强制类型转换

转换的过程强制发生

规则:大——>小

语法:类型 变量名 = (类型)值;

自增/自减运算符、复合赋值运算符底层做了优化,内部自动强制类型转换,如:++,--,*=,/=,+=,-=……

int i = 10;
short s = 5;
i = s; // 正确,自动转换
s = i; // 报错,精度丢失,需要强制转换
long l3 = 1000.9f; // 报错,小数转为整数,精度丢失,需要强制转换 double d = 1.5f; // 正确,1.5f识别为float类型,自动转换
float f1 = 100L; // 正确,整数部分可以直接赋值给float整数部分,自动转换
float f2 = 100.9; // 报错,100.9默认识别为double,这样转换可能失去小数点,必须强制转换 short s1 = 5;
s1 = s1 - 2; // 报错,2被识别为int,损失精度
byte b = 2;
s1 = s1 - b; // 报错,char、byte和short运算、比较时以int存储(为了保证不发生溢出现象),赋值损失精度
b = b + 4; // 同理,报错 //没报错的原因:
//编译时候,进行检查,看赋值大小是否超过变量的类型所容纳的范围
//如果超过,报错:从int转换到byte可能会有损失,如果没超过,编译通过
byte b1 = 120;
byte b2 = 128; // 报错,超过存储范围 char c1 = 'a';
int i1 = c1; // 正确,自动转换 int i2 = 100;
char c2 = i2; // 错误: 不兼容的类型: 从int转换到char可能会有损失
int n = 100;
char c3 = (char)n; // 正确,强制转换 int m = 12.5*8+2.5*4; // 错误,float到int损失精度
int m2 = (int)(12.5*8+2.5*4); // 正确,加括号保证优先级 int a = 100;
a *= 0.5;       // 正确,等价于a=(int)(a*0.5),直接进行强制转换
byte b3 = 10;
b3++;         // 正确,等价于b3=(byte)(b3+10)

【注意】

  • 遵循自动提升原则,表达式的结果类型 遵循操作数中最大的类型
  • 强转符号只针对于最近的操作数有效,往往需要通过小括号提升优先级
  • byte、short运算时充当int类型
  • char类型只能直接存储int的常量值(char取值范围内)不是变量值(大到小损失精度)
  • char 可以当做一种特殊的整数类型
  • java中整数类型默认的int类型;小数类型默认的double
  • int无法转换为boolean
  • 小数类型转为整数类型,小数可能被舍弃,所有出现精度损失,所以需要强制转换
  • boolean 类型不能转换成任何其它数据类型

Java基本数据类型之间转换的更多相关文章

  1. Java中几种常用数据类型之间转换的方法

    Java中几种常用的数据类型之间转换方法: 1. short-->int 转换 exp: short shortvar=0; int intvar=0; shortvar= (short) in ...

  2. JAVA基本数据类型及其转换

    Java语言是一种强类型语言.这意味着每个变量都必须有一个声明好的类型.Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型.Java另外还提供大数字对 ...

  3. SSIS无法在unicode和非unicode 字符串数据类型之间转换

    场景:SSIS从oracle抽到sqlserver,一个表对表到数据仓库ODS层的抽取,没有任何逻辑结果遇到问题: SSIS无法在unicode和非unicode 字符串数据类型之间转换 如下图2个字 ...

  4. SSIS 无法在 unicode 和非 unicode 字符串数据类型之间转换

    最近在学SSIS,遇到一个问题,把平面文件源的数据导入到EXCEL中. 平面文件源的对象是CSV,读进来的PhoneNumber是 DT_STR 然后倒入Excel 对应列建立的是longtext 一 ...

  5. Java基础——数据类型之间的转换

    Java数据类型分为三大类,即布尔型.字符型和数值型.其中数值型又分为整型和浮点型.Java的基本数据类型(8种)为布尔型boolean(1字节):字符型char(2字节):整型byte(1字节).s ...

  6. Java 常用知识点汇总(数据类型之间转换、字符串的相关操作-截取、转换大小写等)

    1.Java四类八种数据类型 byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围- ...

  7. Java基础数据类型二进制转换

    前言: 本文主要介绍java基础类型的二进制转换和二进制的基本概念. 二进制: 1,二进制是以0和1为码,逢2进1,比如3=11=1*2+1. 2,在计算机当中其它进制的算法基本基于2进制,因为计算机 ...

  8. java的数据类型的转换

    一:java的数据类型转换除布尔类型boolean(不能转换)有两种:<一> 自动转换: <二> 强制转换 <一>.自动转换:就是将小的数据类型自动转换成大的数据类 ...

  9. Lua 数据类型和 Redis 数据类型之间转换

    当 Lua 通过 call() 或 pcall() 函数执行 Redis 命令的时候,命令的返回值会被转换成 Lua 数据结构. 同样地,当 Lua 脚本在 Redis 内置的解释器里运行时,Lua ...

随机推荐

  1. XMLHttpRequest 请求java部署的webservice 跨域问题

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <html> <hea ...

  2. MVVM模式的几个开源框架

    原文:MVVM模式的几个开源框架 实现MVVM的框架有很多,如: • MVVM Light Toolkit: http://mvvmlight.codeplex.com • Microsoft Pri ...

  3. HTTP、FTP状态码 汇总

    原文:HTTP.FTP状态码 汇总 HTTP1xx - 信息提示(这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应. ) • 100 - 继续.• 101 - ...

  4. Socket小白篇-附加TCP/UDP简介

    Socket小白篇-附加TCP/UDP简介 Socket 网络通信的要素 TCP和UDP Socket的通信流程图 1.Socket 什么是Socket Socket:又称作是套接字,网络上的两个程序 ...

  5. Redis 高可用之哨兵模式

    参考   : https://mp.weixin.qq.com/s/Z-PyNgiqYrm0ZYg0r6MVeQ 一.redis高可用解决方案 redis主从 优点:1.高可靠性,主从实时备份,有效解 ...

  6. 使用dumpbin命令查看dll导出函数及重定向输出到文件(VS自带)

    以前查看dll导出函数,一般使用Viewdll等第三方工具.但由于Viewdll采用dephi编写,因此仅能查看32位的dll.其实微软已经帮我们提供一个查看dll导出函数的命令,嵌在VS开发环境中, ...

  7. PHP 的异步并行 C 扩展 Swoole

    PHP的异步.并行.高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列, ...

  8. 推荐一个第三方Qt库的集合 good

    https://inqlude.org/ Stable libraries | Development versions | Unreleased | Commercial | All attica ...

  9. Android和IOS启动第三方地图APP

    最近客户新提了需求,地址字段要能通过第三方的地图进行定位,于是对Android和IOS端进行了调整. 以下是调用地图部分的代码. android可按照包名来判断app是否存在: 方法: /* * ch ...

  10. Cleanmymac X 4.4.3 激活破解版|兼容mac最新系统-Mac电脑清理工具

    CleanMyMac X 4.4.3 激活破解版为最新版清理工具,为你所爱的东西腾出空间.CleanMyMac拥有一系列巧妙的新功能,它可以安全.智能地扫描和清理整个系统,删除大的未使用的文件,卸载不 ...