关于Java中的类型转换

在此首先列出所有的数据类型:

(1)    整型:byte,short,int ,long

(2)    浮点型:float,double

(3)    字符型:char

(4)    字符串型:String(注意,String不属于基本数据类型)

(5)    布尔型:boolean

以上整理已经按照精度高低进行了排列(如果这个数据类型本身有精度的话)

首先应该明白,同一类型中,低精度可以直接转为高精度的数据类型,比如byte数据类型可以直接使用short数据类型接受,同理,short数据类型可以直接由int数据类型接受。高精度向低精度转换时可以通过强转实现。,所以以下只讨论不同类型的数据间的转换,以及特殊情况。

  1. 整型之间:

a)        byte,short之间的运算会自动转换为int类型,实例如图

事实证明,即使是相同的数据类型之间的计算也是会自动转为int的

b)        特殊情况:+= 和 -=的神奇之处

众所周知,定义变量short s=5;进行加运算 s=s+5;等同于s+=5;可是实际上,s=s+5;报错,这是和上面一样的道理,short,byte的运算带有自动转换,会将运算结果由short会转为int(其实char在参加运算时也是转为int),但是s+=5;不会,如图所示:

头脑风暴:设计者是不是担心运算时会产生溢出?

  1. 浮点型

a)        float和double进行运算时,会自动转为double(低精度向高精度自动转换)

b)        float和double进行运算时,会自动转为double(低精度向高精度自动转换),依此可以推出

i.              float在与比他本身精度低的数据类型(所有的整型数据:byte,short,int,long,整数常量)运算时,结果是float类型的

ii.              double与所有的整型数据类型和float类型的运算时结果都是double。原理同上。

c)         把float或者double类型转为int,short,byte时会损失精度,他会把小数点后面的数字直接省略,不会四舍五入。

d)        一个奇怪的问题,如图

箭头所指的数字小于等于5,Double输出小数点后16位

箭头所指的数字大于等于5,Double输出小数点后15位

Double类型有可能会出现精度丢失,所以在项目中应该尽量避免使用double类型的数据进行计算。

  1. 字符型

a)        字符类型转为整数类型时,是转换为他的ASCII码值。

b)        字符类型的数字如果想要转为整数类型参加计算(字符代表的实际数字),可以减去’0’。

原理:数字对应的ASCII码是连贯的

c)         字符转为浮点型原理不在赘述,字符-int-浮点。

  1. String只能转为字符数组,可以使用toCharArray()方法

也可以使用charAt()方法

  1. Int 转为String有两种方法:

时间: 2024-10-04 16:01:05

关于Java中的类型转换的相关文章

java中强制类型转换

在Java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换. 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需要强制转换.因为子类拥有比父类更多的属性.更强的功能,所以父类转换为子类需要强制.那么,是不是只要是父类转换为子类就会成功呢?其实不然,他们之间的强制类型转换是有条件的. 当我们用一个类型的构造器构造出一个对象时,这个对象的类型就已经确定的,也就说它的本质是不会再发生变化了.在Java中我们可以通过

Java中数据类型转换

1.Java的数据类型分为三大类 布尔型,字符型和数值型 其中数值型又分为整型和浮点型 2.Java的变量类型 布尔型 boolean 字符型 char 整型    byte,short,int,long 浮点型 float,double 3.数据类型转换 Java中数据类型转换分为三种,简单数据类型转换,字符串与其他类型转换,其他实用数据类型转换 (1)简单数据类型转换 在Java中,整型,实型,字符型被视为简单数据类型. 这些类型级别从低到高:(byte,short,char)-> int

c#中的里氏转换和Java中强制类型转换在多态中的应用

在c#中: 注意: 子类并没有继承父类的构造函数,而是会默认调用父类那个无参数的构造函数. 如果一个子类继承了一个父类,那么这个子类除了可以使用自己的成员外,还可以使用从父类那里继承过来的成员.但是父类永远都只能使用自己的成员,而不能使用子类的成员. 子类之间也不能互相使用对方的成员. 里氏转换的概念: 1).子类可以赋值给父类 2).如果父类中装的是子类对象,那么可以讲这个父类强转为子类对象. namespace 里氏转换_接口练习 { class Program { static void

解密Java中的类型转换问题

众所周知Java中的数据类型是强数据类型,基本数据类型之间的转换尤其固定的规则,当数据宽度比较窄的数据类型(如int)转换成数据类型比较宽的数据类型时(如double),则窄的数据类型会加宽,可以完成自动类型转换,这称为隐式转换. 如:以下代码没有任何问题,结果也是正确的,成绩不会发生变化,所不同的是成绩的精度提高了. intintScore = 96; doubledoubleScore = intScore; 那么如果试图把宽的数据类型(如double)转换成窄的数据类型(如float)时,

Java中数据类型转换问题

boolean类型不可以转换为替他的数据类型. Java中byte(8位).short(16位).char三种类型的优先级是相同的,相同优先级之间是不能进行自动转换的(如果相互转换的话,必须强制类型转换),只能将低类型自动转换为高类型,例如,可以将byte自动转换为int类型.(char 在java中是2个字节.java采用unicode,2个字节(16位)来表示一个字符. 再将char类型的数据赋给高优先级类型时,这时会自动类型转换,并且将该char的unicode编码赋给高优先级类型的变量)

JAVA中的类型转换

JAVA中类型转换的基本原则在于,(布尔型除外,无法转换)低精确度或者说小范围的类型可以自动地转为高精度或者大范围的类型,反之则需要强制转换.如图所示,左边的类型可以自动转换为右边的类型(一般发生在与大范围的类型的运算中),反之则需要强制转换. 图片来源(http://www.cnblogs.com/lwbqqyumidi/p/3700164.html) 如下题LeetCode 400. Nth Digit中,第七行会报错,可以看到count是long,len是int,两数相乘时len会自动变为

Java基础知识强化22:Java中数据类型转换

数据类型转换: (1). 自动转换 低级变量可以直接转换为高级变量,这叫自动类型转换.比如: byte b: int b:  long b:  float b:   double  b: 上面的语句可以在Java中直接通过. (2).如果低级类型为char型,向高级类型(整型)转换时候,会转换为对应的ASCII码值,例如: char c ='c':  int i = c:  System.out.println("output:"+i): 输出: output:99 (3).对于byt

Java基础---Java中自动类型转换(七)

Java中的自动类型转换 在 Java 程序中,不同的基本数据类型的数据之间经常需要进行相互转换.例如: , 代码中 int 型变量 score1 可以直接为 double 型变量 score2 完成赋值操作,运行结果为: 这种转换称为自动类型转换. 当然自动类型转换是需要满足特定的条件的: 1.  目标类型能与源类型兼容,如 double 型兼容 int 型,但是 char 型不能兼容 int 型 2.  目标类型大于源类型,如 double 类型长度为 8 字节, int 类型为 4 字节,

Java基础---java中强制类型转换(八)

Java中的强制类型转换 相信小伙伴们也发现了,尽管自动类型转换是很方便的,但并不能满足所有的编程需要. 例如,当程序中需要将 double 型变量的值赋给一个 int 型变量,该如何实现呢? 显然,这种转换是不会自动进行的!因为 int 型的存储范围比 double 型的小.此时就需要通过强制类型转换来实现了. 语法:( 数据类型 ) 数值 运行结果:  可以看到,通过强制类型转换将 75.8 赋值给 int 型变量后,结果为 75,数值上并未进行四舍五入,而是直接将小数位截断. 明白了吧,强

Java中数据类型转换大全(个人总结)

一.字符串转换为其他类型 1.将字符串转化为int型 (1)方法一 int i = Integer.parseInt(String str); (2)方法二 int i = Integer.valueOf(String str).intValue(); 注:Integer.parseInt和 Integer.valueOf 不同,前者生成的是整型,而后者是一个对象,所以要通过intValue()来获得对象的值: 字串转成 Double, Float, Long 的方法大同小异. 2.将字符串转化