Java 定义了 4 种整数类型:byte、short、int 和 long。
所有这些类型都是有符号的、正的或负的整数。
Java 不支持无符号的、只是正值的整数。许多其他计算机语言同时支持有符号和无符号整数。然而,Java 的设计者觉得无符号整数不是必需的。
在 Java 中,用于存储字符的数据类型是 char。然而,C/C++程序员要当心:
Java 中的 char与 C 或 C++中的 char 是不同的。在 C/C++中,char 的宽度是 8 位。而在 Java 中不是这样的。
相反,Java 使用 Unicode 表示字符。为此,Unicode 需要 16 位宽。因此,在 Java 中 char 是 16 位类型。
从 JDK 7 开始,可以使用二进制指定整型字面值。为此,使用 0b 或 0B 作为数值的前缀。
从 JDK 7 开始,在整型字面值中还可以嵌入一个或多个下划线。嵌入下划线可以使阅读很大的整数变得更加容易。当编译字面值时,会丢弃下划线。
int x = 123___456___789;
int x = 0b1101_0101_0001_1010;
Java 中的字符被索引到 Unicode 字符集,它们是可以转换成整数的 16 位值,并且可以使用整数运算符进行操作,例如加和减运算符。字符型字面值使用位于一对单引号中的字符来表示。
所有可见的 ASCII 字符都可以直接输入到单引号中,如'a'、'z'以及'@'。对于那些不能直接输入的字符,可以使用转义字符序列输入需要的字符,
例如'\"表示单引号、'\n'表示换行符。还有一种以八进制或十六进制直接输入字符值的机制。对于八进制表示法,使用反斜杠后跟三位数字表示,
例如'\141'是字母'a'。对于十六进制,先输入“\u”,然后是 4 位的十六进制数。
例如'\u0061'表示 ISO-Latin-1 字符'a',因为第一个字节为 0;'\u73b0'是 '现'
char c = '\u73b0'; //现
无符号右移运算符
int i=-8>>>1;
Java不用goto语句,而是用try-catch-finally异常处理语句来代替goto语句处理出错的功能.
Java不支持宏定义,而是使用关键字final来定义常量,在C++中则采用宏定义来实现常量定义,这不得于程序的可读性.
结构和联合的处理.在C和C++中,结构和联合的所有成员均为公有,这就带来了安全性问题,而在Java中根本就不包含结构和联合,所有的内容都封装在类里面
Java不再使用指针.程序员不能直接进行任何指针操作.
java没有象C++一样的操作符重载机制
java不管构造函数有无参数,都应该写括号
java初始化成员变量的方法和C++有很大不同. java允许直接在类内部指定成员变量初始值
java成员变量的初始化顺序取决于成员变量的声明顺序, 而成员变量的初始化总是早于构造函数的执行.这也和C++有很大不同,C++的成员变量初始化顺序也取决于成员变量的声明顺序,但是,它们只能在构造函数体内,或者在构造函数的初始化列表里进行初始化,而不会先于构造函数
Java程序中所有的对象都是用new操作符建立在内存堆栈上
Java提供了自动化的垃圾搜集(可以手动触发)。没有析构函式的概念,对 finalize() 的使用是不推荐的
Java没有函式指标机制。替代的概念是接口,Adapter 和 Listener也是被广泛使用的
Java的继承是面向对象程序设计的关键。在Java中,通过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。在Java中不允许多继承。
Java中,this通常指当前对象,super则指父类的。
Java里面有一个金科玉律:任何public非static函数的调用都是多态的。 所以,super.method()必然调用的是子类的那个版本