|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。成绩1.Java编译运转成绩
2.Object操纵简单呈现NullPointException毛病
3.过剩处置语句
4.参数传送成绩
5.破例处置
6.数据库操纵的成绩
7.index越界
8.别的
9.有待会商的成绩
1.Java编译运转成绩
Java程叙文件起首得编绎成字节码的class文件,然后经由过程JVM来运转。Java之以是具有平台有关性,是由于Sun几近为年夜部分的操纵体系供应了JVM(Java假造机),如许我们只需用一致的API而不必体贴底层体系。
在利用Java的早期,碰到最多的成绩生怕就是java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError,这次要是classpath设置不合错误的成绩,相似于C/C++内里的静态链接库,假如你的source内里利用了别的package的API,如许你在编绎和运转的时分都得将它设置到classpath内里往,设置的时分能够指向一个目次,通常是含有所必要的classes的目次,大概指向一个jar或zip文件,它们则是classes的打包的文件。如:
setclasspath=C:jdk1.3.1lib ools.jar;D:DevelopCSCclass
在windowscommand上面运转
setclasspath
能够检察以后已设置的classpath,假如想追加设置运转:
setclasspath=%classpath%;c:eawlserver6.1libweblogic.jar;
假如用命令行来举行编绎运转的话,得要将jdk的path设置一下。如:
setpath=C:jdk1.3.1in;%path%
固然假如你不嫌贫苦能够指定全路径:
C:jdk1.3.1injavacyourOwn.java
C:jdk1.3.1injavayourOwn
Classpath也能够在编绎运转的时分举行指定。如:
javacCclasspath%MY_CLASSPATH%yourOwn.java
javaCclasspath%MY_CLASSPATH%yourOwn
一样平常来讲,JVM运转的时分出缺省load的classes,能够运转javaCverbose举行检察,通常为%JDK_HOME%jrelib上面的i18n.jar与rt.jar等,假如将你的jar文件放到这个目次上面的ext目次上面往,则不必指定它,JVM会主动load这些jar的。
别的必要注重的是,运转Class的时分是用这个类的Class全名,即包括它的Package名,若有一个类声明以下:
packagecn.com.sunjapan.util
publicclassStringUtil{
publicstaticvoidmain(String[]args){
System.out.println(“HelloWorld”);
}
}
你运转的时分得要用
javacn.com.sunjapan.util.StringUtil
而不克不及用javaStringUtil不然会出java.lang.NoClassDefFoundError。
2.Object操纵简单呈现NullPointException毛病
这类毛病生怕是编程早期最简单犯的毛病。Java是面向对象的言语,操纵几近都是在对象之间举行的,一个类的实比方果是空(null)的话则不克不及挪用这个实例的办法,不然就会出java.lang.NullPointException毛病。最多见的String的操纵,如:
Stringstr=null;
if(str.equals(“Hello”)){
System.out.println(“strisHello”);
}
经常使用的制止办法就是在利用一个Object之前要判别一下是不是为null,除非你断定它一定是不为null的。接上例修正以下:
Stringstr=null;
if(str!=null&&str.equals(“Hello”)){
System.out.println(“strisHello”);
}
关于String的这类equals或equalsIgnoreCase的操纵经常还能够用上面的办法举行平安操纵:
Stringstr=null;
if(“Hello”.equals(str)){
System.out.println(“strisHello”);
}
用一个断定的不为null的String往与未知的String举行对照。
3.过剩处置语句
这类成绩固然不但是java才有的,任何程序都有大概呈现过剩的渣滓,只管它的终极了局是准确的,我们在写程序的时分要尽量制止这类不用要的处置。
罕见的情形有以下几种:
3.1过剩的实例机关
声了然一个对象的实例,有的人喜好同时new一下,即给它分派了空间,而在前面并没用到分派的空间,而是举行了别的的操纵,例:
ArrayListresultList=newArrayList();
try{
resultList=SomeModule.getResultList();
}catch(Exceptione){
returnnull;
}
…
resultList在声明的时分同时给它分派了空间,但鄙人面却用它指向了别的前往的地点。固然在写Java程序的时分我们不必思索内存的分派等使人头疼的成绩,Java有本人的一套内存办理机制,但Java在对象的机关的时分开支是很年夜的,以是诸云云类的华侈效力的处置仍是得要注重制止。
3.2轮回过剩
我们常常会从一个数组或Collection中经由过程轮回来找出一个切合前提的元素举行操纵,而在实行完以后常常会健忘跳出轮回体。例:
String[]week=newString[]{“Sun”,“Mon”,“Tue”,“Wen”,“Thu”,“Fri”,“Sat”};
for(inti=0;i<week.length;i++){
if(week[i].equals(“Tue”)){
System.out.println(“Tueisfound”);
}
}
假如下面这段程序只是找出week中是不是有Tue的话,则在找到以后应当跳出轮回体,准确的写法以下:
for(inti=0;i<week.length;i++){
if(week[i].equals(“Tue”)){
System.out.println(“Tueisfound”);
break;(或有大概return)
}
}
…
轮回处置的准绳就是在处置终了的中央跳出。
3.3反复语句
倡议假如有两个或两个以上的中央必要用到不异的程序块代码,就要思索到利用函数,假如一个功效块对照自力,有大概在别的被挪用,这个时分也尽量的利用办法自力开来。
另有种情形就是在前提分支语句内里,各个分支都必要实行某个不异的语句,这个时分就必要提到分支的表面往实行,上面给出几个例子:
|
|