精华内容
下载资源
问答
  • java的类型转换

    千次阅读 2004-09-22 10:45:00
    字符串型转换成各种数字类型: String s = "169"; byte b = Byte.parseByte( s ); short t = Short.parseShort( s ); int i = Integer.parseInt( s ); long l = Long.parseLong( s ); float f = Float.parseFloat( s...

    字符串型转换成各种数字类型:

    String s = "169";
    byte b = Byte.parseByte( s );
    short t = Short.parseShort( s );
    int i = Integer.parseInt( s );
    long l = Long.parseLong( s );
    float f = Float.parseFloat( s );
    double d = Double.parseDouble( s );

    数字类型与数字类对象之间的转换:

    byte b = 169;
    Byte bo = new Byte( b );
    b = bo.byteValue();

    short t = 169;
    Short to = new Short( t );
    t = to.shortValue();

    int i = 169;
    Integer io = new Integer( i );
    i = io.intValue();

    long l = 169;
    Long lo = new Long( l );
    l = lo.longValue();

    float f = 169f;
    Float fo = new Float( f );
    f = fo.floatValue();

    double d = 169f;
    Double dObj = new Double( d );
    d = dObj.doubleValue();  

    展开全文
  • 文章目录关于Java的两种类型转换:强类型转换隐式类型转换 关于Java的两种类型转换: 第一种是强类型转换,第二种是弱类型转换. 每种类型转换都存在着一定的风险,只有清晰地去认识它们,才能够少犯错误 强类型转换 强...

    关于Java的两种类型转换:

    第一种是强类型转换,第二种是弱类型转换.
    每种类型转换都存在着一定的风险,只有清晰地去认识它们,才能够少犯错误

    强类型转换

    强类型转换出现的有效位数低位数据丢失(将出现逻辑错误)、范围的高位溢出(将出现异常).
    这些错误是由程序员负责的,这就需要我们在进行强制类型转换的时候,要多加注意

    下面让我们看一下低位丢失和高位溢出的情况

    public class demo {
    	public static void main(String[] args) {
    		int x;
    		float y=11111111111.0f;
    		x = (int)11.1 +(int)22.2; //低位丢失
    		System.out.println(" "+x);
    		x = (int)y;
    		System.out.println(" "+x);
    	}
    }
    

    结果为:
    在这里插入图片描述
    对于低位丢失,应该很好理解,不少朋友也知道高位溢出是怎么回事,就是容量不够了呗,那么解释为什么结果是2147473647却说不太清楚
    那么让我们详细看看这是什么情况

    我们知道int在任何操作系统上的Java都是4个字节,也就是32位
    二进制范围: -2^31 ~ 2^31 – 1
    十进制范围: -2147483648 ~ 2147483647
    最大十进制有效位数:10(整数部分最多不超过10位,多于10位的数字强制转化为int类型,就会出现高位溢出)


    类似的:
    byte(1字节) D7----------------D0
    采用补码存储
    二进制范围: -27 ~ +(27 – 1)
    十进制范围: -128 ~ 127
    最大十进制有效位数: 3

    short(2字节) D15----------------D0
    采用补码存储
    二进制范围: -215 ~ +(215 – 1)
    十进制范围: -32768 ~ 32767
    最大十进制有效位数: 5

    int(4字节) D31----------------D0
    采用补码存储
    二进制范围: -231 ~ +(231 – 1)
    十进制范围: -2147483648 ~ 2147483647
    最大十进制有效位数: 10

    long(8字节) D63----------------D0
    采用补码存储
    二进制范围: -263 ~ +(263 – 1)
    十进制范围: -9223772036854775808 ~ 9223772036854775807
    最大十进制有效位数: 19

    char(2字节) D15----------------D0
    采用无符号存储:unsigned short
    二进制范围: 0 ~ +(216 – 1)
    十进制范围: 0 ~ 64335
    最大十进制有效位数: 5

    float(4字节) D15----------------D0
    采用IEEE754单精度浮点数格式存储
    最大二进制有效位数: D23----------------D0
    最大十进制有效位数: 8

    double(8字节) D63----------------D0
    采用IEEE754双精度浮点数格式存储
    二进制范围:
    最大值为1 x (253 - 1) x 2971
    最小为1 x 2-1074
    十进制范围:
    最大值为±1.7976931348623157 x 10308,
    最小为±5 x 10-324
    Number.MAX_VALUE:1.7976931348623157 x 10308 (最大表示数,理解为最大值)
    Number.MIN_VALUE:5 x 10-324 (最大\小表示数,理解为最小值)
    Number.NEGATIVE_INFINITY:-Infinity
    Number.POSITIVE_INFINITY:Infinity
    Number.NaN:NaN
    最大二进制有效位数: D53----------------D0
    最大十进制有效位数: 17

    隐式类型转换

    所谓隐式类型转换就是下图的规则:
    image

    高位不会出现溢出,但是可能出现有效位数低位丢失(如下图中的虚线所示),将隐式出现逻辑错误由程序员负责。
    虚线的地方 要多加注意
    注意整型(long) 与 float类型 一同运算的时候,要将long类型转换成float类型


    上面这张图是我们引入的模型
    y 表示最大十进制的位数
    x 表示二进制的有效位数
    比如说 float类型
    image
    尾数位的23位为二进制的有效位数 第32位是符号位,紧挨着的8位是 指数位
    对于 int 类型第32位是符号位 其它31位是二进制的有效位数
    int 2进制的有效位数 > float 2进制的有效位数
    但是 int 最大十进制有效位数 小于 float 最大十进制有效位数 (也就是int 最大值 < float 最大值)
    通俗点讲:
    拿31位的有效位数字放到23位的有效数字中肯定不行呀
    但是要注意的是int 值总的范围大小是2的32次方,而float类型因为有8位指数位,所以要大得多.

    建立下面模型:
    image
    同理:
    image

    隐式类型转换可能出现低位丢失情况:
    1、运算表达式
    x(int) + y(float)
    2、赋值表达式
    y(float) = x(int)7
    上面介绍过了

    开始介绍下面的
    3、方法调用,实参到形参的传递
    方法定义:f( float y )
    方法调用:o.f(x(int) )

    举个例子:

    //Application.java
    class Person {
     
    	int ID;
    	int age;
     
    	Person(int ID,int age) {
    		this.ID = ID;
    		this.age = age;
    	}
     
    	void intfloat(int x,float y) {
    		System.out.println("float y =" + y + ",int x=" + x);
    	}
    	
    }
     
    public class Application {
     
    	public static void main(String[] args) {
    		Person p = new Person(1,21);
     
    		int x = 12345678;
    		float y = 0;
     
    		System.out.println("------------int,float均在重叠范围---------------");
     
    		//1.赋值表达式
    		//输出:float y = 1.2345678E7,int x = 12345678
    		y = x;
    		System.out.println("float y =" + y + ",int x=" + x);
     
    		//2.算术运算表达式
    		//输出:float y = 1.2345678E7,int x = 12345678
    		y = 0;
    		y = y + x;
    		System.out.println("float y =" + y + ",int x=" + x);
     
    		//3.方法调用表达式实参到形参的传递
    		//输出:float y = 1.2345678E7,int x = 12345678
    		p.intfloat(x,x);
     
     
    		System.out.println("------------int,float不在重叠范围---------------");
     
    		x = 123456789;
    		y = 0;
     
    		//1.赋值表达式,出现低位丢失,丢失时的四舍五入
    		//输出:float y = 1.23456792E8,int x = 123456789
    		y = x;
    		System.out.println("float y =" + y + ",int x=" + x);
     
    		//2.算术运算表达式,出现低位丢失,丢失时的四舍五入
    		//输出:float y = 1.23456792E8,int x = 123456789
    		y = 0;
    		y = y + x;
    		System.out.println("float y =" + y + ",int x=" + x);
     
    		//3.方法调用表达式实参到形参的传递 ,出现低位丢失,丢失时的四舍五入
    		//输出:float y = 1.23456792E8,int x = 123456789
    		p.intfloat(x,x);
    	}
    }
    

    image
    这是结果

    展开全文
  • ``` ...import java.io.BufferedReader;...import java.io.BufferedWriter;...隔空for循环行报错:类型不匹配:不能从元素类型 Object 转换为 Map.Entry 不知如何解决 以及为何会报错。望解惑 万分感谢!
  • Java基本数据类型转换java基本类型转换优先级转换类型1. 自动类型转换: 编译器自动完成类型转换,不需要再程序中编写代码转换规则: 从存储范围小的类型到存储范围大的类型具体规则 : byteàcharàshortàintàlong...

    Java基本数据类型转换与java基本类型转换优先级

    转换类型

    1.      自动类型转换: 编译器自动完成类型转换,不需要再程序中编写代码

    转换规则: 从存储范围小的类型到存储范围大的类型

    具体规则 : byteàcharàshortàintàlongàfloatàdouble

    2.      强制类型转换: 强制编译器进行类型转换,必须在程序中编写代码

    转换规则: 从存储范围大的类型存到储存范围小的类型

    具体规则: doubleàfloatàlongàintàshortàcharàbyte

    Ps: Boolean 不是数字类型,所以基本类型转换不包含boolean

     

    展开全文
  • java基本数据类型的转换

    万次阅读 2020-07-03 10:39:12
    java基本数据类型转换自动类型转换强制类型转换 自动类型转换 举例:多种不同数据类型一起运算 解释:有多种类型数据混合运算时,系统首先自动将所有数据转换成容量最大那个数据类型,然后再进行计算。 ...

    java基本数据类型的转换

    自动类型转换

    在这里插入图片描述
    举例:多种不同的数据类型的一起运算
    在这里插入图片描述
    解释:有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那个数据类型,然后再进行计算。

    举例:单个字符类型与数据类型的一起运算
    在这里插入图片描述
    解释:ASCII码(上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一的规定。这被称为ASCII码。ASCII码一共规定了128个字符的编码,比如空格"space"是32(二进制00100000)),大写的字母A是65(二进制01000001)
    char类型的数据在数字进行数学运算的时候,它是转换为对应的ASCII码的值然后再进行的计算
    所以也不难理解字符与数值相加的结果是一个数值了。

    举例:字符串类型与数据类型的一起运算
    在这里插入图片描述
    解释:当把任何基本类型的值和字符串进行连接运算的时候(+),基本类型的值将自动转化为字符串类型。
    为了大家加深理解,再看一个例子
    在这里插入图片描述
    解释:前面是纯数字,所以可以相加,但是后又遇见了"hello"字符串,再由加号就是字符串拼接

    在这里插入图片描述

    强制类型转换

    在这里插入图片描述在这里插入图片描述
    数字类型的运算规则:
    ①有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型。然后再进行计算。数字类型的从小到大分别是byte,int,long,float,double.
    ②数字类型的运算中,多个相同类型变量参与的运算,变量要先转换为相对应的数据类型的默认类型(比如两个byte类型的变量相加,会先把两个byte类型的变量转换默认的int类型之后再计算,得到的结果是int类型)。这种情况适用于变量的数据类型的容量比默认类型的容量小,(比如byte,short,都比int小)
    ③byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。

    记录自己最近学习到的东西,做一个总结,希望大家喜欢,一起加油!

    展开全文
  • java 强制类型转换

    千次阅读 2017-04-20 23:57:24
    最近在做网络请求数据解析时,在考虑是用范型还是强制类型转换,范型是从java1.5出来,好处是安全简单,可以将运行时错误提前到编译时错误,但是如果用范型话,我需要每一个网络请求,都写一个类,感觉好麻烦...
  • Java数据类型转换

    千次阅读 2016-08-30 20:33:38
    Java数据类型转换 在说明数据类型转换(下简称类型转换)之前,得先说明什么是数据,数据可不仅仅是一个值,而是包括描述数据种类(数据类型)、值以及基于其类型基础上可进行操作集合。从类型A转换到类型B,...
  • java强制类型转换

    千次阅读 2018-10-28 11:54:48
    Java 中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论后者,也就是引用数据类型强制类型转换。 在 Java 中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需要...
  • Java语言允许某个类型引用变量引用子类实例,而且可以对这个引用变量进行类型转换。如果把引用类型转换为子类类型,则称为向下转型;如果把引用类型转换为父类类型,则称为向上转型。 例如,Creature 类表示生物...
  • 1.背景 在Java中,之所以需要强制类型转换是为了防止程序员在不知情情况下把A类型数据错当成B类型数据。将一种类型值赋给另一个类型变量是很常见,如果这两种是兼容,那么Java将执行自动转换,例如int...
  • 数据类型转换是在所赋值数值类型和被变量接收数据类型不一致时发生,它需要从一种数据类型转换成另一种数据类型。数据类型转换可以分为隐式转换(自动类型转换)和显式转换(强制类型转换)两种。 隐式...
  • java 类型转换

    千次阅读 2019-01-10 14:35:03
    基本数据类型的Casting: 自动类型转换:小的转换大的 如long s = 20;...从子类到父类的类型转换可以自动进行(多态) 从父类到子类的类型必须通过造型(强制类型转换)实现 无继承关系的的引用类型间的...
  • java自动类型转换与强制类型转换

    千次阅读 2018-02-03 16:41:40
    自动类型转换就是自发进行,你可以从输出结果看出,外表是看不出来。我们知道数据类型有很多种,大小也不一样,就像水桶似,有1升,2升,4升,自动类型转换就相当于把小水桶里面水装到大里面去...
  • java类型转换

    千次阅读 2018-07-02 15:27:03
    类型转换Java的类型转换可以分为13种,1 标识转换 是最简单的就是同种类型之间的转换。2 拓展简单类型转换 拓展简单类型转换涉及到基本数据类型,比如byte转换为short,int,long,float,double;short转换为int,long...
  • 前几天一个项目需要解析自定义二进行LOG格式,因LOG文件为C语言写入,数据结构与JAVA不能完全匹配(最典型是C中unsigned类型与JAVA整型之间),引如下转换方式,备考:一、JAVA进制类型转换十进制转成十六...
  • java 数据类型转换

    千次阅读 2018-11-20 11:20:32
      本博文部分原创,部分转载整理,侵删!...数据类型的转换遵循原则:范围小数据类型,可以转换成范围大数据类型。eg:byte转int。范围大数据类型不可以转换成范围小数据类型。 jav...
  • Java 数值类型转换

    千次阅读 2020-03-10 14:03:53
    实际编程中,经常需要将一种数值类型转换为另一种数值类型 以下是转换合法规范: 例如: int n = 123456789; float f = n; // f is 1.23456792E8 当使用上面两个数值进行二元操作时(例如 n + f, n 是整数, f...
  • Java 类型转换

    万次阅读 2019-05-17 08:11:26
    一、自动类型转换(隐式类型转换) 整型、实型(常量)、字符型数据可以混合运算。不同类型数据先转化为同类型再进行运算 自动转换按从低级到高级顺序: char ↓ Byte→short→int→long---›float→double ...
  • Java 强制类型转换

    2019-01-09 10:25:20
    强制类型转换的语法格式是在圆括号中给出想要转换目标类型,后面紧跟带转换变量名。例如: double x = 9.997; int nx = (int)x; 这样,变量nx值为9。强制类型转换通过截断小数部分将浮点值转换为整型。 ...
  • java的自动类型转换和强制类型转换

    千次阅读 2015-05-18 19:08:46
    一、自动类型转换Java 程序中,不同基本数据类型数据之间经常需要进行相互转换。...当然自动类型转换是需要满足特定条件:目标类型大于元类型 二、强制类型转换 当程序中需要将 do
  • Java自动类型转换和强制类型转换

    千次阅读 2014-11-03 21:40:22
    1.容量小数据类型可以自动...2.数据自动类型转换: cast:转型 long型可以自动转换成float但是可能丢失精度。 int型转换为char型需要强制转型。 但是char型转成int是不需要强制转换。 3.表达式中类型提升问题。
  • Java数据类型转换全解

    2012-07-30 09:12:21
    Java数据类型转换全解 ...我们知道Java语言是典型支持面向对象程序语言,但考虑到有些基本Java数据类型...本文向大家描述一下Java数据类型转换Java语言的Java数据类型有两大类:一类是简单类型,也称主要类型
  • 本文为你介绍Java中类型转换和强制类型转换的实现过程。...然而,不是所有的类型都是兼容的,因此,不是所有的类型转换都是可以隐式实现的。例如,没有将double 型转换为byte 型的定义。幸好,获得不兼容的类型之间的转
  • Java引用类型强制类型转换

    千次阅读 2018-07-22 22:30:10
    正如有时候需要将浮点型的... 编写Java程序时,引用类型只能调用声明该变量的类型的方法,也就是编译时类型的方法,不允许调用运行时类型所定义的方法,即使它实际所引用的对象包含该方法。解释一下就是我们说的...
  • JAVA数据类型转换规则

    千次阅读 2019-05-24 11:18:23
    数据类型转换的规则 除布尔型以外其它七种类型都可相互转换 小容量向大容量类型转换,称为自动转换。 大容量向小容量类型转换,称为强制转换。需要加强制类型转换符,程序才能编译通过。但会损失精度。 当整数字...
  • Java的强制类型转换与隐式类型转换

    千次阅读 2015-10-18 10:58:54
    隐式类型转换1.Java8大基本数据类型java基本数据类型就8种,除了这些都是引用型了。java四类八种基本数据类型: 第一类:整型 byte short int long 第二类:浮点型 float double 第三类:逻辑型 boolean(它...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,816
精华内容 17,926
关键字:

java的类型转换

java 订阅