首页 > 编程知识 正文

在编写java代码时,在编写java代码时应注意的问题

时间:2023-12-29 13:16:33 阅读:329764 作者:CEFE

本文目录一览:

在用java编写的时候,常出错的地方在哪里?如何解决呢?

1. java.lang.nullpointerexception

这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)

2. java.lang.classnotfoundexception

这个异常是很多原本在jb等开发环境中开发的程序员,把jb下的程序包放在wtk下编译经常出现的问题,异常的解释是"指定的类不存在",这里主要考虑一下类的名称和路径是否正确即可,如果是在jb下做的程序包,一般都是默认加上package的,所以转到wtk下后要注意把package的路径加上。

3. java.lang.arithmeticexception

这个异常的解释是"数学运算异常",比如程序中出现了除以零这样的运算就会出这样的异常,对这种异常,大家就要好好检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥了。

4. java.lang.arrayindexoutofboundsexception

这个异常相信很多朋友也经常遇到过,异常的解释是"数组下标越界",现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。

5. java.lang.illegalargumentexception

这个异常的解释是"方法的参数错误",很多j2me的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写成负数就会出现这个异常,再比如g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。

6. java.lang.illegalaccessexception

这个异常的解释是"没有访问权限",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了package的情况下要注意这个异常。

为什么我在编写java程序时,电脑老死机?

如果是用软件编写java代码的时候会出现死机的情况就是电脑配置太差了

用idea编写java代码时突然出现的问题求大佬指点

Java8在2014年三月发布了。我们打算将Pondus的所有生产服务器升级到这一新版本。从那时起,我们将大部分代码库迁移到lambda表达式、数据流和新的日期API上。我们也会使用Nashorn来把我们的应用中运行时发生改变的部分变成动态脚本。

除了lambda,最实用的特性是新的数据流API。集合操作在任何我见过的代码库中都随处可见。而且对于那些集合操作,数据流是提升代码可读性的好方法。

但是一件关于数据流的事情十分令我困扰:数据流只提供了几个终端操作,例如reduce和findFirst属于直接操作,其它的只能通过collect来访问。工具类Collctors提供了一些便利的收集器,例如toList、toSet、joining和groupingBy。

例如,下面的代码对一个字符串集合进行过滤,并创建新的列表:

stringCollection

.stream()

.filter(e - e.startsWith( "a"))

.collect(Collectors.toList());

在迁移了300k行代码到数据流之后,我可以说,toList、toSet、和groupingBy是你的项目中最常用的终止操作。所以我不能理解为什么不把这些方法直接集成到Stream接口上面,这样你就可以直接编写:

stringCollection

.stream()

.filter(e - e.startsWith( "a"))

.toList();

这在开始看起来是个小缺陷,但是如果你需要一遍又一遍地编写这些代码,它会非常烦人。

有toArray()方法但是没有toList(),所以我真心希望一些便利的收集器可以在Java9中这样添加到Stream接口中。是吧,Brian?ಠ_ಠ

注:Stream.js是浏览器上的Java 8 数据流API的JavaScript接口,并解决了上述问题。所有重要的终止操作都可以直接在流上访问,十分方便。详情请见API文档。

无论如何,IntelliJ IDEA声称它是最智能的Java IDE。所以让我们看看如何使用IDEA来解决这一问题。

使用 IntelliJ IDEA 来帮忙

IntelliJ IDEA自带了一个便利的特性,叫做实时模板(Live Template)。如果你还不知道它是什么:实时模板是一些常用代码段的快捷方式。例如,你键入sout并按下TAB键,IDEA就会插入代码段System.out.println()。更多信息请见这里。

如何用实时模板来解决上述问题?实际上我们只需要为所有普遍使用的默认数据流收集器创建我们自己的实时模板。例如,我们可以创建.toList缩写的实时模板,来自动插入适当的收集器.collect(Collectors.toList())。

下面是它在实际工作中的样子:

