Java “a”是什么意思;找不到符号“;或;无法解析符号“;误差平均值?
请解释以下关于“找不到符号”、“无法解析符号”或“找不到符号”的错误(Java):Java “a”是什么意思;找不到符号“;或;无法解析符号“;误差平均值?,java,compiler-errors,cannot-find-symbol,Java,Compiler Errors,Cannot Find Symbol,请解释以下关于“找不到符号”、“无法解析符号”或“找不到符号”的错误(Java): 它们是什么意思 什么事情会导致它们 程序员如何着手修复它们 这个问题旨在对Java中的这些常见编译错误进行全面的问答。0。这两个错误之间有什么区别吗? 不是真的。“找不到符号”、“无法解析符号”和“找不到符号”的含义相同。不同的Java编译器使用不同的术语 1.“找不到符号”错误是什么意思? 首先,这是一个编译错误1。这意味着要么Java源代码中存在问题,要么编译它的方式存在问题 Java源代码由以下内容组成
- 它们是什么意思
- 什么事情会导致它们
- 程序员如何着手修复它们
- 关键词:如
,true
,false
,class
,等等while
- 文字:如
和42
和'X'
“嗨,妈妈!”
- 运算符和其他非字母数字标记:如
、+
、=
,等等{
- 标识符:如
,Reader
,i
,toString
,等等processequivalancedelephants
- 注释和空白
- 对于一般标识符:
- 可能您拼写不正确;例如,
而不是StringBiulder
。Java无法也不会尝试弥补拼写错误或键入错误StringBuilder
- 可能您的大小写错了;即
而不是stringBuilder
。所有Java标识符都区分大小写stringBuilder
- 也许您使用下划线不恰当;例如,
和mystring
是不同的。(如果您坚持Java风格的规则,您将在很大程度上避免此错误……)myu string
- 可能您正试图使用声明为“其他地方”的内容;例如,在不同的上下文中,隐式地告诉编译器要查看的内容。(不同的类?不同的范围?不同的包?不同的代码库?)
- 可能您拼写不正确;例如,
- 对于应引用变量的标识符:
- 也许您忘记声明变量了
- 可能在您尝试使用变量声明时,该变量声明超出了范围。(请参见下面的示例)
- 对于应为方法或字段名的标识符:
- 可能您正试图引用未在父/祖先类或接口中声明的继承方法或字段
- 可能您试图引用的方法或字段在您使用的类型中不存在(即尚未声明);例如
2“someString”.push()
- 可能您正试图使用一个方法作为字段,反之亦然;例如
或“someString”.length
somesarray.length()
- 可能您错误地操作了数组而不是数组元素;例如
String strings[] = ... if (strings.charAt(3)) { ... } // maybe that should be 'strings[0].charAt(3)'
- 对于应为类名的标识符:
- 也许你忘了导入这个类
- 也许您使用了“星型”导入,但是在您导入的任何包中都没有定义该类
- 可能您忘记了一个
新的
,如:
String s = String(); // should be 'new String()'
- 对于类型或实例似乎没有您期望的成员的情况:
- 可能您已经声明了一个嵌套类或泛型参数,该类或泛型参数隐藏了您想要使用的类型
- 也许您正在隐藏一个静态或实例变量
- 可能您导入了错误的类型;例如,由于IDE完成或自动更正
- 也许您正在使用(针对)错误版本的API
- 也许您忘了将对象强制转换为适当的子类
java.io.*
,然后尝试使用Files
类…它位于java.nio
中,而不是java.io
。或者可能您打算编写File
,它是java.io
中的一个类
下面是一个不正确的变量作用域如何导致“找不到符号”错误的示例: 这将在
println
调用中给您一个编译错误,表示找不到i
。但是(我听到您说)我确实声明了它
问题在于{
前面的分号(;
)很隐蔽。Java语言语法将该上下文中的分号定义为空语句。空语句随后成为for
循环的主体。因此,该代码实际上意味着:
for (int i = 0; i < 100; i++);
// The previous and following are separate statements!!
{
System.out.println("i is " + i);
}
尽管有前面的声明,但tmp(…)
表达式中的tmp
是错误的。编译器将查找名为tmp
的方法,但找不到。前面声明的tmp
位于变量的命名空间中,而不是方法的命名空间中
在这个例子中,我遇到了
for (int i = 0; i < 100; i++); {
System.out.println("i is " + i);
}
for (int i = 0; i < 100; i++);
// The previous and following are separate statements!!
{
System.out.println("i is " + i);
}
int tmp = ...
int res = tmp(a + b);
int res = tmp * (a + b);
for (int i = 1; i < 10; i++) {
for (j = 1; j < 10; j++) {
...
}
}
String s = ...
String s1 = s.substring(1);
String s = String();
String s = new String();
if(somethingIsTrue()) {
String message = "Everything is fine";
} else {
String message = "We have an error";
}
System.out.println(message);
if(somethingIsTrue()) {
String message = "Everything is fine";
System.out.println(message);
} else {
String message = "We have an error";
System.out.println(message);
}
String message = "We have an error";
if(somethingIsTrue()) {
message = "Everything is fine";
}
System.out.println(message);
error: cannot find symbol
class demo{
public static void main(String a[]){
System.out.print(name);
}
}
class demo{
public static void main(String a[]){
String name="smith";
System.out.print(name);
}
}
<java.version>11</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
plugins {
...
id 'java-library'
}