??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲色图在线播放,西西人体44rt高清亚洲,久久久影院亚洲精品http://m.tkk7.com/clraychen/category/12145.htmlcontact us by sending email to clraychen@gmail.com weiei.gao@gmail.comzh-cnTue, 13 Mar 2012 06:38:31 GMTTue, 13 Mar 2012 06:38:31 GMT60Shallow copy & Deep copyhttp://m.tkk7.com/clraychen/archive/2008/02/22/181448.htmldu之ray的技术天I?/dc:creator>du之ray的技术天I?/author>Fri, 22 Feb 2008 08:44:00 GMThttp://m.tkk7.com/clraychen/archive/2008/02/22/181448.htmlhttp://m.tkk7.com/clraychen/comments/181448.htmlhttp://m.tkk7.com/clraychen/archive/2008/02/22/181448.html#Feedback0http://m.tkk7.com/clraychen/comments/commentRss/181448.htmlhttp://m.tkk7.com/clraychen/services/trackbacks/181448.html看设计模式看?/span>Prototype PatternQ老实说觉得这个模式ƈ不是特别重要Q但其中提到?/span>Java中的clone()Ҏ,却值得仔细看一看,其中涉及到浅拯和深拯Q?/span>shallow copy & deep copyQ,Sun的一技术文档已l写的很清楚了,推荐?/span>

http://java.sun.com/developer/JDCTechTips/2001/tt0410.html#making



]]>
Java ClassLoader基础知识Q网上内Ҏ理后所得)http://m.tkk7.com/clraychen/archive/2008/02/20/180868.htmldu之ray的技术天I?/dc:creator>du之ray的技术天I?/author>Wed, 20 Feb 2008 07:16:00 GMThttp://m.tkk7.com/clraychen/archive/2008/02/20/180868.htmlhttp://m.tkk7.com/clraychen/comments/180868.htmlhttp://m.tkk7.com/clraychen/archive/2008/02/20/180868.html#Feedback4http://m.tkk7.com/clraychen/comments/commentRss/180868.htmlhttp://m.tkk7.com/clraychen/services/trackbacks/180868.html     q四个类加蝲器分别ؓQ?strong>Bootstrap ClassLoader?strong>Extension ClassLoader?strong>AppClassLoader
?strong>URLClassLoaderQ他们的作用其实从名字就可以大概推测出来了。其中AppClassLoader在很多地方被叫做System ClassLoader

Bootstrap ClassLoader是在JVM开始运行的时候加载java的核心类Q是用C++~写的,它用来加载核心类库,在JVM源代码中q样写道Q?br /> static const char classpathFormat[] =
"%/lib/rt.jar:"
"%/lib/i18n.jar:"
"%/lib/sunrsasign.jar:"
"%/lib/jsse.jar:"
"%/lib/jce.jar:"
"%/lib/charsets.jar:"
"%/classes";
Extension ClassLoader是用来加载扩展类Q即/lib/ext中的cR?br /> AppClassLoader用来加蝲Classpath的类Q是和我们关pL密切的类?br /> URLClassLoader用来加蝲|络上远E的c,暂且不讨论?br />
它们之间的关p?

1.Parent-ChildQ按序从大到小。不是简单的l承关系?br />
2.ClassLoader有个getParent的方法,但是Ext ClassLoader调用后得到的?strong>nullQbootstrap是JVM自己的,用户看不到?br />
3.classloader?strong>委托机制Q当{比较低的ClassLoader要加载某个类的时候,它首先会hParent加蝲器来加蝲QParent再请求它的Parent
比如现在Ext要加载了Q它往上请求。如果最大的Bootstrap找不刎ͼ那么Boot会叫Ext自己找找QExt找不刎ͼ?strong>不会让下一U的AppL的,此时报出ClassNotFoundException

4.cA调用cBQB会要求调用它的类的类加蝲器来加蝲它,也就是B会要求加载A的加载器来加载B。这׃有个问题Q如果他们在一P那没关系Q肯定某个classloader会把它们俩都加蝲好。但是如果A?lib/ext文g夹中Q而B在Classpath中呢Q过E是q样的首先加载AQ那么一层层上到Bootstrap ClassloaderQboot没找到所以ext自己找,扑ֈ了,没问题;加蝲BQ因为A调用了BQ所以也从bootstrap来找Q没扑ֈQ然后A的ext classloader来找q是没找刎ͼ但是再也不会往下调用了Q于是报出ClassNotFoundException?br /> 但是现实生活中有很多应用Q比如JDBC核心Ҏ在核心库而驱动在扩展库,是必定在两个地方的,那怎么办呢Q要用到Context ClassLoader我们在徏立一个线EThread的时候,可以个线E通过setContextClassLoaderҎ来指定一个合适的classloader作ؓq个U程的context classloaderQ当此线E运行的时候,我们可以通过getContextClassLoaderҎ来获得此context classloaderQ就可以用它来蝲入我们所需要的Class。默认的是system classloader。利用这个特性,我们可以“打破”classloader委托机制了,父classloader可以获得当前U程的context classloaderQ而这个context classloader可以是它的子classloader或者其他的classloaderQ那么父classloader可以从其获得所需?ClassQ这打破了只能向父classloaderh的限制了。这个机制可以满_我们的classpath是在q行时才定,q由定制?classloader加蝲的时?由system classloader(卛_jvm classpath?加蝲的class可以通过context classloader获得定制的classloaderq加载入特定的class(通常是抽象类和接?定制的classloader中是其实?,例如web应用中的servlet是用这U机制加载的.

]]>
ArrayList 泛型问题http://m.tkk7.com/clraychen/archive/2007/12/23/169793.htmldu之ray的技术天I?/dc:creator>du之ray的技术天I?/author>Sun, 23 Dec 2007 07:22:00 GMThttp://m.tkk7.com/clraychen/archive/2007/12/23/169793.htmlhttp://m.tkk7.com/clraychen/comments/169793.htmlhttp://m.tkk7.com/clraychen/archive/2007/12/23/169793.html#Feedback0http://m.tkk7.com/clraychen/comments/commentRss/169793.htmlhttp://m.tkk7.com/clraychen/services/trackbacks/169793.html
The generics facility in Java can be used only for
object (reference) types.  It cannot be used primitive
types like 'int' or 'float'.

So, if you wanted an ArrayList that contained only
integer data, then you'd need to use the object type
which corresponds to int: java.lang.Integer.

   ArrayList<Integer> numbers;
   numbers = new ArrayList<Integer>(40);

Fortunately, the new Autobox/unbox features of Java can
make this work just like an ArrayList of int.

   numbers.add(27);

The value 27 will be automatically boxed as an Integer
object, then added to the ArrayList<Integer>.

For more information, consult
http://java.sun.com/developer/technicalArticles/J2SE/generics/index.html
http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf



]]>
看到有意思的一句话http://m.tkk7.com/clraychen/archive/2007/12/16/168134.htmldu之ray的技术天I?/dc:creator>du之ray的技术天I?/author>Sun, 16 Dec 2007 15:16:00 GMThttp://m.tkk7.com/clraychen/archive/2007/12/16/168134.htmlhttp://m.tkk7.com/clraychen/comments/168134.htmlhttp://m.tkk7.com/clraychen/archive/2007/12/16/168134.html#Feedback0http://m.tkk7.com/clraychen/comments/commentRss/168134.htmlhttp://m.tkk7.com/clraychen/services/trackbacks/168134.htmlfool can write code that a computer can understand. Good programmers write code that humans can understand."
- Martin Fowler, Refactoring - Improving the Design of Existing Code

]]>
Java的一些小l节Q四QCollection——《HardCore Java?/title><link>http://m.tkk7.com/clraychen/archive/2007/10/26/156250.html</link><dc:creator>du之ray的技术天I?/dc:creator><author>du之ray的技术天I?/author><pubDate>Fri, 26 Oct 2007 13:14:00 GMT</pubDate><guid>http://m.tkk7.com/clraychen/archive/2007/10/26/156250.html</guid><wfw:comment>http://m.tkk7.com/clraychen/comments/156250.html</wfw:comment><comments>http://m.tkk7.com/clraychen/archive/2007/10/26/156250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/clraychen/comments/commentRss/156250.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/clraychen/services/trackbacks/156250.html</trackback:ping><description><![CDATA[<font face="Times New Roman, serif"><strong style="font-size: 18pt">Interfaces</strong></font> <p style="margin-bottom: 0cm">有两U主要的<font face="Times New Roman, serif">Collection Types<br /> </font><font face="Times New Roman, serif">java.util.Map <br /> </font><font face="Times New Roman, serif">java.util.SortedMap<br /> </font><font face="Times New Roman, serif">java.util.Collection<br /> </font><font face="Times New Roman, serif">java.util.Set<br /> </font><font face="Times New Roman, serif">java.util.List<br /> </font><font face="Times New Roman, serif">java.util.SortedSet</font></p> <p style="margin-bottom: 0cm"><br /> </p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif"><strong style="font-size: 18pt">Implementations</strong></font></p> <p style="margin-bottom: 0cm" align="left"><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US">List</span></font></font></font><font color="#000000"><font size="3"><span lang="zh-CN">的三U实?/span></font></font></p> <p style="margin-bottom: 0cm" align="left"><font color="#000000"></font><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US">java.util.Vector<br /> </span></font></font></font><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US">java.util.ArrayList<br /> </span></font></font></font><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US">java.util.LinkedList</span></font></font></font></p> <p style="margin-bottom: 0cm" align="left"><font color="#000000"></font><font color="#000000"><font size="3"><span lang="zh-CN"><strong>三者的异同</strong></span></font></font><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US"><br /> </span></font></font></font><font color="#000000"><font size="3"><span lang="zh-CN">三者都是有序的Q一般就是加入的ơ序?/span></font></font></p> <p style="margin-bottom: 0cm" align="left"><font color="#000000"></font><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US">        Vector</span></font></font></font><font color="#000000"><font size="3"><span lang="zh-CN">?/span></font></font><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US">ArrayList</span></font></font></font><font color="#000000"><font size="3"><span lang="zh-CN">内部都是用数l实现的Q可以把它们惌成ؓ一个数l。当定w不够的时候,新Z个更大的数组Q然后把现在q个数组中的所有元素都拯厅R可以想象这U实现可以很方便的直接取Z要的某个元素而不用遍历。但是如果在中间删除或者插入元素,效率׃高了。甚xơ扩容的时候,都是很媄响效率的时候?/span></font></font></p> <p style="margin-bottom: 0cm" align="left"><font color="#000000"></font><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US">        Vector</span></font></font></font><font color="#000000"><font size="3"><span lang="zh-CN">?/span></font></font><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US">ArrayList</span></font></font></font><font color="#000000"><font size="3"><span lang="zh-CN">的区别就?/span></font></font><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US">Vector</span></font></font></font><font color="#000000"><font size="3"><span lang="zh-CN">是线E安全的Q但</span></font></font><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US">ArrayList</span></font></font></font><font color="#000000"><font size="3"><span lang="zh-CN">不是。因为实现线E安全是有代LQ如果应用中不需要线E安全,那么q</span></font></font><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US">ArrayList</span></font></font></font><font color="#000000"><font size="3"><span lang="zh-CN">Q如果需要线E安全那׃定要?/span></font></font><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US">Vector</span></font></font></font><font color="#000000"><font size="3"><span lang="zh-CN">?/span></font></font></p> <p style="margin-bottom: 0cm" align="left"><font color="#000000"></font><font color="#000000"><font size="3"><span lang="zh-CN">至于</span></font></font><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US">java</span></font></font></font><font color="#000000"><font size="3"><span lang="zh-CN">中的</span></font></font><font face="Times New Roman, serif"><font color="#000000"><font size="3"><span lang="en-US">LinkedList</span></font></font></font><font color="#000000"><font size="3"><span lang="zh-CN">Q其实在数据l构中就是双向链表。插入和删除元素都很快,但是要查找一个元素就慢了。有失必有得Q如何选择Q就看应用的情况了?/span></font></font></p> <p lang="zh-CN" style="margin-bottom: 0cm" align="left"><br /> </p> <p style="margin-bottom: 0cm"><strong style="font-size: 18pt"><font face="Times New Roman, serif">Map</font>?font face="Times New Roman, serif">SortedMap</font>的几U实?/strong></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">java.util.HashTable<br /> </font><font face="Times New Roman, serif">java.util.HashMap<br /> </font><font face="Times New Roman, serif">java.util.IdentityHashMap<br /> </font><font face="Times New Roman, serif">java.util.WeakHashMap</font></p> <p style="margin-bottom: 0cm">        以上四种都是无序的?font face="Times New Roman, serif">HashTable</font>?font face="Times New Roman, serif">HashMap</font>的区别是<font face="Times New Roman, serif">HashTable</font>是线E安全的?font face="Times New Roman, serif">HashMap</font>不是Q这个关pL点像<font face="Times New Roman, serif">Vector</font>?font face="Times New Roman, serif">ArrayList</font>?/p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">        IdentityHashMap</font>首先它是一?font face="Times New Roman, serif">HashMap</font>Q不同的是,它不是根?font face="Times New Roman, serif">equal()</font>函数来判断是否重复,只要不是同一个对象,哪怕这两个对象的数据都是一LQ那么就可以<font face="Times New Roman, serif">add</font>q来?/p> <p style="margin-bottom: 0cm"><br /> </p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">java.util.LinkedHashMap</font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">java.uil.TreeMap</font></p> <p style="margin-bottom: 0cm">        以上两种是有序的<font face="Times New Roman, serif">Map</font>Q可以进?font face="Times New Roman, serif">iterate</font>Q当然这是要付出效率代h的。两者不同之处,由名字便可知道,<font face="Times New Roman, serif">LinkedHashMap</font>用链表来l护q个ơ序Q?font face="Times New Roman, serif">TreeMap</font>是用二叉树来l护q个ơ序?/p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">Sets</font>?font face="Times New Roman, serif">SortedSets</font>的几U实?/p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">java.util.HashSet<br /> </font><font face="Times New Roman, serif">java.util.LinkedSet<br /> </font><font face="Times New Roman, serif">java.util.TreeSet</font></p> <p style="margin-bottom: 0cm">由名字就可知道什么意思了Q不多说?br /> <br /> </p> <p style="margin-bottom: 0cm"><strong style="font-size: 18pt"><font face="Times New Roman, serif">Collection</font>的选择</strong></p> <p style="margin-bottom: 0cm">        需要通过一?font face="Times New Roman, serif">key</font>扑ֈ一个元素吗Q?br /> <font face="Times New Roman, serif">        Yes</font>Q那q<font face="Times New Roman, serif">Map<br /> </font><font face="Times New Roman, serif">        No</font>Q那q<font face="Times New Roman, serif">Collection</font></p> <p style="margin-bottom: 0cm">       如果选择了一?font face="Times New Roman, serif">Collection</font>Q允讔R复元素吗Q?br /> <font face="Times New Roman, serif">       Yes</font>Q那q<font face="Times New Roman, serif">List<br /> </font><font face="Times New Roman, serif">       No</font>Q那q<font face="Times New Roman, serif">Set</font></p> <p style="margin-bottom: 0cm">       然后是军_要不?font face="Times New Roman, serif">Sorted...</font>q个比较难军_了?br />        如果常常?font face="Times New Roman, serif">sort</font>Q那q接选择<font face="Times New Roman, serif">sorted</font>的类?br />        如果偶尔或者根本不需?font face="Times New Roman, serif">sorted</font>Q那选择普通类型,需?font face="Times New Roman, serif">sort</font>的时候先拷到<font face="Times New Roman, serif">sorted</font>的类型中<font face="Times New Roman, serif">sort</font>一下?/p> <p style="margin-bottom: 0cm"><strong>三种<font face="Times New Roman, serif">Iterators</font></strong></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">java.util.Enumeration</font></p> <p style="margin-bottom: 0cm">q个基本?font face="Times New Roman, serif">Iterator</font>替代掉了Q但在某些场合,比如<font face="Times New Roman, serif">J2ME</font>中还可能用到?/p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">java.util.Iterator</font></p> <p style="margin-bottom: 0cm">用的最q泛</p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">java.util.ListIterator</font></p> <p style="margin-bottom: 0cm">双向?font face="Times New Roman, serif">Iterator</font>Q必ȝ在实?font face="Times New Roman, serif">List</font>?font face="Times New Roman, serif">Collection</font>上面?/p> <p style="margin-bottom: 0cm"><br /> </p> <p style="margin-bottom: 0cm"><strong><font face="Times New Roman, serif">PS</font>Q?/strong>很多<font face="Times New Roman, serif">Collection</font>提供的是<font face="Times New Roman, serif">Fail-Fast Iterators</font>Q就是在<font face="Times New Roman, serif">iterater</font>的时候,q个<font face="Times New Roman, serif">Collection</font>是不能被更改的,否则׃报出<font face="Times New Roman, serif">ConcurrentModificationException</font>在多U程环境下面其要注意?/p> <p style="margin-bottom: 0cm"><br /> </p> <img src ="http://m.tkk7.com/clraychen/aggbug/156250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/clraychen/" target="_blank">du之ray的技术天I?/a> 2007-10-26 21:14 <a href="http://m.tkk7.com/clraychen/archive/2007/10/26/156250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java的一些小l节Q三Q_final story——《HardCore Java?/title><link>http://m.tkk7.com/clraychen/archive/2007/10/23/155283.html</link><dc:creator>du之ray的技术天I?/dc:creator><author>du之ray的技术天I?/author><pubDate>Tue, 23 Oct 2007 06:07:00 GMT</pubDate><guid>http://m.tkk7.com/clraychen/archive/2007/10/23/155283.html</guid><wfw:comment>http://m.tkk7.com/clraychen/comments/155283.html</wfw:comment><comments>http://m.tkk7.com/clraychen/archive/2007/10/23/155283.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/clraychen/comments/commentRss/155283.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/clraychen/services/trackbacks/155283.html</trackback:ping><description><![CDATA[<font face="Times New Roman, serif"><strong>Final constrants</strong></font> <p style="margin-bottom: 0cm">       在编E中Q用<font face="Times New Roman, serif">final</font>变量来声明一些常量,q样׃用在每个用到q个帔R数字的地Ҏ入o人厌烦的复杂数字Q比?font face="Times New Roman, serif">PI</font>Q,只要打入q个帔R名字p了。这大家都知道,可是要注意,q种帔R是在~译阶段才被替换的(所谓替换,是把程序中用到q个帔R名字的地方,用常量本w来替代Q。那意味着Q如果其它类用到了这个常量,如果帔R的值发生了更改Q那用到q个帔R的类必须重新<font face="Times New Roman, serif">build</font>一下,否则那个c里q是以前的倹{?font face="Times New Roman, serif"><br /> </font><br /> </p> <p style="margin-bottom: 0cm">        如果在程序中你用C<font face="Times New Roman, serif">private final static</font>帔RQƈ且只在某一个方法内用到Q那么你应该把它的声明移到方法以内。如果被两个以上的方法用刎ͼ那么q是留在cd明里?/p> <p style="margin-bottom: 0cm">UdҎ内部后,不用?font face="Times New Roman, serif">private</font>关键字,而且E序看v来比较简单?/p> <p style="margin-bottom: 0cm"><br /> </p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif"><strong>Final Variables</strong></font></p> <p style="margin-bottom: 0cm">首先写个例子</p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">public static String someMethod(final String environmentKey){</font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif"><font color="#800000"><strong>           final</strong></font> String key = "env." + environmentKey;</font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">          System.out.println("Key is :" + key);</font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">           return (System.getProperty(key));</font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">}</font></p> <p style="margin-bottom: 0cm">        ?font face="Times New Roman, serif">method</font>中声明的<font face="Times New Roman, serif"><font color="#800000"><strong>final</strong></font></font>变量和常量是不同的,不同之处在于<font face="Times New Roman, serif">method-scoped final variables are variable</font>。每ơ进入这个方法内部,q个变量p初始化一ơ。当Ӟq些变量都是q行时进行替换,而不像常量是在编译时q行替换?/p> <p style="margin-bottom: 0cm"><br /> </p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif"><strong>Final Parameters</strong></font></p> <p style="margin-bottom: 0cm">方法的<font face="Times New Roman, serif">parameters</font>声明?font face="Times New Roman, serif"><font color="#800000"><strong>final</strong></font></font>Q可以防止,在方法体内部q个参数被篡攏V很好的<font face="Times New Roman, serif">best practice</font>?/p> <p style="margin-bottom: 0cm"><br /> </p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif"><strong>Final Collections</strong></font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">        public <font color="#800000"><strong>final</strong></font> static Set VALID_COLORS; </font>q句语句是不是声明了一?font face="Times New Roman, serif">final set</font>Q答案是<font face="Times New Roman, serif">NO</font>。这只是声明了一?font face="Times New Roman, serif"><font color="#800000"><strong>final</strong></font></font>引用Q也是<font face="Times New Roman, serif">VALID_COLORS</font>q个引用不能被更攏V?/p> <p style="margin-bottom: 0cm">        如果重新声明一个引用指向这个对象,那么q个对象q是能够更改的,所以这q不是一?font face="Times New Roman, serif">final set</font>。那么怎样做才能真正得C?font face="Times New Roman, serif">final set</font>呢?</p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">public final static Set VALID_COLORS;</font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif"><font color="#0000ff">static{</font></font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">Set temp = new HashSet();</font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">temp.add(Color.red);</font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">temp.add(Color.blue);</font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">...</font></p> <p style="margin-bottom: 0cm"><font color="#800000"></font><font face="Times New Roman, serif"><font color="#0000ff"><strong>VALID_COLORS = Collections.unmodifiableSet(temp);</strong></font></font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif"><font color="#0000ff">}</font></font><br /> </p> <p style="margin-bottom: 0cm">        在实现自q<font face="Times New Roman, serif">unmodifiable collections factory</font>的时候,除了要实?font face="Times New Roman, serif">Collection</font>Q?font face="Times New Roman, serif">seriallizable</font>接口以外Q对?font face="Times New Roman, serif">Collection</font>中定义的写操作,要重载。方法体中可以简单地抛出<font face="Times New Roman, serif"><em><u>UnsupportedOperationException</u></em></font>异常?br /> </p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif"><strong>Instance-Scoped Variables</strong></font></p> <p style="margin-bottom: 0cm; widows: 0; orphans: 0" align="left">        说白了,是那些在对象被实例化的时候才被初始化的属性,q且是不能被修改的。那么就把他声明?font face="Times New Roman, serif"><font color="#800000"><font face="Times New Roman, serif"><font size="3"><span lang="en-US"><strong>final</strong></span></font></font></font></font>吧?/p> <p style="margin-bottom: 0cm; widows: 0; orphans: 0" align="left"><font face="Times New Roman, serif">ex</font>Q?font face="Times New Roman, serif">private <font color="#800000"><font face="Times New Roman, serif"><font size="3"><span lang="en-US"><strong>final</strong></span></font></font></font> Date creationDate =</font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">Calendar.getInstance(TimeZone.getTimeZone("GMT")).getTime();</font></p> <p style="margin-bottom: 0cm">q么做的话,可以防止误操作Q改变这个本来不应该变的倹{?/p> <p style="margin-bottom: 0cm"><br /> </p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif"><strong>Final Classes</strong></font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">ex: </font></p> <p style="margin-bottom: 0cm; widows: 0; orphans: 0" align="left"><font face="Times New Roman, serif">public<font color="#800000"><font face="Times New Roman, serif"><font size="3"><span lang="en-US"><strong> final</strong></span></font></font></font> class SomeClass(){</font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">//...Class contents</font></p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif">}</font></p> <p style="margin-bottom: 0cm">        q样?font face="Times New Roman, serif">class </font>不能被ѝ?/p> <p style="margin-bottom: 0cm">        q有一U方法实玎ͼ是把它所有的构造函数都Ҏ<font face="Times New Roman, serif">private</font>的?/p> <p style="margin-bottom: 0cm">        q在设计模式?font face="Times New Roman, serif">sigleton</font>模式中见q,但这限制了q个cȝ重用Q所以取个折P可以把构造函数声明成<font face="Times New Roman, serif">protected</font>的?/p> <p style="margin-bottom: 0cm"><br /> </p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif"><strong>Final Method</strong></font></p> <p style="margin-bottom: 0cm">q个很熟悉了Q一个类中的某个Ҏ如果被声明成<font face="Times New Roman, serif">final</font>的,那么q个cȝ子类是不?font face="Times New Roman, serif"><u>override</u></font>q个Ҏ的?/p> <p style="margin-bottom: 0cm"><br /> </p> <p style="margin-bottom: 0cm"><font face="Times New Roman, serif"><strong>Conditional Complilation</strong></font></p> <p style="margin-bottom: 0cm">        ~程的时候我们常怼使用<font face="Times New Roman, serif">System.out.println(".....");</font>来显CZ些程序的q行情况Q但在真正交付的时候,我们q不希望q些语句被编译到<font face="Times New Roman, serif">class</font>文g里面厅R?/p> <p style="margin-bottom: 0cm">        一个做法是所有这U类型的语句前面加上一?font face="Times New Roman, serif"><font color="#0000ff">if(booleanParameter)</font></font>Q然后通过讄q个<font face="Times New Roman, serif"><font color="#0000ff">booleanParameter</font></font>来实现要不要q行q些语句Q编译器在编译的时候如果发?font face="Times New Roman, serif">if</font>里面的语句不可达Q那么会这些程序代码直接去掉?/p> <p style="margin-bottom: 0cm">        疑问是q些<font face="Times New Roman, serif"><font color="#0000ff">booleanParameter</font></font>攑֜哪里比较好和方便。作者给出的是在包中专门Z个类Q里面存放这些静态的<font face="Times New Roman, serif"><font color="#0000ff">boolean</font></font>帔RQ当Ӟ命名的时候要仔细。名字要指出用在哪里?/p> <img src ="http://m.tkk7.com/clraychen/aggbug/155283.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/clraychen/" target="_blank">du之ray的技术天I?/a> 2007-10-23 14:07 <a href="http://m.tkk7.com/clraychen/archive/2007/10/23/155283.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java的一些小l节Q二Q——《HardCore Java?/title><link>http://m.tkk7.com/clraychen/archive/2007/10/22/154878.html</link><dc:creator>du之ray的技术天I?/dc:creator><author>du之ray的技术天I?/author><pubDate>Mon, 22 Oct 2007 02:15:00 GMT</pubDate><guid>http://m.tkk7.com/clraychen/archive/2007/10/22/154878.html</guid><wfw:comment>http://m.tkk7.com/clraychen/comments/154878.html</wfw:comment><comments>http://m.tkk7.com/clraychen/archive/2007/10/22/154878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/clraychen/comments/commentRss/154878.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/clraychen/services/trackbacks/154878.html</trackback:ping><description><![CDATA[<p style="margin-bottom: 0cm"><span lang="en-US">1.Java</span><span lang="zh-CN">没有指针Q?/span><span lang="en-US">No</span><span lang="zh-CN">Q?/span><span lang="en-US">Java</span><span lang="zh-CN">只是没有针对指针的算法。引用其实已l包含了指针?/span></p> <p style="margin-bottom: 0cm">2.RTTI——Runtime type identificationQ作用就是告诉你整个object是属于什么类型的。最常用的是getClass()Ҏ?/p> <p style="margin-bottom: 0cm">3.只在for循环中用到的变量Q就在for循环中声明和分配Q不用担心会循环分配内存?/p> <p style="margin-bottom: 0cm">比如Q?/p> <p style="margin-bottom: 0cm">for(int i =0;i<10;i++){</p> <p style="margin-bottom: 0cm">String s = a[i];</p> <p style="margin-bottom: 0cm">}</p> <p style="margin-bottom: 0cm">sq不会@环newQ编译器会处理,让它只在W一ơ分配内存?br /> 前面~程Q我q特意把sUd外面d……汗啊</p> <p style="margin-bottom: 0cm">4.switch语句中,如果在default语句中加一个break是完全没有用的。因为在那个地方的breakҎ׃会被执行?/p> <p style="margin-bottom: 0cm">5.continue</p> <p style="margin-bottom: 0cm">for(int idx=0;idx<1000,idx++){</p> <p style="margin-bottom: 0cm">if(idx==555){continue;}</p> <p style="margin-bottom: 0cm">}</p> <p style="margin-bottom: 0cm">在这个例子中Q@环仅仅蟩q了555Q如果程序中遇到cM要蟩q某个点的情况,可以q么利用continueQ会减少很多代码?/p> <p style="margin-bottom: 0cm"><br /> </p> <p style="margin-bottom: 0cm">6.chaining constructor</p> <p style="margin-bottom: 0cm">zȝsuper()、this(){,来羃减构造函数的复杂度?/p> <p style="margin-bottom: 0cm"><br /> </p> <p style="margin-bottom: 0cm">7.private for attributes </p> <p style="margin-bottom: 0cm">   public for public methods</p> <p style="margin-bottom: 0cm">   protected for helper methods</p> <p style="margin-bottom: 0cm"><br /> </p> <p style="margin-bottom: 0cm">8.In Java, instances of the same class are friends and give unrestricted access to all of their properties and methods.</p> <p style="margin-bottom: 0cm">比如</p> <p style="margin-bottom: 0cm">if((obj.value==5)&&(this.value==5)){</p> <p style="margin-bottom: 0cm">obj.value=25;</p> <p style="margin-bottom: 0cm">} </p> <p style="margin-bottom: 0cm">q里面蟩q了setterҎQ直接给属性赋|q是很危险的做法。解决的Ҏ是无Z么方法给对象中的属性赋值都要通过setterҎ?/p> <p style="margin-bottom: 0cm"><br /> </p> <p style="margin-bottom: 0cm">9.对于问题代码要尽量用throw exception告知用户Q因为有时候不知道代码的执行环境,如EJB{等Q很多环境都是没有Console的,若是单的System.out.println 可能解决不了问题?/p> <img src ="http://m.tkk7.com/clraychen/aggbug/154878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/clraychen/" target="_blank">du之ray的技术天I?/a> 2007-10-22 10:15 <a href="http://m.tkk7.com/clraychen/archive/2007/10/22/154878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDBCȝhttp://m.tkk7.com/clraychen/archive/2007/10/21/154739.htmldu之ray的技术天I?/dc:creator>du之ray的技术天I?/author>Sun, 21 Oct 2007 10:41:00 GMThttp://m.tkk7.com/clraychen/archive/2007/10/21/154739.htmlhttp://m.tkk7.com/clraychen/comments/154739.htmlhttp://m.tkk7.com/clraychen/archive/2007/10/21/154739.html#Feedback0http://m.tkk7.com/clraychen/comments/commentRss/154739.htmlhttp://m.tkk7.com/clraychen/services/trackbacks/154739.htmlJDBC 主要有两U方?/span>

