大多数新手或者刚入门的人在学习的时候,不管是看视频还是看书,都会遇到各种各样的问题,比如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行,数组越界的错误,已经提示的特别清楚了。

在写程序的时候有些情况下就怕不报错,因为他不报错你就不知道哪儿有问题。所以找出错误最快的方法就是从报错的信息里边去找。

遇到异常查找的一些心得

  1. 平时在开发中一定要记得去看API文档,扩展自身知识
  2. 在遇到问题的时候一定是先自己去查,可以去百度,谷歌,等等,如果无果后,可以在群里边问,问老师
  3. 碰到错误,仔细检查你的代码,百分之六十的错误都是你粗心大意造成的,或者把代码截图发到群里,让大家帮你找
  4. 多利用编辑器去找,编辑器一般都会提示
  5. 碰到不理解的东西用System.out.println(“xx”) 打印日志来定位你的错误
  6. 一定要会用eclipse的断点功能

文档未完,持续更新中。

有问题可以在下面评论,技术问题可以私聊我

Java初学者如何排查学习中遇到的问题的更多相关文章

  1. java知识体系(自我学习中)

    java自我学习知识体系

  2. 一位资深程序员大牛给予Java初学者的学习路线建议

    java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...

  3. 一位资深程序员给予Java初学者的学习路线建议

    一位资深程序员给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干 ...

  4. 转载:一位资深程序员大牛给予Java初学者的学习路线建议

    一位资深程序员大牛给予Java初学者的学习路线建议   java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打 ...

  5. Java初学者应该注意的学习问题

    作为初学者,在刚开始学习的时候,一定会走很多弯路.但其实很多弯路是不必走的,会浪费很多时间,导致学习效率大打折扣.今天小编给大家讲述一下,作为一个Java初学者,在开始学习的时候应该注意的问题,应该从 ...

  6. Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录)

    Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录) 作者:王可利(Star·星星) 效果图: 代码如下: class Star8 { public static void m ...

  7. Java 需要记得、了解的关键词 (Java 学习中的小记录)

    Java 需要记得.了解的关键词 (Java 学习中的小记录)     作者:王可利(Star·星星) 总结:本次随笔,仅且拿来平时翻阅记忆用

  8. Java学习中,常用的命令管理(Java 学习中的小记录)

    Java学习中,常用的命令管理      作者:王可利(Star·星星) 一.Window中常见的dos命令 在哪里操作dos命令: Win7 ---> 开始  ---->所有程序---& ...

  9. Java基础学习中一些词语和语句的使用

    在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...

随机推荐

  1. python环境配置以及基本知识

    python---一种解释型语言(脚本语言),具有代码简洁.入门简单.开发效率高的优点.当然不可避免的有着暴露源码.执行效率低的缺点,但毕竟瑕不掩瑜,在数据是无比宝贵的财富的当下,无疑是一门优秀的编成 ...

  2. 腾讯云,搭建Git服务器

    下载安装 git 任务时间:5min ~ 10min Git 是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 此实验以 CentOS 7.2 x64 的系统为环境,搭建 ...

  3. 【模板】大数乘法(51nod 1027)

    #include<cstdio> #include<cstring> #include<algorithm> #define LL long long #defin ...

  4. juruo的刷题&博文祭

    Nothing--- 祭我bzoj过66题,博文240篇(.弱.) 自娱(愚)自乐下-

  5. Elasticsearch使用总结

    原文出自:https://www.2cto.com/database/201612/580142.html ELK干货:http://www.cnblogs.com/xing901022/p/4704 ...

  6. vim高亮显示当前行列

    vim高亮显示当前行: set cursorline vim高亮显示当前列: set cursorcolumn

  7. sheepdog简介

    1.corosync,single ring最多支持50个节点:zookeeper,500个节点可稳定支撑,1000-1500个节点挑战比较大,需要优化消息传递机制. 2.sheepdog一开始为分布 ...

  8. MySQL基于域名做高可用切换(Consul初试)

    一,Consul功能介绍 服务发现 - Consul的客户端可用提供一个服务,比如 api 或者mysql ,另外一些客户端可用使用Consul去发现一个指定服务的提供者.通过DNS或者HTTP应用程 ...

  9. 1010 过河卒 2002年NOIP全国联赛普及组codevs

    1010 过河卒  2002年NOIP全国联赛普及组codevs 题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点 ...

  10. 基本的文件I/O

    基本的文件 I/O 抽象基类 Stream 支持读取和写入字节. Stream 集成了异步支持. 其默认实现根据其相应的异步方法来定义同步读取和写入,反之亦然. 所有表示流的类都是从 Stream 类 ...