关于java空指针

来源:百度知道 编辑:UC知道 时间:2024/05/02 17:48:56
public static Statement setPreparement(Connection con) {
try {
Statement smt=con.createStatement();

} catch (Exception e) {
e.printStackTrace();
}
return smt;
}
我的这段程序在编译器中说是有"java.lang.nullpointer"异常,我想问一下这段程序错在哪边???还有try和catch语句中的语句是否不受外界影响,也就是说如果我定义了一个int i=5;当我return i时,i的值实际上却是0.

public static Statement setPreparement(Connection con) {
Statement smt = null;
try {
smt = con.createStatement();

} catch (Exception e) {
e.printStackTrace();
}
return smt;
}

等我改完才发现别人已经给你说的很详细了!

对于他们争议的不是重点 重点是你要知道什么是局部变量 什么是全局变量
关于这个 局部变量是出了大括号就没有用的变量 全局变量出了类就没有用了的变量

改成下面那样就可以了。前提是。你的在本类中有一个static con对象才可以.
public static Statement setPreparement(Connection con) {
Statement smt=null;
try {
smt=con.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
return smt;
}

关于你说的那个try.当一个变量在try{}的{}里面声明的时候。该变量只是{}内有作用。出了这个try的{}以后就没有失效了。你写的那个smt是这个方法中的try里面的局部变量,只作用于try的{}内。而我改后的是smt是这个方法的局布变量。作用于整个方法。

楼上扯淡,那个con是传进来的参数呀,干嘛非要是个static类型的对象咯~~

竞争真是够激烈的。
支持三楼的说法