java基础讲义(2)——基本类型的类型转换
来源:互联网 发布:js身份证算法验证 编辑:程序博客网 时间:2024/06/05 03:42
java语言有两种类型转换方式:自动类型转换和强制类型转换
一、自动类型转换
如果系统支持把某种基本数据类型的值直接赋给另一种基本类型的变量,则这种方式被称为自动类型转换。当一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统将可以进行自动类型转换。如图:
例如:
public class PrimitiveandString{ public static void main(String[] args) { //下面代码错误,因为8是一个整数,不能赋给一个字符串 //String str = 5; //一个基本类型的值和一个字符串连接运算时,基本类型的值会自动转换成字符串 String str2 = 3.5 + ""; //下面输出3.5 System.out.println(str2); //下面输出7Hello ,因为先运算3 + 4 =7 System.out.println(3 + 4 + "Hello"); //下面输出Hello34,字符串先与3运算,再与4运算 System.out.println("Hello" + 3 + 4); }}
二、强制类型转换
当试图强制把表数范围大的类型转换成表数范围小的类型时,可能会引起溢出,从而造成数据丢失,所以必须格外小心。例如:
public class NarrowConversion{ public static void main(String[] args) { int iValue = 233; //强制把一个int类型的值转换成byte类型的值 byte bValue = (byte) iValue; //输出-23,因为发生溢出 System.out.println(bValue); }}
分析:
233的32位int类型表示为:{00....000} 11101001
8位byte类型的表示: 11101001 (在计算机中为补码表示形式)
将32位int类型的233强制转换成8位的数值,则需要截断前面的24为,只保留右边8位,其中最左边的1是符号位,此处表明是一个负数,负数在计算机里以补码形式存在,因此还要换算成原码。过程如下:
补码:11101001
反码:11101000 (将补码减1得到反码)
原码:10010111 (即-23) (符号位不变,其他取反得到原码)
补充:原码是直接将一个数值换算成二进制数。但计算机以补码形式保存所有数据。补码计算规则:正数的补码和原码完全相同,负数的补码是其反码加1;反码是对原码按位取反,符号位保持不变。
- java基础讲义(2)——基本类型的类型转换
- Java基础之(十)基本类型的类型转换
- java基础 基本类型转换
- Java复习笔记(四)——Java基本类型的类型转换
- Android中的java基础(二)——装箱与拆箱及不同基本类型的比较(类型转换)
- Java学习记录(4)——基本类型的类型转换
- JAVA基本类型的类型转换
- JAVA基本类型的类型转换
- Java基本类型的类型转换
- java基本类型的类型转换
- Java基本类型与类型转换(2)——位操作: byte & 0xff
- java基础--------基本类型转换为字符串的互相转化
- Java基础应用之基本语法(自动类型转换与强制类型转换)
- Java基础——类型转换
- java基础学习——类型转换
- java基础——涉及基本类型的方法重载
- java基本类型转换
- JAVA基本类型转换
- objective-c callbacks
- Struts2学习笔记——文件上传技术
- 物以稀为贵
- Mathtype公式与文档文字对齐
- Struts2学习笔记——自定义拦截器技术
- java基础讲义(2)——基本类型的类型转换
- 如何使用Box2D和Cocos2D制作一款像Fruit Ninja一样的游戏-第1部分
- codeforces 278B New Problem 字符串查找
- UILabel
- UILabel高度自适应
- EOS工作流引擎工作原理
- Unity Application Block学习手册1
- Unity Application Block 学习手册2
- iOS 中如何添加应用自己的字体