Java初学者如何排查学习中遇到的问题
大多数新手或者刚入门的人在学习的时候,不管是看视频还是看书,都会遇到各种各样的问题,比如JDK配置了,但是javac没有办法执行,Eclipse安装了,但是打不开,快捷键用不了,照着视频敲了但是和视频上结果不一样等等。下面我们就来分析遇到各种问题的排查方法。
JDK配置了但是敲javac或者java命令没有反应,大多数是敲javac命令出不来
其实JDK很好配置,第一个是配置好JAVA_HOME,注意一定是大写,不要问为什么,这是规范,你写成小写或者其他的也行,但是既然学这个就要符合行业规范。
注意,安装目录后面不要加斜杠,一定不要加斜杠。
接下来是配置JRE_HOME很多人可能会说JRE不是java的运行环境吗,我只是用来开发,配置不配置应该不要紧吧。但是这里我建议大家一定要配置,在学到后面的东西中有些软件会自动去读取JRE的环境变量,一定要配置。在安装JDK的同时,jdk的目录下面已经包含了jre,这个时候只需要把jre配置到jdk目录下面的jre目录就行了。
注意,目录是上面jdk的目录下面的jre目录,当然你也可以选择自己安装jre的,目录后面不要加斜杠。
配置好JRE_HOME和JAVA_HOME之后,我们来看看Path的配置。不配置path,上面两个配置了基本上也没用。
在配置path的时候把斜杠加上,都配置到bin目录下,配置上面以上基本上已经可以了,有的人会问classpath不是还没有配置吗?classpath配置不配置都行,他会自动检测。
用记事本写的代码编译时出现中文乱码
这种情况大多数出现在Window环境下,windows系统的默认编码为GBK,而记事本新创建的文件编码为Ascill编码,所以在编译时由于编码不一致会出现中文乱码,这时有的同学就会问,我也编译了但是我的也没出现你的这种错误呀,这个其实与系统有关,那么出现这种错误该如何解决呢。首先在记事本中点文件,另存为
选择UTF-8格式的,保存就可以了。接下来在执行javac编译,这时候有些人会成功编译,有的人还是不行,那这又是为什么呢?这里边的学问可大了,就得深入去了解uniocde编码模式了,这里不深入讨论。大家可以重新创建一个空的文件,先把编码设置成utf-8,然后在把代码复制到新创建的文件中去,保存,执行javac,这个时候百分之八十会成功。如果还是不成功的话,就用javac的命令行模式指定编码来运行,注意,这种模式下,文件编码可以是Ascill编码,
javac xxx.java -encoding gbk
可以使用这种。强制使用gbk编码来编译,如果gbk不行,换成utf-8,多尝试,那么很多人会问,我是怎么知道javac的这个命令的,其实我们直接敲javac就能看到他的一些参数:
我们可以看到,他里边就有个-encoding的选项,可以用来指定固定的编码。
在写代码中遇到的一些问题
1、在新手刚开学习的时候一定不要才猜,要去查询API文档,我之前见过一个人,视频上面讲的是Integer.MAX_VALUE,于是就会有人写Boolean.MAX_VALUE,Short.MAX_VALUE等,写程序一定要注意不要去仿照着写,因为你是刚刚开始学,一定要认真。
2、在使用开发工具的时候Eclipse,有些人前期因为语法不熟悉会遇到各种各样的问题,为什么让你们编辑器呢,因为编辑器能够更清楚的提示错误,比如:
这种错误,但是有些人由于基础有限,他不知道这个哪里错了,只是知道eclipse标红了,我们来分析,他这个地方有两个错误,eclipse已经给我们提示了,我们把鼠标放上去:
首先放到double上面,他会提示这么一句话 The left-hand side of an assignment must be a variable ,
我们在把鼠标放到12上面:
他会提示这样一句话 Syntax error , insert ";" to complete BlockStatements ;eclipse都会很清楚的提示出来,那么这三个错误是什么呢,首先double没有定义变量,第二个是类型赋值错了,赋值成了一个字符串,语句后面没有分号;就是这三个错误。
在写程序中碰到问题百分之九十都有提示,错误都包含在代码里边。主要是你能不能正确的找到错误在哪儿。
上面的这种错误都是属于编译型错误,工具会提示,还有一种错误是运行时错误,也是逻辑错误,这种错误就比较坑了,一般很难排查,但是都会在错误中提示出来,比如:
执行结果如下:
我们可以看到,在第9行,数组越界的错误,已经提示的特别清楚了。
在写程序的时候有些情况下就怕不报错,因为他不报错你就不知道哪儿有问题。所以找出错误最快的方法就是从报错的信息里边去找。
遇到异常查找的一些心得
- 平时在开发中一定要记得去看API文档,扩展自身知识
- 在遇到问题的时候一定是先自己去查,可以去百度,谷歌,等等,如果无果后,可以在群里边问,问老师
- 碰到错误,仔细检查你的代码,百分之六十的错误都是你粗心大意造成的,或者把代码截图发到群里,让大家帮你找
- 多利用编辑器去找,编辑器一般都会提示
- 碰到不理解的东西用System.out.println(“xx”) 打印日志来定位你的错误
- 一定要会用eclipse的断点功能
文档未完,持续更新中。
有问题可以在下面评论,技术问题可以私聊我
Java初学者如何排查学习中遇到的问题的更多相关文章
- java知识体系(自我学习中)
java自我学习知识体系
- 一位资深程序员大牛给予Java初学者的学习路线建议
java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...
- 一位资深程序员给予Java初学者的学习路线建议
一位资深程序员给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干 ...
- 转载:一位资深程序员大牛给予Java初学者的学习路线建议
一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打 ...
- Java初学者应该注意的学习问题
作为初学者,在刚开始学习的时候,一定会走很多弯路.但其实很多弯路是不必走的,会浪费很多时间,导致学习效率大打折扣.今天小编给大家讲述一下,作为一个Java初学者,在开始学习的时候应该注意的问题,应该从 ...
- Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录)
Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录) 作者:王可利(Star·星星) 效果图: 代码如下: class Star8 { public static void m ...
- Java 需要记得、了解的关键词 (Java 学习中的小记录)
Java 需要记得.了解的关键词 (Java 学习中的小记录) 作者:王可利(Star·星星) 总结:本次随笔,仅且拿来平时翻阅记忆用
- Java学习中,常用的命令管理(Java 学习中的小记录)
Java学习中,常用的命令管理 作者:王可利(Star·星星) 一.Window中常见的dos命令 在哪里操作dos命令: Win7 ---> 开始 ---->所有程序---& ...
- Java基础学习中一些词语和语句的使用
在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...
随机推荐
- Gym - 101670C Chessboard Dancing(CTU Open Contest 2017 找规律)
题目:链接 思路: 多画出几个情况就可以找出规律来了 Knight (当大于2的时候只要两种颜色相间出现就可以了) King(当大于等于3的时候,总可以用四种形式来补色,具体如下) Bishop(斜 ...
- MySQL-date和datetime
MySQL中 date表示只有日期: insert into stu values(id = null, birthday = '2000-01-11'); datetime则还包含了时间: inse ...
- python爬虫30 | scrapy后续,把「糗事百科」的段子爬下来然后存到数据库中
上回我们说到 python爬虫29 | 使用scrapy爬取糗事百科的例子,告诉你它有多厉害! WOW!! scrapy awesome!! 怎么会有这么牛逼的框架 wow!! awesome!! 用 ...
- reshape column vector data in Matlab
input: import data 2. transpose the data 3. reshape the data into array code: matlab load x.dat X=x ...
- Ajax_数据格式_JSON
[JSON] 1.JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSO ...
- HDU 1212 大整数的取模运算
因为这里是MOD最大为100000 所以我将字符串看作5个一组,并记录后面跟了多少个100000 每次取5个数根据其数据进行取模更新 注意过程中 100000*100000会超int #include ...
- VScode输出中文乱码的解决方法------测试过可以用
用python写个爬虫,配置个VScode环境,发现输出都是乱码,翻阅网站后发现一个简单有效的方法,在此谢过网络上的大牛们的无私分享,我也在此记录一下,以备后用: 文件---->首选项----& ...
- 小a和uim之大逃离(洛谷 1373)
题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...
- 通过JQUERY获取SELECT OPTION中选中的值
遇到一样学一样. 一个是取KEY,一个是取VALUE,一个是取所有文本. var dbuser_select = $("#dbuser_select option:selected" ...
- springboot启动mybatis
初期开发了generator可以根据表结果自动生产实体类.配置文件和dao层代码,可以减轻一部分开发量:后期也进行了大量的优化可以使用注解了,自动管理dao层和配置文件等,发展到最顶端就是今天要讲的这 ...