什么是解析?

37

在Java中,什么是解析?为什么要使用它们?

例如:Integer.parseInt(...)和解析字符串?

7个回答

61
你可以说,解析一个字符字符串是分析该字符串以找到标记或项,然后从结果创建结构。
在你的例子中,调用Integer.parseInt函数对一个字符串进行解析,以便从中找到一个整数。
因此,如果你有:
String someString = "123";

然后你调用:

int i = Integer.parseInt( someString );
你告诉Java分析字符串"123"并在其中找到一个整数。 另一个例子: Java编译器在编译源代码时执行的操作之一是“解析”您的.java文件并创建与Java语法匹配的标记。如果未正确编写源代码(例如忘记在语句末尾添加;),则由解析器识别错误。
更多信息请参见:http://en.wikipedia.org/wiki/Parse

2
我想知道为什么最高评分的答案不在顶部。 - Faizan
5
你的意思是什么?你确定你想要按票数排序回答吗? - Spikatrix
大家都同意这是正确的定义吗? - user6110959

37

解析是读取一个对象的值并将其转换为另一种类型。例如,您可能有一个字符串,其值为“10”。在内部,该字符串包含Unicode字符'1'和'0',而不是实际数字10。方法Integer.parseInt获取该字符串值并返回一个实数。

String tenString = "10"

//This won't work since you can't add an integer and a string
Integer result = 20 + tenString;

//This will set result to 30
Integer result = 20 + Integer.parseInt(tenString);

6
解析是读取一个对象的值并将其转换为另一种类型。这只是解析的一部分。解析是根据一组规则获取数据(文本)并确定其含义的过程。 - Lee Taylor
1
+1 用于实现。另请参见https://dev59.com/1XI-5IYBdhLWcg3wkJMA - Gajendra K Chauhan

9

来自dictionary.reference.com

计算机。分析(一串字符),以便将字符组与基础语法单元相关联。

该定义的上下文是将程序文本或语言在一般意义上转换为其组成部分,以及根据定义的语法将程序文本转换为代码。然而,在特定语言关键字的上下文中,它通常意味着将基本数据类型的字符串值转换为该数据类型的内部表示。例如,字符串“10”变成了数字(整数)10。


7
解析可以被认为是“分解成小片段”,然后分析其中的内容或以修改的方式使用。在Java中,字符串可以被解析成十进制、八进制、二进制、十六进制等形式。当你的应用程序需要从用户处以字符串形式获取输入,但在某个地方你想要将该输入以整数或双精度类型的形式使用时,就需要进行解析。这与类型转换不同。对于类型转换,所使用的类型应该是兼容的,才能进行转换。但是在解析中并没有这样的限制。

1

解析是将文本分成一组部分或标记的过程。


-1 抱歉,这个回答很难理解,并且没有提供其他答案没有涵盖的内容。欢迎来到 Stack Overflow! - Erick Robertson
虽然结构可以更好,(提交编辑后,)你的回答非常精确而且简洁明了。 - Caleb Woodman

0

解析只是分析字符串并从中找到标记的过程,解析器是解释器和编译器的组件。它使用词法分析和语法分析。它对其进行解析,然后在整个编译过程之后编译此代码。


2
你的回答有什么其他回答没有提供的东西吗? - Austin Henley

0

解析意味着我们具体分析一个对象。例如,当我们在搜索引擎中输入一些关键词时,它们会解析这些关键词,并通过搜索每个单词来返回结果。因此,基本上是从文件中获取字符串并处理它以提取我们想要的信息。

使用 indexOf 示例进行解析,以计算另一个字符串中字符串的位置:

String s="What a Beautiful day!";

int i=s.indexOf("day");//value of i would be 17
int j=s.indexOf("be");//value of j would be -1
int k=s.indexOf("ea");//value of k would be 8

parseInt 本质上将一个 String 转换为一个 Integer

String s="9876543";
int a=new Integer(s);//uses constructor
System.out.println("Constructor method: " + a);
a=Integer.parseInt(s);//uses parseInt() method
System.out.println("parseInt() method: " + a);

输出:

Constructor method: 9876543

parseInt() method: 9876543

但是它里面的“parse”是什么意思? - abhishah901

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接