在java中,变量在全局可以不赋值,因为有默认值,在局部不可以不赋值,因为没有默认值,但是你看下面这个

publicclassFFFextendsHttpServlet{   privatestaticfinallongserialVersio... public class FFF extends HttpServlet {    private static final long serialVersionUID = 1L; public void doPost(HttpServletRequest request, HttpServletResponse response)   throws ServletException, IOException {     String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";        String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=master";        String userName = "sa";        String userPwd = "fudewei1";        String sql="insert into book values(?,?,?,?)"; //就是这dbConn,局部变量这没赋值        Connection dbConn;            try {    Class.forName(driverName);//这dbConn,已赋值,    dbConn = DriverManager.getConnection(dbURL, userName, userPwd);   } catch (ClassNotFoundException e) {    // TODO Auto-generated catch block    e.printStackTrace();   } catch (SQLException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }      response.setContentType("text/html");  PrintWriter out = response.getWriter();  request.setCharacterEncoding("utf-8");  String id=request.getParameter("id");  String bookname=request.getParameter("bookname");  String author=request.getParameter("author");  String price=request.getParameter("price");  PreparedStatement st;   try {//已赋值引用出现错误(开发工具发现的)    st = dbConn.prepareStatement(sql);    st.setString(1,id);    st.setString(2, bookname);    st.setString(3, author);    st.setString(4,price );    st.executeUpdate();    st.close();   } catch (SQLException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }  out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");  out.println("<HTML>");  out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");  out.println("  <BODY>");  out.print("    This is ");  out.print(this.getClass());  out.println(", using the POST method");  out.println("  </BODY>");  out.println("</HTML>");  out.flush();  out.close(); }} 展开
 我来答
左丘蕾邓碧
2020-04-25 · TA获得超过3.6万个赞
知道小有建树答主
回答量:1.4万
采纳率:27%
帮助的人:776万
展开全部
你在try里面赋值的,编译器这样去考虑的:
如果在
class.forname(drivername);
出现异常,直接到catch语句
然后,
dbconn
=
drivermanager.getconnection(dburl,
username,
userpwd);
不能执行,也就是不能赋值,也就是有可能dbconn是没有赋值的情况
这时候,编译器当然不允许
st
=
dbconn.preparestatement(sql);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
c6551946
2011-09-24 · TA获得超过298个赞
知道小有建树答主
回答量:174
采纳率:50%
帮助的人:78.7万
展开全部
dbConn = DriverManager.getConnection(dbURL, userName, userPwd); 这不是赋值吗?就在下面一行赋值都没看到?
int i;
i= 0;这就是赋值,和int i= 0 ;是一样的意思。你以为什么叫赋值呢
局部变量也就是用到的时候,比如被别人引用的时候才需要赋值。没引用就是垃圾代码,管你赋值不赋值呢
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-09-24
展开全部
给个初始值 就行了
Connection conn=null;不过 一般写Connection dbConn; 这个都把它放外面,且把null赋给它,这样规范点。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pql1911
2011-09-24 · 超过15用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:37.4万
展开全部
...你以为几个人有耐心看你的代码...拜托整理的工整好不好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式