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 ...
随机推荐
- MySQL Docker方式安装
以5.7版本为例 1 配置mysql配置文件编辑/etc/my.cnf,添加以下内容: [mysqld] skip-host-cache skip-name-resolve datadir=/var/ ...
- Linux:使用root踢掉其他用户
首先使用w命令查看所有在线用户: 执行命令: pkill -kill -t tty3 再用w命令查看是否已经强制踢掉: TTY 是终端的意思 TTY :0 表示root用户登陆图形化界面的终 ...
- linux top-显示或管理执行中的程序
推荐:更多linux 性能监测与优化 关注:linux命令大全 top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具.通过top命令所提供的互动式界面, ...
- 虚拟机上CentOS-6.9-x86_64系统安装教程
最近想学学Linux系统如何使用,于是想用VM安装虚拟机学习一下. linux系统比较多,我这里用的是CentOS-6.9-x86_64 一.下载系统 下载地址:https://www.centos. ...
- Introduction to TensorFlow
Lecture note 1: Introduction to TensorFlow Why TensorFlow TensorFlow was originally created by resea ...
- 轰炸III
题目背景 一个大小为N*M的城市遭到了X次轰炸,每次都炸了一个每条边都与边界平行的矩形. 题目描述 在轰炸后,有Y个关键点,指挥官想知道,它们有没有受到过轰炸,如果有,被炸了几次,最后一次是第几轮. ...
- 如何取消codeblocks对msvcr100.dll的依赖?
用VS2010或是codeblocks开发的程序,在开发之外的机器上,可能会提前缺少msvcr100.dll之类的文件. 可以用如何设置,取消其对库文件的依赖. 当然,还要注意创建程序的类型.(补) ...
- Just a Hook 线段树 区间更新
Just a Hook In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of t ...
- HDU——1133 Buy the Ticket
Buy the Ticket Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- namenode启动成功,但是不能通过web访问50070问题
我在CentOS遇到这个问题,50070不行但8088可以,尝试了各种方法无法解决,各个进程全都启动,格式化namenode,各种配置正常均无法解决.后来觉得是默认访问端口没有生效,所以尝试添加端口配 ...