让我们看看如何自己构建它。首先访问设置(Settings)并在左侧的菜单中选择实时模板。你也可以使用对话框左上角的便利的输入过滤。

下面我们可以通过右侧的+图标创建一个新的组,叫做Stream。接下来我们向组中添加所有数据流相关的实时模板。我经常使用默认的收集器toList、toSet、groupingBy 和 join,所以我为每个这些方法都创建了新的实时模板。

这一步非常重要。在添加新的实时模板之后,你需要在对话框底部指定合适的上下文。你需要选择Java → Other,然后定义缩写、描述和实际的模板代码。

// Abbreviation: .toList

.collect(Collectors.toList())

// Abbreviation: .toSet

.collect(Collectors.toSet())

// Abbreviation: .join

.collect(Collectors.joining( "$END$"))

// Abbreviation: .groupBy

.collect(Collectors.groupingBy(e - $END$))

特殊的变量$END$指定在使用模板之后的光标位置,所以你可以直接在这个位置上打字,例如,定义连接分隔符。

提示:你应该开启"Add unambiguous imports on the fly"(自动添加明确的导入)选项,便于让IDEA自动添加 java.util.stream.Collectors的导入语句。选项在 Editor → General → Auto Import中。

让我们在实际工作中看看这两个模板:

连接分组

Intellij IDEA中的实时模板非常灵活且强大。你可以用它来极大提升代码的生产力。你知道实时模板可以拯救生活的其它例子吗?请让我知道!

作者:布客飞龙 segmentfault.com/a/1190000006033999

怎样使用eclipse在编写java文件时自动引入相关类库?

eclipse自动import步骤如下:

1.打开编辑好的java代码页面,可以看到ArrayList,File类由于没有import相应的包而报错。

2.在编辑区域点击鼠标右键,选择【Source】,然后选择【Organized Imports】选项

3.查看代码可以看到,已经自动import了两个类。

注:同时此方法也会删除无用的import

你们在编写java的代码的时候一般用什么样的字体

一般适合用作程序代码显示的字体,有下列几个:

(1):Courier New 9pt, Verdana, Lucida Console (宋体,新宋体等不在讨论之列)

首先说说Courier New, 这个字体虽说经典,但总体感觉其实不好。因为是等宽字体,所以对编程而言,其优点是每个字符区分的十分清楚,方便查找程序中的输入错误。不好的地方在于,因为是等宽字体,特别浪费显示空间,在看代码的时候恨不得显示器变成 21寸的才好。总之就是感觉用来看那种大的框架的源代码的时候,非常不适合。一屏只能看到很少的几句代码,有只见树木,不见森林之感,不利于从宏观角度理解代码的逻辑。另外在 VS.NET 2003 里面该字体显示的中文特别大,而且很丑陋 -_-!

(2):Verdana: 非等宽字体。总体可读性好些,但是小的错误,比如多一个少一个空格之类的,很难排查。

Lucida Console 是等宽字体。可读性也不错,但是 vs.Net 显示出来有锯齿。

serif 字体通常不同笔顺的粗细有别,且起笔落笔处有多余的小折线。

sans-serif 字体笔画不论方向粗细相同,且起笔落笔没有多余折线。

中文字体中,可以与此类比:宋体相当于 serif 字体,黑体相当于 sans-serif 字体。

正文中应该用 serif 字体以提高可读性,标题可以用 sans serif 字体以示强调。

(3):serif 字体在视觉上强调单词的整体,因此作为正文更可读;而 sans serif 强调单个的字母。

研究显示,在 web 中 sans-serif 字体更易阅读。正文字体比较好的选择:Arial 9.75 或 MS Sans Serif 9.75。为了提高阅读准确性和速度,最好的字体大小是 8.25, 9.0, 或 9.75("MS Serif 8.25" 除外)。

(4)养眼的编辑器配色

环境:VS2005

字体:Verdana, 10pt

普通文本背景色:238,239,230 (#E6EFEE)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。