您的位置:首页 > 职场人生

黑马程序员--JAVA基础之运算符与表达式

2013-09-02 23:59 316 查看
-------
android培训、java培训、期待与您交流! ----------
[align=center] [/align]
[align=center]Java语言中定义了若干运算符号,完成某种特殊的运算[/align]
[align=center]按照参与运算的数据的数量分为三种类型[/align]
[align=center]•一元/单目运算符[/align]
[align=center]•二元/双目运算符[/align]
[align=center]•三元/多(三)目运算符[/align]
[align=center] [/align]
[align=center]按照运算符的功能分为六种[/align]
算术运算符 关系运算符 逻辑运算符
位运算符 移位运算符 条件运算符
算数运算符:

[align=center]加法运算符 + a +b[/align]
[align=center]减法运算符 - a- b[/align]
乘法运算符 *
a * b
[align=center]除法运算符 / a/ b[/align]
[align=center]模运算符 % a% b[/align]
[align=center]"+","-","*"的用法和和作用于普通算数中的一模一样,这里就不多说了,小学的东西,说两个不一样的:[/align]
[align=center]1,"/"(除)运算符先来看个例子:[/align]
[align=center] [/align]
public class Demo{

public static void main(String[] args){

int x=12;

int y = 5;

System.out.println(x/y);

//结果是:2

}

}
从运行结果我们可以看出,如果被除数都是整数,那么商也是整数,需要说明的是当被除数是整数类型时,零不能作为除数,如果被除数是浮点型时,除数为零,会报错。
2,"%"(取模):
%运算符是求两个数相除的余数,也成为取模运算符,与除号一样,任何整数都不能对0取模,%运算符可以对整型数据取模,也可以对实型数据取模。
public class Demo{
public static void main(String[] args){
int a=25;
int b = 6;
int x=-a%-b;
int y=a%b;
System.out.println("x的余数是:"+x);
//结果是:-1;
System.out.println("y的余数是"+y);
//结果是:1;
}
}

由以上运行结果可以看出,不管是整型还是实型的取模运算,余数的符号与被除数a的符合相同。

数据类型转换

[align=center]数据类型的转换即将一种数据类型转换成另一种数据类型[/align]
[align=center]数据类型转换过程中数据的类型必须可转换[/align]
[align=center]应用场合[/align]
[align=center]•二元运算符的两个操作数类型不同[/align]
[align=center]•表达式的类型与变量的类型不同[/align]
[align=center]转换方式[/align]
[align=center]•隐型/自动 类型转换/造型 (系统自动完成)[/align]
[align=center]•显型/强制 类型转换/造型 (手工完成)[/align]
[align=center]自动类型转换:[/align]
[align=center]自动类型转换是指不需要进行任何多余操作,系统会自动对数据类型进行转换:[/align]
[align=center](低)byte-->short-->int-->long-->float-->double(高)或者;[/align]
[align=center](低)char-->int-->long-->float-->double(高)[/align]
[align=center]左边的数据类型赋值给右边的数据类型时,就可以实现自动类型转换。[/align]

强制数据类型转换格式:

类型长度比较大的值前面写上长度小的类型:
(数据类型名)需要转换的值
(target-type)value;//target-type是指想要转换的类型,value值被转换的值。例如:int a=97; char c = (char)a;
float与double间转换时,格式重新计算。
整数运算的临界值
[align=center]当整数进行算术运算时,如果超过了边界值将自动截断超出部分,只保留对应数据范围内的数据,此数据将失去原始值所表示的真实性;[/align]

字符串连接运算符 +:

[align=center]连接运算符是将字符串参与到加运算中[/align]
[align=center]任何值与字符串进行“+”运算时,均当成字符串处理,运算结果为连接完成后的字符串[/align]
5+3 8
5+“3” “53”
1+2+“3” “33”
int a = 1,b = 2;
“a=”+a+ “,b=”+b a=1,b=2
++运算符:
自加(++)运算符将把变量的值在原来值的基础上递增1,++运算符有分为两种:一种是前置运算符(如++x);另一种是后置运算符(如x++);
public class Demo{
public static void main(String[] args){
int y = 10;
int x=10;
System.out.println("y="+y);
//结果是:11
System.out.println("x="+x);
//结果是:10
}
}

[align=center]
前置运算符就是:先让y的值加1,然后结果的值赋给y,于是y的输出就是11.后置运算符:先把x的值赋给x,然后,将x的值加1,并存储到内存空间,于是X输出的值就是10,而存储在内存中的x值为11.自减(--)运算符运算规则同自加运算一样。
[/align]

关系运算符

[align=center]用于比较两个值之间的关系,运算结果为布尔值的true或false[/align]
[align=center]•大于 > 3>4[/align]
[align=center]•大于等于 >= 4.5>=1.8[/align]
[align=center]•小于 < 3<-5[/align]
[align=center]•小于等于 <= 3.5<=5[/align]
[align=center]•等于 == 3==3 5==4 true==true[/align]
[align=center]•不等于 != false!=false 2.7!=3[/align]

