0
我试图从网页读取标题并将其保存为字符串。但是,由于字符串在Java中是不可变的,所以我不能将它设置为null,并在需要时将其更改。因此,我在strTitle
可能尚未初始化的最后一行发生错误。这似乎应该很容易处理,但我无法弄清楚。提前致谢。在声明的地方初始化的字符串
URL allRecipe = new URL(inputLine); //user defined url
BufferedReader urlIn = new BufferedReader(
new InputStreamReader(allRecipe.openStream()));
String inputFromWeb;
//loops through webpage and finds title
while((inputFromWeb = urlIn.readLine()) != null){
//getting title
if(inputFromWeb.contains("<title>")){
strTitle = urlIn.readLine();
}
}//end while
urlIn.close();
//print out title
System.out.println("Title:");
System.out.println(strTitle); //this line returns the error
System.out.println("\n");
哦,谢谢!我不知道。我认为字符串一旦被声明就不能以任何方式改变。我想我应该尝试一下。 是这样的情况,因为将字符串的值设置为null并不算作初始化它,因为null不是一个真正的值? – PsylentKnight 2014-10-11 02:36:09
@PsylentKnight它与将其设置为null无关。你也可以写'String s =“x”; s =“y”;'在这种情况下,你并没有将字符串的值从“x”改变为“y”,而是将一个新的字符串赋值给s变量。 – Eran 2014-10-11 02:37:50
显然我并没有完全理解字符串不变性的整个概念。我读了更多,我想我现在就明白了。据我了解,上一次评论中的代码会引用不同的内存位置,将旧的内存位置留在后面,成为垃圾,然后由java处理。 – PsylentKnight 2014-10-11 02:51:24