问题1 :如何将数字类型字符串转换为int类型。 以前对这一部分的认识不充分,特别进行了分析。
字符串str=' 100 '; integer.Parseint(str; integer.valueof(str; (int ) str; 对于以上三种转换方式,
第一个
integer.Parseint(str; 一开始当然以为会是Integer型,但调查了一下API后发现,实际情况是int。
第二类
integer.valueof(str; 你使用的时候可能没有问题,但不符合那个要求。 因为它要求将字符串转换为Integer,而不是转换为int。 当然,从jdk1.5开始,可以自由转换,但不符合题意。
第三个
(int ) str; 看着,我比较了可能性,发现相对来说这是我用过其他强制转换,这也一定很好,但现实很残酷。 经过我的验证,我发现我竟然不能通过编译,全是我的yy。 报告错误的代码是Cannot cast from String to int。 我想是基本的数据类型问题吧,用了Integer之后才知道还是不行。 这时才意识到可能是强制类型转换条件的限制。 到了这个时候,竟然忘记基础知识,找打架。 赶紧追加的话,原理如下。
强制类型转换也称为造型。 分为基本数据类型和引用数据类型。
自动类型转换
运行程序时,经常需要类型转换。 在以下情况下,Java会自动转换数据类型:
转换前的数据类型与转换后的类型兼容。 转换后的数据类型的表现范围比转换前的类型大。 引用类型的强制类型转换。
对于引用类型,什么是强制类型转换? 简而言之,就是将父类型转换为子类型。 子类型在内涵上比父类型丰富,这意味着属性起作用更多,因此将父类型转换为子类型需要强制,因此称为强制类型转换。 那么,如果是父类型的变量,是否可以转换为子类型呢? 其实不是。 这里有条件。
我们先看看发生了什么。 当我们用类型构建方法构建对象时,对象类型已经确定,就是这个类型。 但是,在java中,可以不使用该类型的变量而使用其父类类型。 此时,我们参照的是功能弱的类型、功能强的对象。 但是,我们可能希望这个对象完全起作用,需要用它自己类型的变量引用它。 它的父类变量本来就不具有这些功能,不能使用variablename.function ()发挥作用,所以还是用它自己吧。 问题是对象已经在内存中,并且已经结构化了。 你声明本身类型的变量怎么指向它? 答案是借用原始变量(其父类型的变量),以便新变量和原始变量指向同一对象。 方式是在两者之间画上等号。 但是,引用类型变量的相等需要两者的类型相同。 问题是不同的。 我该怎么办? 那就是将父类型的变量强制转换为很棒的土豆类型。 看到这里,可能有人觉得写得一团糟,但实际上总结起来,一句话,只有有亲子关系的情况下才能强制进行类型转换。
问题2 :
String str='00100 '; 是否要将的字符串转换为对应的整数?
我的想法,str.substring(str.indexof )、str.length ); 但是后来别人告诉我其实可以直接integer.Parseint(str )。 请参阅。 诶,知识又增加了。