黑马程序员技术交流社区
标题:
字符串转换成其他数据类型的问题
[打印本页]
作者:
lily
时间:
2011-9-3 17:24
标题:
字符串转换成其他数据类型的问题
字符串转化成其他数据的方法有:
1、转化为boolean型: Boolean("true").booleanValue();
2、转化为int 型: Integer.ParseInt("123");
2、转化为float 型: Float.parseFloat("345.23");
但是以下程序中,为什么转化为boolean型,需要在方法前加new,而转化为其他类型不能加new呢?
import java.io.*;
public class test {
public static void main(String [] args) throws IOException
{
InputStreamReader iin=new InputStreamReader(System.in);
BufferedReader bin=new BufferedReader(iin);
String s;
float f;
int i;
boolean b;
System.out.println("输入任意字符串");
s=bin.readLine();
System.out.println("输入浮点数");
f=Float.parseFloat(bin.readLine());
System.out.println("输入整数");
i=Integer.parseInt(bin.readLine());
System.out.println("输入布尔量");
b=
new
Boolean(bin.readLine()).booleanValue();
System.out.println("输入的字符串"+s);
System.out.println("输入的浮点数"+f);
System.out.println("输入的整数"+i);
System.out.println("输入的布尔量"+b);
}
}
作者:
李叶
时间:
2011-9-3 17:41
呵呵,要弄懂这个问题,你首先要弄明白静态方法和非静态方法的区别
用一句最简单的话说,它们的主要区别有两点:
1、静态方法就是前面有static修饰的方法;非静态方法就是前面没有static修饰的方法
2、静态方法可以直接用
类名.方法名()
的方式调用,也只能以类名.方法名的方式调用
而非静态方法必须
先创建对象
,然后以
对象.方法名()
的方式调用
(在这里为了简单起见,我就不讲解类和对象的关系以及static的实现原理了呵呵)
所以,现在看一下你的代码吧:[code=java]System.out.println("输入整数");
i=Integer.parseInt(bin.readLine());
System.out.println("输入布尔量");
b=new Boolean(bin.readLine()).booleanValue(); [/code]在第2行和第4行中我们可以看到
你在获取一个Integer类型的值的时候,你是通过parseInt()方法来获取的
而你在获取一个Boolean类型的值的时候,你是通过booleanValue()方法来获取的
但是由于parseInt()和booleanValue()这样的方法都是由JAVA的类自己提供的
那么你怎么知道它们里面的方法哪些是静态方法,哪些是非静态方法呢?
答案很简单:去查阅API,在API中会把每个类中的每个方法解释的非常清楚
通过查阅API我们可以知道,
Integer类中的parseInt()方法是个静态方法
而Boolean类中的booleanValue()方法是个非静态方法
所以,在你使用parseInt()方法的时候,你就可以直接使用Integer.parseInt()来使用
而你在使用booleanValue()方法的时候,你必须要先创建出一个Boolean的对象
也就是new Boolean()之后,才可以调用这个对象的booleanValue()方法
以上的讲解对很多知识点都没有展开解释,如果你还有对哪里不懂的话,就继续提出来吧~
[
本帖最后由 李叶 于 2011-09-03 17:47 编辑
]
作者:
匿名
时间:
2011-9-3 17:43
标题:
回复 楼主 的帖子
方法没用对啊,
b = Boolean.valueOf(bin.readLine());
这个就不用new
作者:
匿名
时间:
2011-9-3 18:01
[quote] 原帖由 [i]李叶[/i] 于 2011-09-03 17:41 发表 [url=http://bbs.itheima.com/redirect.jsp?goto=findpost&pid=8836&ptid=1361][img]http://bbs.itheima.com/images/common/back.gif[/img][/url]呵呵,要弄懂这个问题,你首先要弄明白静态方法和非静态方法的区别
用一句最简单的话说,它们的主要区别有两点:
1、静态方法就是前面有static修饰的方法;非静态方法就是前面没有static修饰的方法
2、静态方法可以直接用类名.方法名()的方式调用,也只能以类名.方法名的方式调用
而非静态方法必须先创建对象,然后以对象.方法名()的方式调用
(在这里为了简单起见,我就不讲解类和对象的关系以及static的实现原理了呵呵)
所以,现在看一下你的代码吧:System.out.println("输入整数");
i=Integer.parseInt(bin.readLine());
System.out.println("输入布尔量");
b=new Boolean(bin.readLine()).booleanValue(); 在第2行和第4行中我们可以看到
你在获取一个Integer类型的值的时候,你是通过parseInt()方法来获取的
而你在获取一个Boolean类型的值的时候,你是通过booleanValue()方法来获取的
但是由于parseInt()和booleanValue()这样的方法都是由JAVA的类自己提供的
那么你怎么知道它们里面的方法哪些是静态方法,哪些是非静态方法呢?
答案很简单:去查阅API,在API中会把每个类中的每个方法解释的非常清楚
通过查阅API我们可以知道,
Integer类中的parseInt()方法是个静态方法
而Boolean类中的booleanValue()方法是个非静态方法
所以,在你使用parseInt()方法的时候,你就可以直接使用Integer.parseInt()来使用
而你在使用booleanValue()方法的时候,你必须要先创建出一个Boolean的对象
也就是new Boolean()之后,才可以调用这个对象的booleanValue()方法
以上的讲解对很多知识点都没有展开解释,如果你还有对哪里不懂的话,就继续提出来吧~ [/quote]
已经很详细了,谢谢,受教了。
作者:
匿名
时间:
2011-9-3 18:02
[quote] 原帖由 [i]李治[/i] 于 2011-09-03 17:43 发表 [url=http://bbs.itheima.com/redirect.jsp?goto=findpost&pid=8837&ptid=1361][img]http://bbs.itheima.com/images/common/back.gif[/img][/url]方法没用对啊,
b = Boolean.valueOf(bin.readLine());
这个就不用new [/quote]
貌似这个方法用在这里报错,识别不了valueOf()方法
作者:
匿名
时间:
2011-9-3 18:17
标题:
回复 报纸 的帖子
什么情况啊,怎么报错
作者:
匿名
时间:
2011-9-3 18:19
static Boolean valueOf(boolean b)
返回一个表示指定 boolean 值的 Boolean 实例
这个方法的参数是一个boolean值,可是从命令行输入的都是以字符串处理的,所以这个方法这样用是不行的
作者:
匿名
时间:
2011-9-3 18:25
标题:
回复 7 # 的帖子
public static Boolean valueOf(String s)返回一个用指定的字符串表示值的 Boolean 值。如果字符串参数不为 null 且在忽略大小写时等于 "true",则返回的 Boolean 表示 true 值。
你没看重载方法?
作者:
匿名
时间:
2011-9-3 18:54
valueOf有2种参数形式的,从参数形式来看是应该没错,但是编译的话 报错
I:\test.java:28: incompatible types
found : java.lang.Boolean
required: boolean
b=Boolean.valueOf("123");
说是不兼容的形式
作者:
匿名
时间:
2011-9-3 20:26
标题:
回复 9 # 的帖子
boolean类型,当然只能是true,或者false了
作者:
匿名
时间:
2011-9-3 21:06
[quote] 原帖由 [i]李治[/i] 于 2011-09-03 20:26 发表 [url=http://bbs.itheima.com/redirect.jsp?goto=findpost&pid=8854&ptid=1361][img]http://bbs.itheima.com/images/common/back.gif[/img][/url]boolean类型,当然只能是true,或者false了 [/quote]
这个函数是允许接受String类型的阿 ,再说了我本来就是要把String的类型转化为boolean类型,如果直接输入boolean,就没有必要转化了 。如果输入true,或者false的String形式也是不行的,再者就是如果用b=new Boolean(bin.readLine()).booleanValue();即使不输入输入true,或者false的String形式,也是可以运行的,只是结果是false .
作者:
匿名
时间:
2011-9-3 21:53
标题:
回复 11 # 的帖子
我说的true或者false就是字符串形式,既然不输入true,或者false的String形式,也是可以运行的,只是结果是false ,那你要的就是b = Boolean.parseBoolean(bin.readLine());
这个方法了。
作者:
匿名
时间:
2011-9-3 22:46
哦,没有找到这个方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2