逻辑运算符

[align=center]逻辑运算是对布尔值的组合关系[/align]
[align=center]逻辑运算结果均为布尔值true或false[/align]
[align=center]逻辑运算分为三种[/align]
[align=center]•逻辑与 & && [/align]
[align=center]•逻辑或 | ||[/align]
[align=center]•逻辑异或 ^ [/align]
[align=center]•逻辑非 ![/align]
逻辑与&(&&)所表达的语义是:只有当exp1“与”表达式exp2的值同时为true时,这个表达式的值才为true,否则整个表达式的值为false。
逻辑或(||)所表达的语义是:只要表达式exp1“或者”表达式exp2的值中有一个为true,整个表达式为true,否则整个表达式为false,又称短路。
逻辑非(!)所表达的语义是:只要表达式exp为true,整个表达式的值就为false,否则整个表达式的值为true,所以它又称为逻辑反。

位运算符

[align=center]位运算是针对数字的二进制表示格式进行运算的一种特殊运算。[/align]
[align=center]位运算共包含四种运算,操作数均为整数[/align]
•按位取反 ~
~15
•按位与 &
13&21
•按位或 |
33|15
•按位异或 ^
171^14
[align=center] [/align]
[align=center]按位取反(~):[/align]

对操作数的每一个二进制位进行“取反”操作
l格式:~操作数
int a =42;

intaa = ~a;

System.out.println(“aa=” +aa);

42 00101010

~

-43 11010101
[align=center] [/align]
[align=center]按位与(&):[/align]

将操作数的对应位逐位进行位逻辑与运算
l格式:操作数&操作数
用途:将操作数的指定二进制位置0
42 & 15

00101010

& 00001111

00001010

取后四位

[align=center]按位或(|):[/align]

将操作数的对应位逐位进行位逻辑或运算
格式:操作数|操作数
用途:将操作数的指定二进制位置1
42 & 15

00101010

| 00001111

00101111

后四位变成1

按位异或(^):

将操作数的对应位逐位进行位异或运算
格式:操作数^操作数
用途:将操作数的指定二进制位置取反
42 & 15

00101010

| 00001111

00100101

后四位进行取反操作

移位运算符:

对操作数的二进制表示形式进行左右移动
移位运算共包含三种运算
•左移 <<
•右移 >>
•无符号右移
>>>

左移:
格式:“op1<< op2”
l将操作数op1的二进制位向左移op2(正整数)位
l低位补零
int a =42;

intaa = a << 2;

System.out.println(“aa=” +aa);

42 00101010

<<2

168 10101000 相当于 42*22 = 168

运算速度比乘法快,但要注意数据溢出

右移:

格式:“op1>>op2”
l将操作数op1的二进制位向右移op2(正整数)位
l原数为正数,高位补零;原数为负数,高位补1
int a =42;

intaa = a >> 2;

System.out.println(“aa=” +aa);

42 00101010

>>2

10 00001010 相当于 42/22 = 10.5

运算速度比除法快,但要注意数据精度问题

无符号右移:

格式:“op1>>>op2”
l将操作数op1的二进制位向右移op2(正整数)位
l高位补零
int a =42;

intaa = a >>>2;

System.out.println(“aa=” +aa);

条件表达式:

条件运算符是目前唯一的三目运算符

格式:
•条件表达式?表达式1:表达式2 3>2?4:5
•true/false?值1:值2;
•当条件为真时,该运算符的结果是表达式1
•当条件为假时,该运算符的结果是表达式2

表达式:

l使用运算符和括号将操作数连接起来求值的式子
l操作数可以是变量、常量或方法(后期)
表达式类型:
•算术表达式
•关系表达式
•逻辑表达式
•赋值表达式
复合赋值运算
算数表达式:

用算术运算符和括号将操作数连接起来的式子
结果为整数或实数

关系表达式:
用关系运算符将两个表达式连接起来的式子
结果为布尔型的值

逻辑表达式:
用逻辑运算符将关系表达式和布尔值连接起来的式子
结果为布尔型的值

赋值表达式:

l用赋值运算符将一个变量和一个表达式使用等号连接起来的式子
l格式:
•变量名 =表达式;
int a = 15;

int b = 20;

int c = a+b;

int d = e = f = c;

int w = (a = 1) + ( b = 2);

复合赋值运算:
复合赋值运算是一种特殊的赋值形式
格式:
•变量名 复合赋值运算符 表达式
复合赋值运算符
•+= -= *= /= %=
•<<= >>= >>>= &= |=
a+=b 计算形式等同于
a = a + b

a+=b+5 计算形式等同于
a = a + (b+5)

------- android培训java培训、期待与您交流! ----------

详细请查看:http://edu.csdn.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: