﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-可以嚣张,但要努力-文章分类-java学习</title><link>http://www.blogjava.net/chars/category/23784.html</link><description>在对象的天地快乐的成长.......</description><language>zh-cn</language><lastBuildDate>Fri, 20 Jul 2007 05:36:47 GMT</lastBuildDate><pubDate>Fri, 20 Jul 2007 05:36:47 GMT</pubDate><ttl>60</ttl><item><title>java static 关键字对初始化的影响</title><link>http://www.blogjava.net/chars/articles/131222.html</link><dc:creator>chars</dc:creator><author>chars</author><pubDate>Thu, 19 Jul 2007 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/chars/articles/131222.html</guid><wfw:comment>http://www.blogjava.net/chars/comments/131222.html</wfw:comment><comments>http://www.blogjava.net/chars/articles/131222.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chars/comments/commentRss/131222.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chars/services/trackbacks/131222.html</trackback:ping><description><![CDATA[<p>public class staticTest<br>{<br>&nbsp;private static String[] tests = null;//<strong>(1)</strong></p>
<p dir=ltr style="MARGIN-RIGHT: 0px">&nbsp;private static staticTest instance = new staticTest();<br></p>
<p dir=ltr style="MARGIN-RIGHT: 0px">&nbsp;//private static String[] tests = null;//<strong>(2)</strong><br>&nbsp;private staticTest(){<br>&nbsp;&nbsp;init();<br>&nbsp;}</p>
<p dir=ltr style="MARGIN-RIGHT: 0px">&nbsp;private void init(){<br>&nbsp;&nbsp;tests = new String[8];<br>&nbsp;&nbsp;for (int i = 0; i &lt; tests.length; i++){<br>&nbsp;&nbsp;&nbsp;tests[i] = "test" + i;<br>&nbsp;&nbsp;}<br>&nbsp;}</p>
<p dir=ltr style="MARGIN-RIGHT: 0px">&nbsp;public void print(){<br>&nbsp;&nbsp;for (int i = 0; i &lt; tests.length; i++){<br>&nbsp;&nbsp;&nbsp;System.out.println(tests[i]);// = "test"+i;<br>&nbsp;&nbsp;}<br>&nbsp;}</p>
<p dir=ltr style="MARGIN-RIGHT: 0px">&nbsp;public static staticTest getInstance(){<br>&nbsp;&nbsp;return instance;<br>&nbsp;}</p>
<p dir=ltr style="MARGIN-RIGHT: 0px">&nbsp;public static void main(String[] args) throws Exception{<br>&nbsp;&nbsp;staticTest.getInstance().print();</p>
<p dir=ltr style="MARGIN-RIGHT: 0px">&nbsp;}<br>}</p>
<br>该类测试static关键字对类初始化影响,如果把位于(1)的代码放到(2)的位置,则该类执行main方法时会报错----空指针异常:<br>原因在哪里呢?<br>static 定义的成员变量是按定义的位置初始化的,尽管在staticTest的构造函数中tests 被初始化,但由于(2)语句定义的位置,有使得tests 的值为null. 
<img src ="http://www.blogjava.net/chars/aggbug/131222.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chars/" target="_blank">chars</a> 2007-07-19 10:34 <a href="http://www.blogjava.net/chars/articles/131222.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>