仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 814|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA编程:Java老手常犯的几种毛病

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-18 11:41:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
ruby里有这些工具吗?又要简单多少?我没有用过这两门语言,我估计在这些语言力没有很统一的这种标准,或者根本就没有提供。毛病失利是乐成之母,这句话用在编程妙手身上是再符合不外的了。进修编程没有甚么捷径能够走,

在不休的进修和编码的过程当中,渐渐的堆集履历,从入手下手的仿照者酿成最初的创作者。和进修别的的

编程言语一样,Java老手在入手下手编码的时分也会呈现良多良多的毛病,并且有的毛病大概也是不休的

呈现。当呈现这些毛病的时分,我们就要细心的看看毛病提醒,找出成绩地点,制止今后不再产生一样

的毛病。在这个历程傍边我们的履历和程度也在不休的提拔。

Java毛病,次要包含两方面,一种是语法毛病,另外一种是逻辑毛病。

语法毛病,也就是我们的编码不切合java标准,在编译的时分没法经由过程。一般,我们都是用javac

编译我们的源程序,假如代码中存在语法毛病,好比某个表达式后短少分号的时分,编译器就会告知

我们毛病信息,编译就此中断。

逻辑毛病,也就是我们常说的Bug,一样平常存在逻辑毛病的程序都是能够顺遂的被编译器编译发生

响应的字节码文件,也就是class文件。可是,在实行的时分,也就是javaourClass的时分,得出的了局

并非我们所但愿的。

上面几个成绩都长短经常见的毛病,在一些老手的代码内里常常会呈现的。

1、Java是分巨细写的

关于常常写VB、Asp程序的人来讲,必定要注重,变量money和Money是纷歧样的。


2、一个java源文件能够包括多个class,可是只能包括一个public的class。

java是面向对象的程序言语,编译完的字节码也是一个一个的类,就是class。一个.java文件能够包括

多个class,在编译的时分,编译器会为每个class天生响应的class文件。可是必需要注重,一个.java文件

只能包括一个publicclass,并且这个publicclass的类名要与这个.java的文件名分歧。

好比,准确的写法应当是上面如许的:

一个java源文件,文件名为Test.java,内容以下:

classA
{

}
classB
{

}
publicclassTest
{

}


3、运转java程序时加了.class


运转java程序时,是不必要i加扩大名.class的,好比

c:javacA.java

c:javaA而不该该是javaA.class

这是由于java默许就是找后缀是class的文件,假如你加了.class,也就是javaA.class的话,就会呈现毛病:

ExceptioninthreadHelloWorld/class"main"java.lang.NoClassDefFoundError

意义就是找不到这个类,由于java会把A.class当做一个包的写法,就是往A目次下找class这个类,天然

找不到,以是就堕落,毛病信息和你classpath设置不准确的提醒信息是一样的。


4、一个等号和两个等号的分歧

在Java程序中,一个等号是赋值操纵符,而两个等号则是对照操纵符。在java老手的程序中

常常呈现如许的代码:

inta=1;

intb=2;

if(a=b)System.out.println("OK");

如许是不合错误的,由于if前面必要失掉的是一个布尔范例的值,如许编译就会堕落。

由于,a=b,是赋值操纵,就是把b的值赋给了a,前往等号右侧的值,也就是b的值,好比:

inta=1;

intb=2;

intc=(a=b);

System.out.println("a:"+a);

System.out.println("b:"+b);

System.out.println("c:"+c);

输入了局则是,a即是2,b即是2,c也即是2,分明了吗?

以是,看看上面这两段代码,假如你分明了,也就申明你已明白了一个等号和两个等号的意义了:

booleana=false;

booleanb=false;

if(a==b)

{
System.out.println("a=b");
}
else
{
System.out.println("a!=b");
}

了局输入“a=b”,假如换成一个等号

booleana=false;
booleab=false;
if(a=b)
{
System.out.println("a=b");
}
else
{
System.out.println("a!=b");
}

则输入了局为“a!=b”


5、java中的数组下标是从0入手下手的

好比我们界说了一个数组

Object[]myArray=newObject[10],申明数组中有10个元素,是从myArray[0]入手下手,到myArray[9]停止的

在用for轮回的时分,必要注重,准确写法以下:

for(inti=0;i<myArray.length;i++)
{

}



6、空援用的毛病

这类毛病也是最使人头疼的,属于逻辑性毛病,编译器能够一般编译,可是在某种情形下实行堕落,堕落

信息是java.lang.NullPointerException。

这是因为在对象的援用没有被初始化的情形下而挪用这个对象的属性大概办法而酿成的,好比上面的例子:

classA3
{
publicstaticvoidmain(String[]args)
{
Strings=null;
inta=1;
intb=2;
if(a<b)
{
s="a<b";
}
System.out.println(s.toString());
}
}
编译和实行都没有毛病,但是假如把a的值赋为10,以下:
classA3
{
publicstaticvoidmain(String[]args)
{
Strings=null;
inta=10;
intb=2;
if(a<b)
{
s="a<b";
}
System.out.println(s.toString());
}
}

那末就能够一般编译经由过程,可是实行的时分则堕落。

就是由于如今a<b不建立,也就是说没有实行s="a<b"这个初始化语句,以是在输入

s.toString()的时分,对象s实在仍是null,没有被初始化,这时候候挪用.toString()办法

天然会呈现非常。



以上就复杂写几个java老手常常会呈现的毛病,实在呈现毛病其实不可骇,只需人人细心的

剖析一下呈现的毛病,看看事实是甚么缘故原由招致的,怎样制止。如许,就会很快的进步

本人的程度,到场到妙手的行列中.......

因为本人也是菜鸟程度,以是写的工具,不免呈现如许那样的毛病,但愿人人多提定见。

Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。
不帅 该用户已被删除
沙发
发表于 2015-1-21 12:57:12 来自手机 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
莫相离 该用户已被删除
板凳
发表于 2015-1-25 16:45:51 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
兰色精灵 该用户已被删除
地板
发表于 2015-1-25 23:11:39 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
简单生活 该用户已被删除
5#
发表于 2015-2-2 22:21:24 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
若相依 该用户已被删除
6#
发表于 2015-2-4 10:51:12 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
活着的死人 该用户已被删除
7#
发表于 2015-2-5 14:17:39 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
若天明 该用户已被删除
8#
发表于 2015-2-6 18:30:02 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
老尸 该用户已被删除
9#
发表于 2015-2-18 02:13:22 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
第二个灵魂 该用户已被删除
10#
发表于 2015-2-18 18:34:51 | 只看该作者
是一种使用者不需花费很多时间学习的语言
变相怪杰 该用户已被删除
11#
发表于 2015-2-22 08:24:18 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
admin 该用户已被删除
12#
发表于 2015-3-6 23:40:49 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
飘灵儿 该用户已被删除
13#
发表于 2015-3-7 07:48:09 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
深爱那片海 该用户已被删除
14#
发表于 2015-3-14 14:34:04 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
爱飞 该用户已被删除
15#
发表于 2015-3-20 15:42:57 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
小妖女 该用户已被删除
16#
发表于 2015-4-3 23:22:49 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
17#
 楼主| 发表于 2015-4-6 00:09:56 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
再见西城 该用户已被删除
18#
发表于 2015-4-18 04:40:46 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
谁可相欹 该用户已被删除
19#
发表于 2015-4-21 23:52:06 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
小魔女 该用户已被删除
20#
发表于 2015-5-1 06:16:45 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 23:52

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表