日期:2014-05-20  浏览次数:20751 次

Java从入门到精通读书笔记(连载)—c++程序员学java
用了很久C++,突然要用Java,买了本《Java从入门到精通》,争取三天看完精通Java,读书笔记就放在这里吧。
第一章:
2分钟看完,老生常谈,即使没怎么用过java也知道这些。

第二章:
1.instanceof应该是c++中没有的,c++使用RTTI解决这个问题的,很难用。
2.super这种引用父类的方法也是比较简单的,C++中是用父类名::父类方法()解决的,有点难看。
贴点代码试试看?
Java code

public class FatherClass {
    public void print(String str)
    {
        System.out.println("father print:"+str);
    }
}

public class SonClass extends FatherClass {
    public void print(String str)
    {
        System.out.println("son print:"+str);
        System.out.println("call father print.");
        super.print(str);
    }
}

public class TestSuperClass {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        SonClass son = new SonClass();
        son.print("Test");
    }
}



3.自动类型转换和C++一样,精度变高的随便转,精度变低的会丢失。
4.强制类型转换只有(type)这一种,不像c++有static_cast、dynamic_cast、reinterpret_cast、和const_cast。
5.运算符什么的和c++几乎一模一样。
半小时看完。


------解决方案--------------------
你都会C++了,除非看Haskell一类的,其他的都很简单了。
------解决方案--------------------
同学习,基本同c++一样
关键还是熟悉库
------解决方案--------------------
探讨

第四章:
1.java数组越界会在运行时抛异常,c++不会,声明数组的方法也有些不一致。
java 声明数组的所有办法
int[] a = new int[4];
int a[] = new int[4];
int[] a = {1, 15, 26};
int a[] = {1, 15, 26};

2.java的数组是一个对象,自带length属性,使用简单。c++的数组不自带……

------解决方案--------------------
(上接15楼)
2.关于这点可能大多数接触Java不久的同鞋都还不清楚:
Java没有多维数组!
有些人可能认为
int[][] a=new int[5][7];
定义的a是二维数组,实质上不是。a指向的对象的实质是元素为数组的数组。按照C/C++的理解,实质上就是指针数组。因此它并不具备二维数组的特性:a的每个元素不一定是等长的,例如这样定义是完全可以的:
Java code

        int a[][] = new int[5][];

        for (int i = 0; i < a.length - 1; i++)
            a[i] = new int[i + 1];

        a[a.length - 1] = null;

------解决方案--------------------
可以去去看看那个马士兵的教程,尤其是输入输出流,讲的出神入化,我特别喜欢
------解决方案--------------------
2.java多线程有两种方法实现,第一是派生Thread类,第二种是实现Runnable接口。

你说的两种方法,仅仅是线程运行时需要执行的任务,而不是多线程的两种方法实现。Java 里的线程就 Thread 一种实现,并没有两种!
------解决方案--------------------
Java code
POSIX threads        jdk
------------------   ----------------------------------------
mutex                java.util.concurrent.locks.Lock
rwlock               java.util.concurrent.locks.ReadWriteLock
cond                 java.util.concurrent.locks.Condition

------解决方案--------------------
探讨
引用:

第三章:
1.break可以跳出语句块,c++中没有语句块。语句块的定义就是在一段语句前加上花括号和冒号;
其他基本上和c++一样,5分钟看完。

这个……
“C++中没有语句块”?在下怎么感觉第一次听到这句话……

------解决方案--------------------
探讨

很好,java多线实在是不熟悉啊。
引用:
Java code

POSIX threads jdk
------------------ ----------------------------------------
mutex java.util.concurrent.locks.Lock
rwlock ……