javastring强转int_java将string转化为int
bigdecimal转换为integer问题⼀:如何将数字类型的字符串转化为int类型。因为之前对该部分认识不够清晰,特作分析。
String str = "100";
Integer.parseInt(str);
Integer.valueOf(str);
(int)str;
对于上⾯的3种转化⽅式,
第⼀种
Integer.parseInt(str);
刚开始想当然的以为其转化为Integer类型的,但是查完API才发现,真实情况为int。
第⼆种
Integer.valueOf(str);
虽然你在使⽤的时候可能没有问题,但是不符合其要求。因为要求将String转化为int,⽽是转化为 Integer。当然在jdk1.5之后,已可以⾃由转换,但不符合题意。
第三种
(int)str;
看着的话,我⽐对了⼀下可能性,发现相对来讲这个我曾经⽤到过其它的强制转化,相必这个也是可以的,但是现实是残酷的。我在验证的时候,发现竟然不能通过编译,整个都是我yy的。其报错的代码是Cannot cast from String to int。我想是不是基本数据类型的问题啊,试着使⽤Integer,发现还是不⾏。这个时候才意识到可能是强制类型转换的条件限制。到这个时候,竟然把基础的知识忘掉了,打啊。赶紧补上,原理如下:
强制类型转换,⼜叫造型。分为基本数据类型和引⽤数据类型两种情况。
⾃动类型转换
在运⾏程序的时候,经常需要类型转换,Java会在以下情况下,⾃动做数据类型的转换。
转换前的数据类型与转换后的类型兼容。
转换后的数据类型的表⽰范围⽐转换前的类型⼤。
引⽤类型的强制类型转换。
对于引⽤类型来说,什么是强制类型转换呢?简单地说,就是把⽗类型转换为⼦类型。因为⼦类型⽐⽗类型的内涵要丰富,⽆⾮就是属性更多功能更强,所以要把⽗类型转换为⼦类型,需要强制,所以叫强制类型转换。那么,是不是只要是⽗类型的变量就可以转换为⼦类型呢?事实上不是,这⾥是有条件限制的。
⾸先来看发⽣在什么情况下。我们⽤⼀个类型的构造⽅法构造出⼀个对象的时候,对象的类型已经确定了,就是这个类型,但是java允许我们可以不⽤这个类型的变量引⽤它,⽽使⽤它的⽗类类型,这时候情况就是我们⽤⼀个功能较弱的类型引⽤了⼀个功能较强的对象。然⽽有时候我们⼜希望这个对象完全发挥它的作⽤,就需要⽤⼀个它本⾝的类型的变量来引⽤它,因为原来那个⽗类的变量是不具备这些功能的,不能使⽤variablename.function()来使其发挥作⽤,所以还是⽤它⾃⼰的吧。问题是对象已经在内存中了,已经构造完了,你即使声明⼀个它本⾝类型的变量怎么指向它呢?答案是借助原来那个变量,就是它⽗类型的那个变量,让新的变量和原来的那个指向同⼀个对象。⽅式就是两者之间划等号。可是引⽤类型变量的相等需要两者类型相同,问题是不相同,怎么办?那就是把⽗类型的
变量强制转换成⼦类型。看到这⾥有些⼈可能觉得写的太乱了,其实总结⼀下,就⼀句话,只有存在⽗⼦关系才可以强制类型转换。
问题⼆:
对类似String str = "00100";的字符串,转化为对应的整数?
我的想法,str.subString(str.indexOf("正则表达式获取第⼀个⾮0且⾮字母的位置"),str.length);但是,后来别⼈告诉我其实可以直接Integer.parseInt(str);的。哎,⼜长知识了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论