本系列文章着重介绍java与C++的区别。
一、数据类型
java言语数据类型只有两种:基本数据类型、引用数据类型。每种基本类型数据占用内存是固定的,不依赖于具体的计算机。
-
基本数据类型
boolean布尔、char字符,byte字节,short短整数、int整数、long长整数、float单精度和double双精度。
所有基本数据类型都有其初始值,定义变量未指定初始值时,采用这些默认初始值进行变量初始化。此外,还应注意:
1)整形提升采用四舍五入的方式。
2)布尔类型数据不能与其他基本数据类型数据进行相互的数据类型转换。
-
引用数据类型
class类、interface接口、枚举enum和数组array。引用数据类型的默认初始值为null。
二、标识符和关键字
java语言所采用的字符称为java字符,java字符集是unicode字符集,在该字符集中字符采用双字节的表示方式。unicode字符前128字符与ascll字符一致,然后是包括汉字、日文、韩文等其他字符,后128个字符可以用以下四种方式表示:
1)整数直接量(0~65535)
2)单引号单字符(‘猫’)
3)单引号unicode字符如('\u0061')
4)单引号转义字符或'\八进制数'('\0'~'\377')
java字母是一种广义字母,除了英文字母外,还包括"_","$",以及其他语言中相当于字母的字符;java数字也是一种广义的概念,包括ascll中的十个数字以及其他语言中相当于”数字“的字符;java直接量是直接表示数值,不含运算的表达式,包括false、true、null等。
java标识符的定义规则与C++类似。java标识符区分大小写,由java字母和java数字组成,不能包含java直接量和关键字。并且规定,首字符必须是java字母。
以下列出几个java特有的关键字:
- abstract 表明类或者成员方法具有抽象属性
- extends 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口。
- final 用来说明最终属性,表明一个类不能派生出子类,或者成员的方法不能被覆盖,成员的域不能被更改
- finally 用于处理异常情况,用来声明一个肯定会被执行到的语句块
- implements 表明一个类实现了给定的接口
- import 表明要访问指定的类或者包
- instanceof 用来测试一个对象是否是指定类型的实例对象
- interface 接口
- native 用来声明一个方法是由机器相关的语言(C/C++/FORTRAN)实现的
- strictfp 用来声明(单精度或双精度浮点数)表达式严格遵循IEEE754算术规范
- synchronized 表示一段代码需要同步执行
- transient 声明不用序列化的成员域
- volatile 声明两个或者多个变量必须同步地发生变化
三、运算符
java运算符基本与C++一致,需要注意几个要点如下:
1)java特意提供了">>>"(以及''>>>='')这个无符号右移运算符,其右移是左侧补0,而普通右移运算符左侧补符号位。
2)java特意设计了epsilon方便进行浮点数的比较操作,epsilon是大于0,并且适当小的浮点数,称为浮点数容差。java将epsilon设置为1e-8。
3)逻辑运算有短路规则,位逻辑运算无短路规则
int a = 1, b = 2;
if (a == 1 || ++b < 4)
System.out.println(b);
if (a == 1 | ++b < 4 )
System.out.println(b);
//打印结果为2和3
4)for循环中初始语句写成 i=0, int j = 1;是无法编译通过的