前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >StackOverflow上87万访问量的问题:什么是“找不到符号”?

StackOverflow上87万访问量的问题:什么是“找不到符号”?

作者头像
沉默王二
发布于 2020-02-19 07:02:24
发布于 2020-02-19 07:02:24
1.6K00
代码可运行
举报
文章被收录于专栏:沉默王二沉默王二
运行总次数:0
代码可运行

你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。为了输出更好的内容,我就必须先输入更多的内容,于是我选择 Stack Overflow 作为学习的第一战线,毕竟很多大牛都在强烈推荐。本篇文章,我们来探讨一下访问量足足有 87+ 万次的问题——什么是“找不到符号”,它是什么意思,它是如何发生的,以及如何修复它。

额外多 BB 几句。坚持写作这些年来,真的成长特别快,我建议你也行动起来——我坚信,学习不在入,而在出!

上图是之前的一个领导给我发的微信,看来他也看到了我的成长。(一不小心,暴露了自己的真名)

如果你还有啥想看的、想了解的,欢迎在评论区留言!我会的、我能写的,我都非常乐意分享出来,和你共同成长!接下来,我们来看正文。

01、“找不到符号”错误是什么意思

先来看一段代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String s = String();

有点经验的 Java 程序员应该能够发现上面这段代码中的错误,它缺少了一个 new 关键字。因此,这段代码在编译阶段是不会通过的。

当我们对编译错误置之不理,尝试运行它的时候,程序会抛出以下错误。

“找不到符号”,意味着要么源代码有着明显的错误,要么编译方式有问题。总之呢,是我们程序员搞的鬼,把编译器搞懵逼了,它有点力不从心,很无辜。

02、“找不到符号”是如何发生的

1)拼写错误

程序员毕竟也是人,是人就会犯错。

  • 单词拼错了,比如说把 StringBuilder 拼写成了 StringBiulder。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
StringBuilder sb = new StringBiulder(); // 找不到符号,类 StringBiulder
  • 大小写错了,比如说把 StringBuilder 拼写成了 Stringbuilder。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
StringBuilder sb = new Stringbuilder(); // 找不到符号,类 Stringbuilder

2)未声明变量

有时候,我们会在没有声明变量的情况下使用一个变量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
System.out.println(sss); // 找不到符号,变量 sss

或者变量超出了作用域。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (int i = 0; i < 100; i++);
{
    System.out.println("i is " + i);
}

上面这段代码很不容易发现错误,因为仅仅是在“{”前面多了一个“;”。“;”使得 for 循环的主体被切割成了两个部分,“{}”中的 i 超出了“()”中定义的 i 范围。

3)方法用错了,或者不存在

比如说,Java 如何获取数组和字符串的长度?length 还是 length()?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String[] strs = {"沉默王二"};
System.out.println(strs.length()); // 找不到符号,方法 length()

String str = "沉默王二";
System.out.println(str.length); // 找不到符号,变量 length

4)忘记导入类了

在使用第三方类库的时候,切记要先导入类。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
StringUtils.upperCase("abcd");// 找不到符号,类 StringUtils

不过,IDEA 中可以设置类自动导入,来避免这个错误。

。。。。。。

导致出现“找不到符号”的错误原因千奇百怪,上面也只是列举出了其中的一小部分。问题的根源在于程序员本身,随着编程经验的积累,以及集成开发工具的帮助,这些错误很容易在代码编写阶段被发现。

03、如何修复“找不到符号”错误

一般来说,修复“找不到符号”的错误很简单,要么根据 IDE 的提示在编写代码的时候直接修复;要么根据运行后输出的堆栈日志顺藤摸瓜。

日志会给出具体的行号,以及错误的类型。根据提示,想一下自己的代码要表达什么意思,然后做出修复的具体动作。比如上图中提醒我们 35 行代码出错了,找不到变量 j,那么就意味着我们需要给变量 j 一个类型声明即可。

04、更复杂的原因

