java的自动类型转换
package BaseType;
/*java的自动类型提升和窄化转换
*
* 1. 当一个char,short,byte类型的变量被赋值给一个超出他自身能表示的最大范围的数,java会自动将该数转化为int型.
*
* 2. 当char,short,byte类型的变量进行算术运算, 位操作运算 包括他们的复合运算的时候,会自动提升成int类型
* 但是算术运算,位操作运算和他们的复合运算不同, 具体不同之处如下代码.
* 算术运算符包括:+,-,*,/,%,+(一目运算符),-(一目运算符)
* 位操作运算符包括移位运算(&,^,|),按位运算(<<,>>,>>>)
*
*/ public class AutoConversion
{ public static void main(String args[])
{
//由于int型赋值给比他表示范围小的类型,那么编译器类型检查就会报错,提示要进行强制类型转化,也就是窄化转换
//byte a = 129 ; 因为byte是8字节,表示的范围是从-128到+127, 所以赋值128会自动转化成int类型,编译器在进行类型检查就会报错,必须窄化转换为byte
byte a = (byte)129 ;
} public void byteTest(byte x , byte y)
{
x = (byte) (x*y) ; //由于x*y的结果被自动提升为int类型, 所以在重新赋值给x时,就必须使用窄化转换, 其他的算术运算符和位操作运算相同
x = (byte) (x/y) ;
x = (byte) (x+y) ;
x = (byte) (x-y) ;
x = (byte) (x%y) ; x++ ;
x-- ; x = (byte)+y ;
x = (byte)-y ; x = (byte) ~y ;
x = (byte) (x&y) ;
x = (byte) (x|y) ;
x = (byte) (x^y) ;
x = (byte) (x>>y) ;
x = (byte) (x<<y) ;
x = (byte) (x>>>y) ; x += y ;//复合运算不同, 尽管也进行了类型提升, 但是不需要窄化转换, 而且结果和使用算术运算或者位运算的结果相同, 但是具体为什么不需要,书里面也没有说,今后在接触到了再补充
x -= y ;
x *= y ;
x /= y ;
x %= y ;
x <<= 1 ;
x >>= 1 ;
x >>>= 1 ;
x &= y ;
x |= y ;
x ^= y ;
} }
《thingking in java》笔记, 如果有什么不对, 欢迎指正.
java的自动类型转换的更多相关文章
- 慕课网-安卓工程师初养成-2-9 Java中的自动类型转换
来源:http://www.imooc.com/code/1236 在 Java 程序中,不同的基本数据类型的数据之间经常需要进行相互转换.例如: , 代码中 int 型变量 score1 可以直接为 ...
- 我的Java开发学习之旅------>解惑Java进行三目运算时的自动类型转换
今天看到两个面试题,居然都做错了.通过这两个面试题,也加深对三目运算是的自动类型转换的理解. 题目1.以下代码输出结果是(). public class Test { public static vo ...
- Java中的自动类型转换
Java里所有的数值型变量可以进行类型转换,这个大家都知道,应该不需要详细解释为什么. 2 在说明自动类型转换之前必须理解这样一个原则“表数范围小的可以向表数范围大的进行自动类型转换” 3 关于jav ...
- java重载中的基本类型的自动类型转换
当传递到函数的参数的数据类型表示的范围小于函数形参的参数类型遵循如下原则 : char类型比较特殊, 直接转换为int: char ->int ->long->float-> ...
- Java自动类型转换
■ 自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型. ■ 特例:可以讲整型常量直接赋给byte,short,char等类型变量,而不需要强制类型转换,只要不超出其表数范围. ■ 强制类型 ...
- Java中的自动类型转换/隐式类型转换
整型.实型(常量).字符型数据可以混合运算.运算中,不同类型的数据先转化为同一类型,然后进行运算. 转换从低级到高级. 自动类型转换必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: sho ...
- JavaScript系列文章:自动类型转换
我们都知道,JavaScript是类型松散型语言,在声明一个变量时,我们是无法明确声明其类型的,变量的类型是根据其实际值来决定的,而且在运行期间,我们可以随时改变这个变量的值和类型,另外,变量在运行期 ...
- java中强制类型转换
在Java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换. 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需 ...
- Java基础-数据类型转换
1).简单类型数据间的转换,有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时. 自动转换 当一个较"小"数据与一个较"大"的数据一起运算 ...
随机推荐
- 定位 absolute和relative比较
absolute:脱离原来位置定位.是相对于最近的有定位的父级进行定位;如果没有有定位的父级元素,就相对文档进行定位 relative:保留原来位置进行定位,相对于自己原来的位置进行定位 下面举两个例 ...
- 手动编译openslide
1.下载openslide源代码, 2.转到openslide代码目录: ./configure 3.安装依赖库: sudo apt-get update sudo apt-get install l ...
- Luogu-P1020(导弹拦截)(DP,LIS ,二分优化)
Luogu-P1020(导弹拦截)(DP) 题意: 给n(n<=100000) 个数字,求最长不上升子序列的长度和最少的不上升子序列的个数. 分析: 第一问: 求最长不上升子序列有 O(n^2) ...
- Linux内核学习总览
断断续续学习操作系统已经有大半年时间了,一直想系统地梳理一下. 正好借助<深入Linux内核架构> (Wolfgang Manuere 著,郭旭 译)汇总一下. 首先基础框架篇,Linux ...
- Spring MVC中使用Swagger生成API文档和完整项目示例Demo,swagger-server-api
本文作者:小雷FansUnion-一个有创业和投资经验的资深程序员-全球最大中文IT社区CSDN知名博主-排名第119 实际项目中非常需要写文档,提高Java服务端和Web前端以及移动端的对接效率 ...
- 新建一个基于vue.js+Mint UI的项目
上篇文章里面讲到如何新建一个基于vue,js的项目(详细文章请戳用Vue创建一个新的项目). 该项目如果需要组件等都需要自己去写,今天就学习一下如何新建一个基于vue.js+Mint UI的项目,直接 ...
- jQuery的切换函数(hover,toggle)
1.hover:(鼠标悬停与离开事件) 一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法.这是一个自定义的方法,它为频繁使用的任务提供了一种“保持在其中”的状态. 当鼠标移动到一个匹配的 ...
- java基础语法4--封装,继承,多态
学习路线: 未封装==>封装==>继承==>多态==>抽象类 首先还是那句话,万物皆对象,对象有行为和属性. 一:封装 1.封装的概念: 信息隐蔽和对象的属性及操作结合成一个独 ...
- Docker安装redis操作命令
最近学习了redis,那么今天我们来学习以下在Docker上安装我们的redis,并查看有关redis的一系列命令 查找redis docker search redis 拉取redis docker ...
- Spring的JDBC框架概述
以下内容引用自http://wiki.jikexueyuan.com/project/spring/jdbc-framework.html: 在使用普通的JDBC操作数据库时,就会很麻烦的写很多不必要 ...