JAVA学习笔记整理(3)

几乎所有操作符都只能操作“基本类型”;然而例外的操作符是“=”,“==”,“!=”,这些操作符能操作所有的对象;除此意外,String类支持“+”和“+=“操作符。

2.优先级

请用“括号”来确定操作符的优先级。

示例:

public class Precedence {

public static void main(String[] args)

{

int x = 1, y =2, z = 3;

int a = x + y - 2 / 2 + z;

int b = x + (y-2) / (2 + z);

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

}

}

“+”操作符在这里有两个作用:一是”字符连接“;二是”字符串转换“,将整数变量a,b转换为字符串输出。

3.赋值操作符 “=”

基本数据类型的赋值:基本数据类型存储了实际的数值,并非引用,而是实际的数据拷贝。

对象的赋值:对象的赋值操作“=”意味着是对这个对象的引用,并非实际的数据拷贝。将一个对象传递给方法时,实际上传递的也是对象的引用。

(个人的理解:JAVA里的引用和C语言中的指针类似)

4.算术操作符

整数除法会直接去掉结果的小数位,而不是四舍五入。

5.关系操作符

关系操作符“==”和“!=”使用于基本数据类型变量和对象的引用变量。关系操作符生成的是一个boolean的结果:true或者false。

示例:

public class Equvialence {

public static void main(String[] args) {

Integer n1 = new Integer(47);

Integer n2 = new Integer(47);

System.out.println(n1 == n2);

System.out.println(n1 != n2);

// System.out.println(n1.equals(n2));

}

}

结果:

false

true

示例说明了尽管引用变量n1,n2引用的两个对象的值相同,但是“==”操作符比较的是引用变量,而非是对象的值。要比较对象的值,需要使用方法equals 。equals方法这里比较的是对象的值。然而equals方法的默认行为是比较引用(说明在Integer类里,equals方法进行了overwrite)。如果在我们自己创建的类里使用equals方法,让其比较对象的值,我们也需要对其overwrite。

6.逻辑操作符(&&, ||, !)

逻辑操作符只能用于布尔值,不能将一个非布尔值当作布尔值在逻辑运算表达式中使用。

7.常量

以二进制显示输出结果:使用Integer和Long类的静态方法toBinaryString()。

8.移位操作符(>, >>>)

>>:“有符号”右移位操作符,向右移位n位,若符号为正,高位补0,若符号为负,高位补1;

>>>:“无符号”右移位操作符,向右移位n位,高位补0;

如果对char,byte,short类型的数值进行移位处理,在移位之前,它们会被转换为int类型,并且得到的结果也是一个int类型的值。

9.按位操作符(&, |, ^, ~)

10.类型转换操作符(cast)

Java允许把任何基本数据类型转换为别的基本数据类型,但布尔类型除外;布尔类型不允许进行任何的类型转换处理;

“类”数据类型不允许进行类型转换。

11.截取和舍入

如果想要四舍五入,则需要使用java.Lang.Math中的round方法。

12.提升

如果对基本数据类型执行算术运算或者按位运算,只要类型比int类型小(char,short,byte),那么在运算之前,这些值会自动转换成int。

如果想把结果赋值给较小的类型,就必须使用类型转换,但有可能出现数据丢失。

通常,表达式中出现的最大的数据类型决定了表达式最终结果的数据类型。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzyzjp.html