在实际的项目当中,出现“找不到符号”的错误原因往往很复杂,但大多数情况下,可以归结为以下几点:

  • 编码格式不对。比如说应该是 UTF-8,但有些遗留的项目会设置为 GBK、GB2312 等等。
  • JDK 的版本不匹配。比如说某些团队成员的电脑上安装的是 JDK 1.6,有的是 JDK 8,版本升级后的一些新语法自然就会和老版本发生冲突。
  • 第三方类库的升级。一些开源的共同类库往往会不兼容旧的版本,比如说最新版的 StringUtils 类的包为 org.apache.commons.lang3,但之前是 org.apache.commons.lang
  • 类名和方法名都相同,但包名不同,方法的参数不同,在使用的时候就容易造成“找不到符号”。

在我初学 Java 的时候,老师要求我们用记事本来编写代码,然后在命令行中编译和运行代码,那时候真的叫一个痛苦啊。

经常出现“找不到符号”的错误,差点入门到放弃。因为初学阶段,哪能记住那么多编程语言的规则啊,经常忘东忘西,再者记事本是没有行号的,找起问题来,简直要了老命。

吃过这样的苦后,我就强烈建议初学者不要再使用记事本编程了(莫装逼),直接上 IDE,有啥问题,工具帮你悠着点。

05、鸣谢

好了,我亲爱的读者朋友,以上就是本文的全部内容了。毫无疑问,能看到这里你在我心目中就是最棒的求知者,我必须要伸出大拇指为你点个赞?。如果还想看到更多,我再推荐你 2 篇,希望你能够喜欢。

如何快速打好Java基础? 如何优雅地打印一个Java对象?

