由于Java程序必须保证所有机器上都能得到相同的运行结果,所以数据类型的取值范围必须固定
(1)整型:byte, short, int, long分别是1,2,4,8字节,从Java7开始,前缀0b或者0B表示二进制数,在数字内加上下户线可以增加可读性,如1_000_000表示一百万。
Java没有无符号数
(2)浮点类型:float和double分别是4,8字节,前者须有后缀F或者f,否则默认为double类型
Java中所有的NaN都被认为是不相等的:
x == Double.Nan ×
Double.isNaN(x) √
(3)char类型:使用\u转义字符也可以表示成char类型,但是尽量少用,容易出错
(4)Unicode和char类型:Unicode用于解决不同编码方案下对应字母不同以及编码长度不同的问题
但是作者建议不要在程序中使用char类型,并将字符串作为抽象数据类型处理
(5)boolean:
(6)变量:建议每一行只声明一个变量,在Java中,不区分变量的声明和定义
(7)常量:使用final关键字指示常量,常量名一般用全大写
(8)运算符:
整数被0除会报异常,浮点数被0除会得到无穷大或者NaN
运算转换优先级:double>float>long,否则都转换为int
浮点数调用Math.round可得到最接近的整数
double x = 9.997; int nx = (int) Math.round(x); //返回类型是long,因此需要进行强转
(1)&&和||将会导致短路运算,&和|则不会
(2)>>>是0填充,>>是符号填充,注意,不错在<<<运算符
(1)判断是否相等使用 .equals方法(或者.equalsIgnoreCase不区分大小写判断),不能使用==判断,因为这个运算符只能够给确定两个字符串的空间位置是否相同。
java.math包下的两个类:BigInteger和BogDecimal,其运算需要使用大数类中的方法
int[] copiedNumbers = Arrays.copyOf(Numbers, Numbers.length);
//不规则数组的创建方式 int[][] odds = new int[Length+1][]; for(int i=0;i<=Length;i++)odds[i] = new int[i+1]; //多维数组的实际含义 double[][] balances[10][6]; //表示分配了包含10个指针的数组,然后指针数组的每一个元素被填充了一个包含6个数字的数组,这是java的含义,与C++不同