DriverManager机制Q?/span>java.sql核心API

DataSource机制Q?/span>javax.sql可扩?/span>API

DriverManager机制Q?/span>

stetp1Q注册驱动程?/span>

Q?/span>1Q隐式注?/span>Class.forName("JDBCDriverName");

Q?/span>2Q显C注?/span>DriverMnager.registerDriver(new JDBCDriverName());

step 2:建立数据库连?/span>

Connection conn = DriverManager.getConnection(URL,username,password);

//其中URLQ?/span>jdbc:driver:databasename

step3:SQL操作

DataSource机制

step1Q查询数据源对象

Context ctx = new InitialContext();

DataSource ds = (DataSource)ctx.lookup(DataSourceJNDIName);

step2Q获取数据库q接

Connection con = ds.getConnection();

step3Q?/span>SQL操作

SQL操作

Q?/span>1Q?/span>Statement

      Statement stmt = con.createStatement();

      stmt.executeUpdate("SQL语句");

      stmt.close();

Q?/span>2Q?/span>PreparedStatement

      例子

      PreparedStatement psmt = conn.preparedStatement("INSERT INTO employee                                                  VALUES(?,?,?)");

       psmt.setString(1,"Benjamin");

       psmt.setString(2,"France");

       psmt.setInt(3,55);

       int opNum = psmt.executeUpdate();

       q可以批量处?/span>

       psmt.setString(1,"Benjamin");

       psmt.setString(2,"France");

       psmt.setInt(3,55);

       psmt.addBatch();

       psmt.setString(1,"Rob");

       psmt.setString(2,"America");

       psmt.setInt(3,56);

       psmt.addBatch();

       int [] updateCounts = psmt.executeBatch();

