Java和C++位运算对比
为了实现两个数字进行交换,我们通常可以利用位运算来实现
C++程序 swap(int a ,int b){a^=b^=a^=b;}
JAVA程序 swap(int a, int b){ a^=b;b^=a;a^=b; }或者{ b^=(a^=b) ; a^=b;}
如果JAVA用C++的实现方式则会得到 b得到了a的值,但是a现在的值却不是原来b的值。
这个是因为在C++是编译性语言,JAVA是解释性语言。
在进行处理的时候C++的数是边运算边刷新,保证了中间a ,b的值实时更新,
而JAVA是一次性在我们的表达式中填入了我们原来的值,在中间的运算过程中不能保证本应该改变的数值没有改变,
形成了脏数据。在我们下次要用到a,b的值的时候才进行刷新,但是这个时候已经是脏数据,因此得到的值是错误的。
相关文档:
xml文件:
Xml代码
<?xml version="1.0" encoding="GB2312"?>
<RESULT>
<VALUE>
<NO>A1234</NO>
<ADDR>河南省郑州市</ADDR>
</VALUE>&nbs ......
XML文件 book.xml
<book>
<person>
<first>Kiran</first>
<last>Pai</last>
<age>22</age>
</person>
<person>
<first>Bill</first>
<last>Gates</last>
<age>46</age>
</person>
<person>
&l ......
public class Path {
//get class absolute address
public String getPath() {
String classPath = getClass().getName();
if (classPath.indexOf(".") != -1) {
classPath = classPath.substring(classPath.lastIndexOf(".") + 1,
......
怪异之一:
connect(SocketAddress endpoint):这个方法,尝试连接server端,如果连接不上,就抛出IOException异常。如果连接成功了,就继续执行下一步的代码。
怪异之二:
boolean isConnected() :这个方法的结果仅仅代表这个socket曾经成功连接到了server,但并不表示现在这个时刻它和server仍保持连接状态。
有 ......
我在学习thinking in Java4 的时候,在创建自定义包的时候,碰到了很多错误,让我郁闷了几天,通过在网上的资料搜索,把包的创建过程给大家详细列出来。
我们以thinking in Java4中的例子为例
创建两个类Vector和List。将编译后的Vector.class和List.class文件放在包net.mindview.simple下(该包位于c:\DOC\JavaT).
//Vec ......