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).简单类型数据间的转换,有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时. 自动转换 当一个较"小"数据与一个较"大"的数据一起运算 ...
随机推荐
- 删除mysql中user为空用户,mysql空密码
进入mysql数据库 mysql -uroot -p 查看用户信息 select user,host ,Password from mysql.user; 如下图: 删除user为空用户 delete ...
- kvm虚拟机的克隆以及快照
克隆(常见有3种方法) 1 直接克隆(克隆虚拟机使用自己的磁盘) virt-clone -o vm-01 -n vm-02 -f /kvm/os/vm-02.qcow2 virsh start vm- ...
- ES6(Iterator 和 for...of 循环)
Iterator 和 for...of 循环 1.什么是 Iterator 接口 Iterator 接口功能:用一种相同办法的接口让不同的数据结构得到统一的读取命令的方式 2.Iterator的基本用 ...
- Spring☞WebApplicationContext的继承关系
spring mvc里的root/child WebApplicationContext的继承关系 在传统的spring mvc程序里会有两个WebApplicationContext,一个是pare ...
- java数据结构简单点
java常用的数据结构一 集合框架主要就是Collection和Map: 1.Collection包含了List和Set两大分支. (1)List是一个有序的集合,每一个元素都有它的索引.第一个元素的 ...
- Git上传的使用步骤
Git上传的使用步骤 首先 git branch 查看当前的分支是否为本地自己分支 接着 git stash 保存本地自己的保存 git checkout earemote 查看本地共有开发分支 gi ...
- Python和Excel
# -*- coding: UTF-8 -*- import xlwt import StringIO # 将数据保存成excel def write_data(data, tname): file ...
- UVALive 4015 树形dp
题目大意: 从一个根节点出发,走最多 x 的长度,问最多能走过多少个节点,图保证是一棵树 dp[0][i][j] , 表示走从i点为根的子树走过了j个点最后回到 i 最少需要多少时间dp[1][i][ ...
- Linux Awk使用案例总结
知识点: 1)数组 数组是用来存储一系列值的变量,可通过索引来访问数组的值. Awk中数组称为关联数组,因为它的下标(索引)可以是数字也可以是字符串. 下标通常称为键,数组元素的键和值存储在Awk程序 ...
- Java设计模式之(工厂模式)
工厂模式: 工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 简单工厂模 ...