关于ResultSet

ResultSet rs = stmt.executeQuery("SQL");

next()—?span style="font-family: 宋体">Ud下一行,如果没有了则q回false。常常放?/span>while(rs.next)用来循环取数?/span>

getString(String ColumnName)

absolute(int row)

beforeFist()

isAfterLast()

isBeforeFirst()

isFirst()

isLast()

refreshRow()

关于元数?/span>

所谓元数据是描述数据的数据,q里当然指列名等{信息了

ResultSetMetaData rsmd = rs.getMetaData();

rsmd.getColumnCount();

rsmd.getColumnName(index);



]]>
Java 的一些小l节Q一Q——《Java׃培训教程?/title><link>http://m.tkk7.com/clraychen/archive/2007/10/10/151653.html</link><dc:creator>du之ray的技术天I?/dc:creator><author>du之ray的技术天I?/author><pubDate>Wed, 10 Oct 2007 02:51:00 GMT</pubDate><guid>http://m.tkk7.com/clraychen/archive/2007/10/10/151653.html</guid><wfw:comment>http://m.tkk7.com/clraychen/comments/151653.html</wfw:comment><comments>http://m.tkk7.com/clraychen/archive/2007/10/10/151653.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/clraychen/comments/commentRss/151653.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/clraychen/services/trackbacks/151653.html</trackback:ping><description><![CDATA[  <p><strong>Java</strong><strong><span style="font-family: 宋体">cd相关</span></strong></p> <table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1"> <tbody> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 142pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p><span style="font-family: 宋体">cd?/span></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 142.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p><span style="font-family: 宋体">大小</span></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 142.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p><span style="font-family: 宋体">取D?/span></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 142pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p>byte</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 142.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p>8 bits</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 142.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p>-128<span style="font-family: 宋体">?/span>127</p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 142pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p>short</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 142.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p>16 bits</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 142.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p>-32768~32767</p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 142pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p>int </p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 142.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p>32 bits</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 142.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"></td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 142pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p>long</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 142.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p>64 bits</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 142.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"></td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 142pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p>float</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 142.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p>32 bits</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 142.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"></td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 142pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p>double</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 142.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"> <p>64 bits</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 142.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="189"></td> </tr> </tbody> </table> <p><strong>Java</strong><strong><span style="font-family: 宋体">帔R</span></strong></p> <p><span style="font-family: 宋体">?/span><span style="font-family: 宋体">十进制不能以</span><span style="color: #3366ff">0</span><span style="font-family: 宋体">打头Q数?/span>0<span style="font-family: 宋体">除外Q?/span></p> <p><span style="font-family: 宋体">?/span><span style="font-family: 宋体">十六q制必须?/span><span style="color: #3366ff">0x</span><span style="font-family: 宋体">或?/span><span style="color: #3366ff">0X</span><span style="font-family: 宋体">打头</span></p> <p><span style="font-family: 宋体">?/span><span style="font-family: 宋体">八进制必M</span><span style="color: #3366ff">0</span><span style="font-family: 宋体">打头</span></p> <p><span style="font-family: 宋体">?/span><span style="font-family: 宋体">长整型必M</span><span style="color: #3366ff">L</span><span style="font-family: 宋体">l尾</span></p> <p><span style="font-family: 宋体">?/span><span style="font-family: 宋体">数帔R默认?/span><span style="color: #3366ff">double</span><span style="font-family: 宋体">型,如果要将数赋值给</span><span style="color: #3366ff">float</span><span style="font-family: 宋体">变量Q数字后面要?/span><span style="color: #3366ff">f</span></p> <p><strong>final</strong><strong><span style="font-family: 宋体">关键?/span></strong></p> <p>final <span style="font-family: 宋体">标记的类不能被?/span></p> <p>final <span style="font-family: 宋体">变量是常量,不能改变</span></p> <p>final <span style="font-family: 宋体">Ҏ不能被子c重?/span></p> <p><strong>Java</strong><strong><span style="font-family: 宋体">变量</span></strong></p> <p><span style="font-family: 宋体">Q?/span>1<span style="font-family: 宋体">Q当发生隐式cd转换Ӟ<span style="color: #3366ff">目标cd</span>取D围要大于<span style="color: #3366ff">源类?/span>取D?/span></p> <p><span style="font-family: 宋体">Q?/span>2<span style="font-family: 宋体">Q字W串可以使用加号同其它的数据cd相连而Ş成一个新的字W串</span></p> <p style="text-indent: 21pt">Example<span style="font-family: 宋体">Q?/span></p> <p style="text-indent: 21pt">System.out.println(‘a’+1);    <span style="font-family: 宋体">输出的是</span>98</p> <p style="text-indent: 21pt">System.out.println(“”+’a’+1); <span style="font-family: 宋体">输出的是</span>”a1”</p> <p><span style="font-family: 宋体">Q?/span>3<span style="font-family: 宋体">Q?span style="color: #3366ff">局部变?/span>一定要q行初始?/span></p> <p>        <span style="font-family: 宋体">~译的时候可能只是警告,但在使用时就会报?/span></p> <p><strong>Java</strong><strong><span style="font-family: 宋体">q算</span></strong></p> <p style="margin-left: 36pt; text-indent: -36pt; tab-stops: list 36.0pt">Q?Q?span style="font: 7pt 'Times New Roman'">       </span><span style="font-family: 宋体">整数之间做除法时Q只保留整数部分而舍弃小数部分?/span></p> <p style="margin-left: 36pt; text-indent: -36pt; tab-stops: list 36.0pt">Q?Q?span style="font: 7pt 'Times New Roman'">       </span><span style="font-family: 宋体">Lq样的习惯:?/span>x==3 <span style="font-family: 宋体">写成</span> 3==x</p> <p style="margin-left: 36pt; text-indent: -36pt; tab-stops: list 36.0pt">Q?Q?span style="font: 7pt 'Times New Roman'">       </span>&<span style="font-family: 宋体">?/span>&&<span style="font-family: 宋体">的区?/span> </p> <p style="margin-left: 36pt">&&<span style="font-family: 宋体">UCؓ短\表达式,意思就?/span>&<span style="font-family: 宋体">不管两边?/span>true<span style="font-family: 宋体">或?/span>false<span style="font-family: 宋体">都会一下,?/span>&&<span style="font-family: 宋体">如果到前面的是</span>false<span style="font-family: 宋体">Q它后面׃了Q反正综合v来表辑ּ肯定?/span>false<span style="font-family: 宋体">?/span></p> <p style="margin-left: 36pt; text-indent: -36pt; tab-stops: list 36.0pt">Q?Q?span style="font: 7pt 'Times New Roman'">       </span><span style="font-family: 宋体">位运?/span></p> <p style="margin-left: 36pt"><< <span style="font-family: 宋体">左移</span></p> <p style="margin-left: 36pt">>> <span style="font-family: 宋体">右移</span></p> <p style="margin-left: 51.75pt; text-indent: -15.75pt">   <span style="font-family: 宋体">如果最高位?/span>0<span style="font-family: 宋体">Q左边移I的高位填</span>0<span style="font-family: 宋体">Q如果最高位?/span>1<span style="font-family: 宋体">Q左边移I的高位填?/span>1</p> <p style="margin-left: 36pt">>>> <span style="font-family: 宋体">无符号右U?/span></p> <p style="margin-left: 36pt">   <span style="font-family: 宋体">不管最高位是什么,Uȝ的高位一律填?/span>0</p> <p style="margin-left: 36pt"><span style="font-family: 宋体">右移</span>n<span style="font-family: 宋体">位就是除?/span>2<span style="font-family: 宋体">?/span>n<span style="font-family: 宋体">ơ方</span></p> <p style="margin-left: 36pt"><span style="font-family: 宋体">左移</span>n<span style="font-family: 宋体">位就是乘?/span>2<span style="font-family: 宋体">?/span>n<span style="font-family: 宋体">ơ方</span></p> <p><strong>Java</strong><strong><span style="font-family: 宋体">内存</span></strong></p> <p><span style="font-family: 宋体">Q?/span>1<span style="font-family: 宋体">Q?/span>Java<span style="font-family: 宋体">内存分ؓ两种Q?/span></p> <p style="text-indent: 21pt"><span style="font-family: 宋体">?/span><span style="color: #3366ff; font-family: 宋体">栈内?/span><span style="font-family: 宋体">Q用于存攑֟本类型变量和对象的引用变?/span></p> <p style="text-indent: 21pt"><span style="font-family: 宋体">?/span><span style="color: #3366ff; font-family: 宋体">堆内?/span><span style="font-family: 宋体">Q?/span>new<span style="font-family: 宋体">创徏的对象和数组</span></p> <p><span style="font-family: 宋体">Q?/span>2<span style="font-family: 宋体">Q当堆内存中的对象没有引用指向它Ӟ它就变成了垃圾,会被垃圾回收器回收?/span></p> <p><strong>Java</strong><strong><span style="font-family: 宋体">面向对象</span></strong></p> <p><span style="font-family: 宋体">Q?/span>1<span style="font-family: 宋体">Q?/span>= =<span style="font-family: 宋体">常用来比较引用是否指向同一个地址</span></p> <p>     equals()<span style="font-family: 宋体">用来比较对象的内Ҏ否一?/span></p> <p>     <span style="font-family: 宋体">对于数组?/span>Array.equals<span style="font-family: 宋体">Ҏ</span></p> <p style="margin-left: 26.25pt; text-indent: -26.25pt"><span style="font-family: 宋体">Q?/span>2<span style="font-family: 宋体">Q?/span>finalize()<span style="font-family: 宋体">ҎQ它相当?/span>C++<span style="font-family: 宋体">中的析构函数Q但又和析构函数不一栗因?/span>Java<span style="font-family: 宋体">里面已经有垃圑֛收器了,所?/span>finalize<span style="font-family: 宋体">Ҏ不是特别重要。另外,</span>finalize<span style="font-family: 宋体">是在对象被当成垃圾从内存中释攑։调用Q而不是在对象变成垃圾前调用,垃圾回收器什么时候清理垃圾是不定时的Q所以不要指望用</span>finalize<span style="font-family: 宋体">做什么必要的收尾工作Q因ZҎ无法定它会赶在垃圾回收器之前执行?/span></p> <p style="margin-left: 26.25pt; text-indent: -26.25pt"><span style="font-family: 宋体">Q?/span>3<span style="font-family: 宋体">Q?/span>System.gc()<span style="font-family: 宋体">q个语句可以昑ּ地调用垃圑֛收器回收垃圾?/span></p> <p style="margin-left: 26.35pt; text-indent: -26.35pt"><strong>Java</strong><strong><span style="font-family: 宋体">参数传?/span></strong></p> <p style="margin-left: 36pt; text-indent: -36pt; tab-stops: list 36.0pt">Q?Q?span style="font: 7pt 'Times New Roman'">       </span><span style="font-family: 宋体">基本cd的变量作为实参传递,q不能改变这个变量的?/span></p> <p style="margin-left: 36pt"><span style="font-family: 宋体">举个例子Q就?/span>main<span style="font-family: 宋体">函数里面定义的一个变量,传给一个方法,改下|其实q没有改?/span>main<span style="font-family: 宋体">函数里面那个变量而是改了那个Ҏ自己内部的那个副本?/span></p> <p style="margin-left: 36pt; text-indent: -36pt; tab-stops: list 36.0pt">Q?Q?span style="font: 7pt 'Times New Roman'">       </span><span style="font-family: 宋体">那如果传递的是某个对象的引用呢?</span></p> <p style="margin-left: 36pt"><span style="font-family: 宋体">道理一P传递的是|q个“?#8221;是引用?#8220;?#8221;Q也是对象的内存地址Q方法通过q个地址对变量进行的修改Q当然就是对</span>main<span style="font-family: 宋体">函数中定义的q个变量本n的修改了?/span></p> <p><strong>Java</strong><strong><span style="font-family: 宋体">内部c?/span></strong></p> <p>A<span style="font-family: 宋体">c里面定义了</span>B<span style="font-family: 宋体">c,那么</span>B<span style="font-family: 宋体">叫做内部类Q?/span>A<span style="font-family: 宋体">叫做外部类?/span></p> <p>B<span style="font-family: 宋体">可以直接讉K</span>A<span style="font-family: 宋体">cȝ所有变量和ҎQ反之不成立?/span></p> <p>B<span style="font-family: 宋体">cM存了</span>A<span style="font-family: 宋体">cȝ</span><span style="color: #3366ff">this</span><span style="font-family: 宋体">引用?/span></p> <p><span style="font-family: 宋体">内部cd以是</span>static<span style="font-family: 宋体">?/span></p> <p><span style="font-family: 宋体">如果内部c被声明?/span>static<span style="font-family: 宋体">Q那么它可以包含</span>static<span style="font-family: 宋体">的变量,但不再能讉K外部cȝ?/span>static<span style="font-family: 宋体">变量?/span></p> <p><span style="font-family: 宋体">Ҏ内定义的内部c,只能讉KҎ中的</span>final<span style="font-family: 宋体">变量Q而不能访问时变量,但可以访问外部类的变量?/span></p> <p><strong>Java</strong><strong><span style="font-family: 宋体">异常</span></strong></p> <p style="margin-left: 36pt; text-indent: -36pt; tab-stops: list 36.0pt">Q?Q?span style="font: 7pt 'Times New Roman'">       </span><span style="font-family: 宋体">一个方法被覆盖Ӟ覆盖它的Ҏ必须抛出相同的异常或异常的子c?/span></p> <p style="margin-left: 36pt; text-indent: -36pt; tab-stops: list 36.0pt">Q?Q?span style="font: 7pt 'Times New Roman'">       </span><span style="font-family: 宋体">如果父类抛出多个异常Q那么覆盖方法必L出那些异常的一个子集,也就是说Q不能抛出新的异常?/span></p> <p><strong>Java</strong><strong><span style="font-family: 宋体">U程</span></strong></p> <p><span style="font-family: 宋体">两种实现多线E方?/span></p> <p style="margin-left: 36pt; text-indent: -36pt; tab-stops: list 36.0pt">Q?Q?span style="font: 7pt 'Times New Roman'">       </span><span style="font-family: 宋体">直接l承</span>Thread </p> <p style="margin-left: 36pt">MyThread <span style="color: #3366ff">extends Thread</span></p> <p style="margin-left: 36pt"><span style="font-family: 宋体">然后</span></p> <p style="margin-left: 36pt">MyThread t = new MyTread();</p> <p style="margin-left: 36pt">t.start();</p> <p style="margin-left: 36pt">t.start();</p> <p style="margin-left: 36pt"><span style="font-family: 宋体">值得注意的是Q无?/span>start<span style="font-family: 宋体">多少遍只能启动一个线E?/span></p> <p style="margin-left: 36pt"><span style="font-family: 宋体">要实现多个线E,只能生成多个对象Q分别启动线E,一个对象只能启动一个线E?/span></p> <p style="margin-left: 36pt; text-indent: -36pt; tab-stops: list 36.0pt">Q?Q?span style="font: 7pt 'Times New Roman'">       </span><span style="font-family: 宋体">实现</span>Runnable<span style="font-family: 宋体">接口</span></p> <p style="margin-left: 36pt">MyThread <span style="color: #3366ff">implements Runnalbe</span></p> <p style="margin-left: 36pt"><span style="font-family: 宋体">然后</span></p> <p style="margin-left: 36pt">new Thread(t).start();</p> <p style="margin-left: 36pt">new Thread(t).start();</p> <p style="margin-left: 36pt"><span style="font-family: 宋体">q种Ҏp实现多个U程?/span></p> <p><span style="font-family: 宋体">但这两种Ҏ启动的多个线E又有不一L地方Q?/span></p> <p><span style="font-family: 宋体">W一U因为是生成了多个对象,所以类中声明的一些资源,比如变量{等都是各不相关的?/span></p> <p><span style="font-family: 宋体">W二U对cM声明的资源是多个U程׃n的?/span></p> <p><span style="font-family: 宋体">所以要按需选择?/span></p> <p><strong>Java String</strong><strong><span style="font-family: 宋体">?/span>StringBuffer</strong></p> <p><span style="color: #3366ff">String </span><span style="font-family: 宋体">对象不能L被改变,l常用的“</span>+<span style="font-family: 宋体">”其实是新生成了一?/span><span style="color: #3366ff">String</span><span style="font-family: 宋体">对象Q^常感觉不大,但是真的在大型应用中Q对效率影响非常严重?/span></p> <p><span style="color: #3366ff">StringBuffer</span><span style="font-family: 宋体">对象可以改动Q一旦生成了不再变化的内容,可以调用它?/span><span style="color: #3366ff">toString</span><span style="font-family: 宋体">ҎQ把它{化ؓ</span>String<span style="font-family: 宋体">对象?/span></p> <img src ="http://m.tkk7.com/clraychen/aggbug/151653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/clraychen/" target="_blank">du之ray的技术天I?/a> 2007-10-10 10:51 <a href="http://m.tkk7.com/clraychen/archive/2007/10/10/151653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>郁闷?/title><link>http://m.tkk7.com/clraychen/archive/2006/06/14/52608.html</link><dc:creator>du之ray的技术天I?/dc:creator><author>du之ray的技术天I?/author><pubDate>Tue, 13 Jun 2006 16:41:00 GMT</pubDate><guid>http://m.tkk7.com/clraychen/archive/2006/06/14/52608.html</guid><wfw:comment>http://m.tkk7.com/clraychen/comments/52608.html</wfw:comment><comments>http://m.tkk7.com/clraychen/archive/2006/06/14/52608.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/clraychen/comments/commentRss/52608.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/clraychen/services/trackbacks/52608.html</trackback:ping><description><![CDATA[要做软工作业了,把以前的东西要翻出来了?br /><br />本来想马上配好myeclipse+jboss+mysql的,但不知道是什么原因老是说配|错误。网上也扑ֈ了类似的错误Q但也没有很好的解答?br /><br />逼的我没办法Q只好重装jdkQ终于行了,但要睡觉咯……因为后面还有考试?img src ="http://m.tkk7.com/clraychen/aggbug/52608.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/clraychen/" target="_blank">du之ray的技术天I?/a> 2006-06-14 00:41 <a href="http://m.tkk7.com/clraychen/archive/2006/06/14/52608.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://taoh2517.com" target="_blank">hƵѹۿ</a>| <a href="http://tvnxl.com" target="_blank">ۺС˵ͼƬͼ</a>| <a href="http://czhos.com" target="_blank">޳aƬ߿</a>| <a href="http://apguangyu.com" target="_blank">Ƶվ߹ۿ</a>| <a href="http://3334598.com" target="_blank">۲Ƶwwwѹۿ </a>| <a href="http://chiguigu.com" target="_blank">aëƬ߻վ</a>| <a href="http://3789re.com" target="_blank">mvߵӰ</a>| <a href="http://789xxoo.com" target="_blank">պһƵ</a>| <a href="http://66eeb.com" target="_blank">þþƷվ</a>| <a href="http://www876444.com" target="_blank"> ˬ AVˬ</a>| <a href="http://jnyygs.com" target="_blank">˾ƷƵ</a>| <a href="http://takiku.com" target="_blank">ëƬƵ߹ۿ</a>| <a href="http://tsj68.com" target="_blank">ɫͼС˵ר</a>| <a href="http://chinaedubrand.com" target="_blank">þúݺݰۺӰԺ </a>| <a href="http://www-774220.com" target="_blank">ɫ˿ѹۿվ</a>| <a href="http://rimcn.com" target="_blank">91avѹۿ</a>| <a href="http://sdbfgcjx.com" target="_blank">AvƷþ </a>| <a href="http://wwwse09.com" target="_blank">˳ѵӰ</a>| <a href="http://qqcnm.com" target="_blank">޹Ʒ13p</a>| <a href="http://51wdn.com" target="_blank">˾þþƷ</a>| <a href="http://4eeyy.com" target="_blank">72paoƵ</a>| <a href="http://masfd.com" target="_blank">xxxxxƵ</a>| <a href="http://bentuxinli.com" target="_blank">޹þþþþþ</a>| <a href="http://zz4466.com" target="_blank">޸һƷ</a>| <a href="http://twtairun.com" target="_blank">Ļ˾Ʒ</a>| <a href="http://78555yy.com" target="_blank">92˾ƷƵ</a>| <a href="http://yg36.com" target="_blank">ŷպþAV </a>| <a href="http://www55nana.com" target="_blank">޷</a>| <a href="http://lookvod.com" target="_blank">þø߳һëƬ</a>| <a href="http://vc77777.com" target="_blank">ƹƵ߿</a>| <a href="http://7766ks.com" target="_blank">鸣ۺĻһƵ1 </a>| <a href="http://gs168sz.com" target="_blank">ŮƷƵ</a>| <a href="http://35469642.com" target="_blank">aѸɫƬ</a>| <a href="http://wuhhz.com" target="_blank">ձzzzzwwwƬ</a>| <a href="http://yg1617.com" target="_blank">˾þô߽</a>| <a href="http://gylscm.com" target="_blank">츾AVһ˳</a>| <a href="http://331927.com" target="_blank">þҹӰԺѹۿ</a>| <a href="http://8568008.com" target="_blank">þþƷAV</a>| <a href="http://dw168cn.com" target="_blank">ҸŮˬ߳Ƭ</a>| <a href="http://727744.com" target="_blank">þwww˳ɿƬ</a>| <a href="http://btztjxc.com" target="_blank">Ʒһ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>