Chinaunix首页 | 论坛 | 博客
  • 博客访问: 40014
  • 博文数量: 11
  • 博客积分: 570
  • 博客等级: 中士
  • 技术积分: 125
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-23 11:19
文章分类

全部博文(11)

文章存档

2009年(4)

2008年(7)

我的朋友

分类: Java

2008-11-30 19:44:54

JAVA学习笔记


3章 操作符


1.JAVA操作符

几乎所有操作符都只能操作“基本类型”;然而例外的操作符是“=”,“==”,“!=”,这些操作符能操作所有的对象;除此意外,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.常量

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


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

<<:左移位操作符,向左移位n位,低位补0

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

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

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


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


10.类型转换操作符(cast

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

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


11.截取和舍入

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


12.提升

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

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

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



阅读(766) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~