﻿<?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-irusist</title><link>http://www.blogjava.net/irusist/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 09:40:30 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 09:40:30 GMT</pubDate><ttl>60</ttl><item><title>重新写博客</title><link>http://www.blogjava.net/irusist/archive/2015/12/31/428881.html</link><dc:creator>irusisit</dc:creator><author>irusisit</author><pubDate>Wed, 30 Dec 2015 16:37:00 GMT</pubDate><guid>http://www.blogjava.net/irusist/archive/2015/12/31/428881.html</guid><wfw:comment>http://www.blogjava.net/irusist/comments/428881.html</wfw:comment><comments>http://www.blogjava.net/irusist/archive/2015/12/31/428881.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/irusist/comments/commentRss/428881.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/irusist/services/trackbacks/428881.html</trackback:ping><description><![CDATA[地址：<a href="https://irusist.github.io" title="https://irusist.github.io">https://irusist.github.io<br /><br /><br />!<br /><br /><br /><br /><br /><br /></a><img src ="http://www.blogjava.net/irusist/aggbug/428881.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/irusist/" target="_blank">irusisit</a> 2015-12-31 00:37 <a href="http://www.blogjava.net/irusist/archive/2015/12/31/428881.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中的"+"操作符</title><link>http://www.blogjava.net/irusist/archive/2012/01/10/368268.html</link><dc:creator>irusisit</dc:creator><author>irusisit</author><pubDate>Tue, 10 Jan 2012 14:35:00 GMT</pubDate><guid>http://www.blogjava.net/irusist/archive/2012/01/10/368268.html</guid><wfw:comment>http://www.blogjava.net/irusist/comments/368268.html</wfw:comment><comments>http://www.blogjava.net/irusist/archive/2012/01/10/368268.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/irusist/comments/commentRss/368268.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/irusist/services/trackbacks/368268.html</trackback:ping><description><![CDATA[&nbsp; &nbsp; java虚拟机处理byte，short，char，int类型之间的&#8220;+&#8221;操作都是将他们转化成int类型，压入操作数栈，用int类型来做加法操作的，当java程序中有还有long，float，double中的一种时，会转化成他们之中优先级最高的，优先级从long，float，double依次增高。boolean类型与上面所说的4种类型进行"+"运算，编译报错不通过。基础类型与String以外的引用类型进行"+"操作时，编译器报错不通过。&nbsp;当两个非String的引用类型进行&#8220;+&#8221;操作时，编译器会报错不通过。<br />&nbsp; &nbsp; 当byte，short，int类型与String的引用类型进行&#8220;+&#8221;操作时，比如，在一个静态方法里定义如下：<br /><span style="font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; color: #0000ff; ">byte</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;b&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; ">=</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; ">127</span><span style="background-color: #eeeeee; font-size: 13px; ">;</span><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str1&nbsp;=&nbsp;"string";</div><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String&nbsp;str&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; ">=</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;b&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; ">+</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;str1;&nbsp;</span><span style="font-size: 12px;">&nbsp;<br /></span><div><p><font size="1">&nbsp; &nbsp;产生的字节码为：</font><br /></p><div style="text-align: left;"><span style="font-size: 10pt; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0: &nbsp; bipush &nbsp;127</span></div><div style="text-align: left;"><span style="font-size: 10pt; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2: &nbsp; istore_1</span></div><div style="text-align: left;"><span style="font-size: 10pt; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3: &nbsp; ldc &nbsp; &nbsp; #2; //String string</span></div><div style="text-align: left;"><span style="font-size: 10pt; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;5: &nbsp; astore_2</span></div><div style="text-align: left;"><span style="font-size: 10pt; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;6: &nbsp; new &nbsp; &nbsp; #3; //class java/lang/StringBuilder</span></div><div style="text-align: left;"><span style="font-size: 10pt; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;9: &nbsp; dup</span></div><div style="text-align: left; "><span style="font-size: 10pt; ">&nbsp; &nbsp; &nbsp; &nbsp; 10: &nbsp;invokespecial &nbsp; #4; //Method java/lang/StringBuilder."&lt;init&gt;":()V</span></div><div style="text-align: left;"><span style="font-size: 10pt; ">&nbsp; &nbsp; &nbsp; &nbsp; 13: &nbsp;iload_1</span></div><div style="text-align: left;"><span style="font-size: 10pt; ">&nbsp; &nbsp; &nbsp; &nbsp; 14: &nbsp;invokevirtual &nbsp; #5; //Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;</span></div><div style="text-align: left;"><span style="font-size: 10pt; ">&nbsp; &nbsp; &nbsp; &nbsp; 17: &nbsp;aload_2</span></div><div style="text-align: left;"><span style="font-size: 10pt; ">&nbsp; &nbsp; &nbsp; &nbsp; 18: &nbsp;invokevirtual &nbsp; #6; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;</span></div><div style="text-align: left;"><span style="font-size: 10pt; ">&nbsp; &nbsp; &nbsp; &nbsp; 21: &nbsp;invokevirtual &nbsp; #7; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;</span></div><div style="text-align: left;"><span style="font-size: 10pt; ">&nbsp; &nbsp; &nbsp; &nbsp; 24: &nbsp;astore_3</span></div><div><div style="text-align: left;"><span style="font-size: 10pt; ">&nbsp; &nbsp; &nbsp; &nbsp; 25: &nbsp;return</span></div>&nbsp; &nbsp; &nbsp;可见，String对象的与byte进行&#8220;+&#8221;操作会先生成一个StringBuilder(jdk5以后，jdk5以前是StringBuffer)对象，将byte类型转换为int类型传入StringBuilder.append(int)的方法内,再将String对象传入StringBuilder.append(String)方法内，最后调用这个StringBuilder对象的toString方法得到String对象。同理，short，boolean,long,float,double类型，引用类型与String对象进行&#8220;+&#8221;操作也是同样处理，分别调用StringBuilder的不同参数的重载方法，不过char对象与short会有所不同，他不会转换成int类型，而是直接将char类型的值传递给StringBuilder的append(char)的方法。</div></div><div><p>&nbsp;</p></div><img src ="http://www.blogjava.net/irusist/aggbug/368268.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/irusist/" target="_blank">irusisit</a> 2012-01-10 22:35 <a href="http://www.blogjava.net/irusist/archive/2012/01/10/368268.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一道面试题</title><link>http://www.blogjava.net/irusist/archive/2012/01/07/368072.html</link><dc:creator>irusisit</dc:creator><author>irusisit</author><pubDate>Sat, 07 Jan 2012 14:29:00 GMT</pubDate><guid>http://www.blogjava.net/irusist/archive/2012/01/07/368072.html</guid><wfw:comment>http://www.blogjava.net/irusist/comments/368072.html</wfw:comment><comments>http://www.blogjava.net/irusist/archive/2012/01/07/368072.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/irusist/comments/commentRss/368072.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/irusist/services/trackbacks/368072.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;昨天晚上公司年会，散了之后一个人走在大街上，想到了很多，来南京有9个月了，2012，新的一年又该何去何从呢。有时候理想和生活很难并行，在一个好的公司上班，有个好的领导，是最让人期望的了，想起了刚来时面试的一道面试题。<br />&nbsp; &nbsp; 大概讲的是一幅扑克牌，四种花色从A、2、到K，每种花色13张，一共52张，一开始每种花色的按顺序摆放，然后进行洗牌：分成2半，将一半的第一张放到另一半的第一张下面，第2张放到另一半的第2张下面，直到一半的所有牌都放到另一半的下面，一次洗牌完成，问至少要洗多少次牌才能恢复成原来的顺序。<br />&nbsp; &nbsp; 假设将这52张牌排好序，分别为1到52，则1到13为一个花色，14到26为一个花色，27到39一共花色，40到52为一个花色。假设洗牌之前牌的序号为i，经过一次洗牌过后，1到13序号的牌分到了1到25，则洗牌过后的序号为2i-1；14到26序号的牌被分到27到51，洗牌过后的序号为2(i-13) - 1 + 26；27到39的牌分到了2到26，洗牌过后的序号为2(i - 26) ；40到52序号的牌被分到28到52，洗牌过后的序号为&nbsp;2(i - 39) &nbsp;+ 26。<br />&nbsp; &nbsp; 用代码来表示就是<br />&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="background-color: #eeeeee; font-size: 13px; color: #0000ff; ">public</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; color: #0000ff; ">static</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;List</span><span style="background-color: #eeeeee; font-size: 13px; ">&lt;</span><span style="background-color: #eeeeee; font-size: 13px; ">Integer</span><span style="background-color: #eeeeee; font-size: 13px; ">&gt;</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;nextResult(List</span><span style="background-color: #eeeeee; font-size: 13px; ">&lt;</span><span style="background-color: #eeeeee; font-size: 13px; ">Integer</span><span style="background-color: #eeeeee; font-size: 13px; ">&gt;</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;list){</span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;return&nbsp;array</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer[]&nbsp;retArray&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Integer[52];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;array&nbsp;index</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;index&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;i=1;i&lt;list.size()+1;i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(i&lt;=13){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;2&nbsp;*&nbsp;i&nbsp;-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>(i&nbsp;&gt;13&nbsp;&amp;&amp;&nbsp;i&nbsp;&lt;=&nbsp;26){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;2&nbsp;*&nbsp;(i-13)&nbsp;-&nbsp;1&nbsp;+&nbsp;26;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>(i&nbsp;&gt;26&nbsp;&amp;&amp;&nbsp;i&nbsp;&lt;=&nbsp;39){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;(i&nbsp;-&nbsp;26)&nbsp;*&nbsp;2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>(i&nbsp;&gt;39&nbsp;&amp;&amp;&nbsp;i&nbsp;&lt;=&nbsp;52){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;(i&nbsp;-&nbsp;39)&nbsp;*&nbsp;2&nbsp;+&nbsp;26;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retArray[index-1]&nbsp;=&nbsp;list.get(i-1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;Arrays.asList(retArray);<br />&nbsp;&nbsp;&nbsp;&nbsp;}</div><div>&nbsp; &nbsp; 在main方法里，用下面方式的num便是所要求的最小洗牌次数<br />&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="background-color: #eeeeee; font-size: 13px; ">List</span><span style="background-color: #eeeeee; font-size: 13px; ">&lt;</span><span style="background-color: #eeeeee; font-size: 13px; ">Integer</span><span style="background-color: #eeeeee; font-size: 13px; ">&gt;</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;list&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; ">=</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; color: #0000ff; ">new</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;ArrayList</span><span style="background-color: #eeeeee; font-size: 13px; ">&lt;</span><span style="background-color: #eeeeee; font-size: 13px; ">Integer</span><span style="background-color: #eeeeee; font-size: 13px; ">&gt;</span><span style="background-color: #eeeeee; font-size: 13px; ">();</span></div><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;i=1;i&lt;53;i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;change&nbsp;num</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;num&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Integer&gt;&nbsp;list1&nbsp;=&nbsp;list;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(<span style="color: #0000FF; ">true</span>){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Integer&gt;&nbsp;retList&nbsp;=&nbsp;nextResult(list1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(list.equals(retList)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list1&nbsp;=&nbsp;retList;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div>&nbsp; &nbsp;&nbsp;<img src ="http://www.blogjava.net/irusist/aggbug/368072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/irusist/" target="_blank">irusisit</a> 2012-01-07 22:29 <a href="http://www.blogjava.net/irusist/archive/2012/01/07/368072.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>