java基础之【基本数据类型】【运算符】

一、关于char类型一些需要注意的地方

1、在强制转化为字符串时,必须双引号要放在整个运算式的最前面,这样+才会变成连接符,而不是运算符。如果将双引号放在最后面,那么限制性前面的运算符,最后在将结果转化为字符串。

System.out.println(""+'a'+'b');
System.out.println('a'+'b'+"");

上面两个的输出结果是不同的,第一个是ab,第二个是208

2、单引号内只能放一个字符,无论是字母还是数字,不能‘abac’这样写,同样也不能‘100’这样写。

3、由于unicode字符集包含了目前世界上所有的语言的字符,即0—65535包含了所有的字符,而且,计算机底层是将所有字符都保存为对应的数字,因此在运算过程中,任何一个字符都会转换为相对应的数字,然后进行运算,不管是汉字、英文还是其他文字。

System.out.println('神'+ '雀'+'影');

输出结果为94095。

4、转义字符

常用\r回车  \n换行 \t制表符,不管是用‘’还是“”,都表示转义字符。

5、当char后面直接跟数字时,那么数字范围只能是0-65535,不能超出这个范围。如果写成char i = 100;这种形式,那么在输出时,会自动转化为Unicode字符集所对应的字符。

同样的,char后面跟数字以及与双引号连接时都会出现不同的结果

char i = 12;
System.out.println(i+'a'+"");
System.out.println(""+i+'a');

//输出结果是不同的

二、浮点型

1、double和float表示的数字都是不够精确的,float为单精度类型,尾数精确到7位有效数字,而double是float的两倍,所以也称为双精度类型,但是它们表示的结果都是不够精确的,因此在要求比较精确的计算时,例如金融和科研领域,可以使用java.math包里面的BigInteger和BigDecimal。

2、浮点类型的数字,默认的类型为double,如果想用float表示,则需要在数字后面加上f或者F,float为4个字节,double为8个字节。

3、java还提供了三个特殊的浮点数值:正无穷大、负无穷大和非数,用于表示溢出和出错。例如,一个正浮点数处以0得到正无穷大,一个负浮点数除以0得到负无穷大。0.0除以0.0或者对一个负数开方,得到非数。正无穷大用POSITIVE_INFINITY,负无穷大用NEGITIVE_INFINITY表示。非数用NaN表示。所有的正无穷大都是相等的,所有的负无穷大也是相等的,而非数不与任何数相等,即使是自己本身。

注意,只有浮点数除以0才能得到正负无穷大,因为运算过程中,整型(0)会自动转化为浮点型(0.0),而一个整数除以0,只会报错。

三、类型转换

1、整数类型的数字默认类型为int类型。但是,当byte、short和char后面跟的整数在自身表示数字的范围之内,那么这个整数会自动转型为byte、short或者char类型。不过一旦进入运算,那么所有的数字都会转变为int类型,得到的结果必须声明为int类型。即使参与运算的两个数字都在byte或者short范围内,所得结果数值仍在byte或者short范围内,都必须声明为int类型。

java基础之【基本数据类型】【运算符】_第1张图片

2、表达式中国的类型将严格保持和表达式中最高等级操作数相同的类型,即除了1的情况外,如果表达式最高级为long类型,那么结果也必须为long类型,如果为double类型,那么结果就必须为double类型。

3、两个float进行运算,结果也为float类型。

四、运算符

1、两个整数无论怎样运算,即使存在相除且除不尽的情况下那么结果也为整数,例如11/2,得到的结果为5(截取取整,而非四舍五入),即使声明结果的类型为double,那么结果也只是5.0,而不是5.5;

2、%为取余数,其结果的符号与%左边的数字相同,即左侧数字为正数,那么结果也为正数,反之为负数,与%右边的数字无关。如果%右边是0,那么左侧必须为浮点型,否则报错。

3、单目运算符

a++和++a都是a自增加1,但是如果放在表达式中的效果不同,a++是先赋值再自增加1,++a是先自增加1在赋值给表达式。

b = a++和b = ++a结果是不同的,前者b=a,后者b = a+1

4、扩展运算符

a+=b;就相当于a=a+b;而a+=b+3;则相当于a=a+(b+3);这一点要注意,当然这样加是没有意义的,a*=b+3,也是等同于a=a*(b+3);

5、关系运算符

java基础之【基本数据类型】【运算符】_第2张图片

6、逻辑运算符&位运算符

在进行boolean值的判断时,与运算符按位与&表示两个同时为true则为true,在进行运算时,则表示转化为二进制后,两个同为1则为1,有一个为0则为0。|按位或,一个为true则为true,一个为1则为1。

&&逻辑与,短路运算符,在判断时,如果符号左侧部分为false则直接返回false,后面的不再判断,所以当后面的运算式会造成报错时,并不会保存,因为已经在前面返回了。

~按位非,每位取反。^按位异或,两位相同时返回0,不同时返回1,同时为false或者同时为true返回false,一个false一个true返回true。

7、左移和右移(下面这张图拍自疯狂讲义)

java基础之【基本数据类型】【运算符】_第3张图片

8、运算符优先级

java基础之【基本数据类型】【运算符】_第4张图片 

9、注意溢出问题

java基础之【基本数据类型】【运算符】_第5张图片 

你可能感兴趣的:(java基础)