Java 不使用局部变量chaine2的值
我收到此错误消息:Java 不使用局部变量chaine2的值,java,Java,我收到此错误消息:未使用局部变量chaine2的值 守则: package com.example.Projet_java; public class MyFirstClass { public static void main(String[] args) { { String chaine = new String("HELLO"), chaine2 = new String(); chaine2 =
未使用局部变量chaine2的值
守则:
package com.example.Projet_java;
public class MyFirstClass
{
public static void main(String[] args) {
{ String chaine = new String("HELLO"),
chaine2 = new String();
chaine2 = chaine.toLowerCase();
}
}
}
我试着遵循下面的思路
但是没有成功
有人知道我如何修复它吗?您正在将一个对象设置为
chaine2
chaine2 = new String();
但是您会在下一行覆盖它,所以之前创建的空字符串不会用于任何内容
chaine2 = chaine.toLowerCase();
编译器发现它很奇怪,因为第一行是无用的,并且在逻辑错误的情况下警告您(尽管它是一个正确的程序,并且将正确编译和运行)
chaine2=new String()
是冗余的。删除那个chaine2
的值,而当前您没有使用该值。例如,打印出来这是
chaine2=newstring()
您正在将一个新的String()
分配给chaine2
,然后在下一行使用chaine2=chaine.toLowerCase()重新分配时立即丢弃它代码> 这是一个警告,而不是错误。这是编译器通知您创建从未使用过的变量的方式。这个变量是无用的,所以创建它没有意义。如果您正在学习Java,您可以忽略此警告,因为它不会阻止您的代码被编译和执行。这只是给你的一个提示:“嘿,你有一个不用的变量!也许你遗漏了什么?”局部变量chaine2的值没有被使用
是一个警告,而不是一个错误
您的IDE表示您从不使用变量chaine2
,也就是说,您既不在其他操作中使用它,也不将它存储在任何位置,也不在屏幕上打印它或任何东西。。。无论如何,您的代码将运行
尽管在其他答案中有这样的说法,但警告对于那些可能导致错误的事情是非常有用的通知,因此在编程时它们非常有用,因为您的IDE会注意到您可能没有注意到的问题。因此,在学习Java时不应该丢弃它们
编辑:如果您想获得小写的字符串“HELLO”,请不要再搜索。。。你说对了!唯一的一点是,您将它存储在一个变量chaine2
中,但您不使用它做任何事情。。。
只要做:
您将看到结果打印在控制台上。学习一种特定的语言,即使是在一开始,也不应该让程序员忘记仔细设计其算法。您的算法应该始终是尽可能最佳的
Moderns IDE帮助您不要忘记;)=>一个无用的变量?(因为在您的情况下,chaine2
在初始化后根本不使用)=>丢弃它
因此,即使是对于一个简单的“Hello World”算法,您也应该真正注意您喜爱的IDE(或其他来源)发出的任何警告。这是IDE提供的一个指示器,告知您在这种情况下可能拥有一个无用的变量chaine2
。顺便说一句,这不是编译错误。你是如何阅读该链接而不理解你的问题的?我从未见过比这更荒谬的大括号放置方式,而且,信不信由你,这不是偶然的。即使删除了=new String()
,编译器也会不断抱怨。OP未以任何方式使用chaine2
的值,无论是第一个值还是第二个值。-1,用于建议忽略警告。他们告诉你一些你应该注意的事情,尤其是在你学习的时候。他们试图告诉你,你做了错事;仅仅因为它仍在编译和运行,并不意味着可以安全地忽略它。(它们永远不应该被忽略-它们被称为警告,而不是出于某种原因的提示。)好吧,你是一个理想主义者:)事实上,有时你必须忽略编译器警告-例如,当从ObjectInputStream读取序列化集合时。“未选中强制转换”警告无法执行任何操作。在我看来,在学习Java时忽略“未使用的”警告是很常见的:您正在创建大量的变量,而这样的警告并不重要。然后,您就做出了关于忽略警告的明智决定。这与一般性的“你可以忽略警告”不同,给一个明显的初学者这个建议绝对是糟糕的建议。(它们不称为“建议”或“提示”-之所以选择它们的名称表示潜在危险是有原因的。)谢谢你的建议,我真的很感激,并会记住这一点。很抱歉我的无知,但有人能给我写下关于上述代码的正确代码,以获得小写形式的字符串HELLO吗?即使我删除了“chaine2=new string();”,我仍然有消息。谢谢你的帮助他没有使用第二个值,也可以。但是在toLowerCase()
赋值之后使用它将使该赋值消失;第一个仍然存在。如果在toLowerCase()
之后不使用它,那么整个代码将变得毫无意义,您甚至不应该在一开始就费心编译和运行它。:-)是的,你已经准确地描述了它是怎样的。非常感谢你的回答!!谢谢大家对警告的建议!
System.out.println("Printing chaine2: " + chaine2);