最后,我有一个小小的请求,希望能够得到满足。原创不易,如果觉得有点用的话,请不要吝啬你手中在看和转发的权力——因为这将是我写作的最强动力。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 沉默王二 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
怒肝一夜,关于Java字符串的全部,都在这份手册里了
String 可以说是 Java 中最常见的数据类型,用来表示一串文本,它的使用频率非常高,为了小伙伴们着想,我怒肝了一周,把字符串能写的全都写了出来。
沉默王二
2020/06/24
1K0
解决 IDEA 编译报错:Error:(2048,1024) java: 找不到符号
摘要 在使用 IntelliJ IDEA 开发 Java 项目时,“找不到符号” (Cannot find symbol) 是一种常见的编译错误。本文将从初学者的角度,详细分析这一问题的可能原因,提供排查步骤,并附上代码示例,帮助你快速解决问题。
默 语
2025/01/20
9220
解决 IDEA 编译报错:Error:(2048,1024) java: 找不到符号
12条通用编程原则✨全面提升Java编码规范性、可读性及性能表现
从最基础的局部变量使用、控制结构编写,到集成类库、明智选择数据类型,慎用反射和本地方法,以及如何对待优化和遵循命名惯例等方面,全面提升编码的规范性、可读性以及性能表现
菜菜的后端私房菜
2024/07/30
1501
不要再重复造轮子了,这款开源工具类库贼好使!
读者群里有个小伙伴感慨说,“Hutool 这款开源类库太厉害了,基本上该有该的工具类,它里面都有。”讲真的,我平常工作中也经常用 Hutool,它确实可以帮助我们简化每一行代码,使 Java 拥有函数式语言般的优雅,让 Java 语言变得“甜甜的”。
沉默王二
2021/11/16
3730
不要再重复造轮子了,这款开源工具类库贼好使!
Java 8之后的那些新特性(四):网络请求 Java Http Client
在今天这个编程时代,无时无刻不需要与网络打交道。因此,一个良好的网络请求框架是编程中必不可少的一个类库了。
御剑
2022/04/15
3.6K0
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。
沉默王二
2020/02/17
1.8K0
Clojure 开发那些事
Clojure —— 新世纪的 Lisp 方言,相信大多数同学多多少少都听过,毕竟有个杀手级应用 Storm,但是真正去写 Clojure 的同学估计不多,国内也罕见哪个公司招 Clojure 程序员。其实也好理解,Lisp 语言诞生这么久了,为什么一直那么小众?原因就在于 Lisp 语言过于强大,不必也不可能像 Java 那么普及。你能要求每个人都能为 CTO 吗?
飞驰的西瓜
2022/07/26
1.6K0
Clojure 开发那些事
太厉害了,这款开源类库可以帮你简化每一行代码
“黑铁时代”读者群里有个小伙伴感慨说,“Hutool 这款开源类库太厉害了,基本上该有的工具类,它里面都有。”讲真的,我平常工作中也经常用 Hutool,它确实可以帮助我们简化每一行代码,使 Java 拥有函数式语言般的优雅,让 Java 语言变得“甜甜的”。
沉默王二
2020/10/21
6730
太厉害了,这款开源类库可以帮你简化每一行代码
第一个Go语言类库:启用、创建并发布第一个模块
模块化是编程界的潮流,无论是前端Vue、微信小程序开发,还是后端Node.js、Golang开发,都讲究模块化。模块化的本质是分工协作,将功能相对独立完善的代码以模块方式发布,以便在其它程序中复用,这与汽车厂分别制造发动机、轮胎、车门等零件,然后再组装是一个道理。
LIYI
2021/02/23
1.3K0
Java String:重要到别人只能当老二的字符串类
字符串,是Java中最重要的类。这句肯定的推断不是Java之父詹姆斯·高斯林说的,而是沉默王二说的,因此你不必怀疑它的准确性。
沉默王二
2019/01/28
5190
Java String:重要到别人只能当老二的字符串类
Java—基础入门
在正式开干之前,我们先了解一下Java的背景知识,方便以后你在和大家聊Java的时候可以说到一块去。
用户4396583
2024/09/14
1210
Web前端新手都应该了解的JavaScript 开发技巧
对于初学web前端的人而言,JavaScript都是他们学习中不可绕开知识点,Javascript 的很多扩展的特性是的它变得更加的犀利, 同时也给予程序员机会创建更漂亮并且更让用户喜欢的网站。对于从事web前端工作的小伙伴们来说JavaScript是必备技能,为了大家提高工作技能,小编为大家准备了这篇JavaScript 开发技巧,我们一起来看一看吧!
用户5827212
2019/08/25
5000
Java:优雅地处理异常真是一门学问啊!
你有没有这样的印象,当你想要更新一款 APP 的时候,它的更新日志里总有这么一两句描述:
沉默王二
2019/05/15
7460
error link2019无法解析的外部符号_inferior
最近在用VS 2008开发,初学遇到不少问题,最头疼的问题之一就是:LNK2019。
全栈程序员站长
2022/11/10
1.6K0
java 错误: 找不到符号遇到的几种情况
首先我检查了下代码,发现并没有问题,然后将ArrayTool.java文件的内容复制到Demo_ArrayTool.java中,
全栈程序员站长
2022/09/15
1.9K0
java 错误: 找不到符号遇到的几种情况
性能优化|全面剖析类加载机制
我们通过看启动器(Launch)构造方法里面的内容,来一探究竟 类加载器是如何初始化的
AI码师
2020/11/19
4140
性能优化|全面剖析类加载机制
Java命令行运行错误: 找不到或无法加载主类
本部分将针对在“一”中提出的两个问题发生原因,分别进行分析及处理。并且会介绍java的一些和处理问题相关的基本概念。
全栈程序员站长
2022/09/19
10.2K0
Java命令行运行错误: 找不到或无法加载主类
精简JRE的思路初探「建议收藏」
引言: JRE是Java程序赖以执行的基础环境,眼下JRE已经很的庞大;即使为了执行一个简单的Hello World的程序。可能依旧须要依赖整个JRE,将近百兆大小的依赖性。
全栈程序员站长
2022/07/08
4790
精简JRE的思路初探「建议收藏」
Go语言:1分钟写下第一个Go程序,并在终端里以指令方式运行
从官网(https://golang.org/dl/,国内可以从https://studygolang.com/dl下载)下载了Go语言安装包,并安装以后,此时在终端里执行指令:
LIYI
2021/01/27
1.6K0
羞,Java 字符串拼接竟然有这么多姿势
我当时看到这条微信的第一感觉是:小菜你也太菜了吧,这都不知道为啥啊!我估计正在读这篇文章的你也会有同样的感觉。
沉默王二
2019/10/28
8960
推荐阅读
相关推荐
怒肝一夜,关于Java字符串的全部,都在这份手册里了
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文