大一一年学了C++,寒假看head First Java,在此把与C++显著不同的知识点整理出来。初学JAVA,如有不对欢迎指出。
1.JAVA文件格式是.java,编译后是.class。c++是.cpp,.h。
2.条件判断中,只能用布尔型boolean,不能用数字。即while(1)是错误的。
3.System.out.print("Hello World!") 不输出换行
System.out.printIn("Hello World!") 多输出换行
4.在Java的面向对象概念中并没有全局变量这回事。任何变量只要加上public,static,final,基本上都会变成全局变量取用的常数。
5.float f=3.2f,加上f才是浮点数,否则所有带小数点的值都会被编译器会当做double处理。
6.JAVA不会自动类型转换,如有需要必须进行强制装换。如int a; double b=3.2; a=b;是错的 必须写成 a=(int)b;
7.dog a=new dog(); 在JAVA中没有指针,会返回给a一个引用变量。不同的JAVA虚拟机a的大小也是不同的。并且不能进行运算。而在c++中指针可以进行加减。
8.dog[] dogs; dogs=new dog[7]; 此时dogs[0],dogs[1]...中只有dog的引用变量,但没有对象。还需要单独new 对象。dogs[0]=new dog; 这点与C++也不同。
9.class Dog{
private int size;
private String name; //这里的变量,即实例变量会有初始值,数字为0,布尔型为false,对象引用为null,所以不初始化也可以。
public int Text(){
int a; //但这里的局部变量必须初始化,不初始化编译器会报错。
}
}
10.使用==来比较两个primitive主数据类型(即int,doule那些)或者判断两个引用是否引用同一个对象。使用equals()来判断两个对象是否在意义(现在还不了解这里说的意义是什么意思)上相等。
11.java.util.ArryList java.util 是包名,ArryList是类名。使用时某个类时必须写全类名或者开头加上import java.util.ArryList.类似于C++中的命名空间using namespace std; 可以防止类名重复。但和#include“” 不一样,import不会增加文件的大小。java.lang 不用import,默认导入了,里面有常用的类例如Math
12. 这个方法是继承父类的
public void roam(){
super.roam(); 会先调用父类的此方法
// my own code
}
13.final 修饰符表示此类不能或方法不能再被继承
14. Java中所有的类的继承于Object,引用变量是什么类型,就只能用什么类型的方法,比如,Object a=new dog();则a.eat(),是错误的。
15.接口可以看做是用来解决JAVA不能多重继承问题的。接口中的方法全部是抽象方法,子类需要全部实现,
接口的定义:public interface Pet{ public abstract void play(); }
接口的实现:public class Dog extends Canine implements Pets{ }
16.局部变量在栈上,实例变量和对象在堆上。如果引用当对象没有对应的引用变量时,垃圾回收器便可以销毁对象。