黑马程序员--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取模,%运算符可以对整型数据取模,也可以对实型数据取模。
由以上运行结果可以看出,不管是整型还是实型的取模运算,余数的符号与被除数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](低)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]
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++);
[align=center]
[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]逻辑运算结果均为布尔值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]
•按位取反 ~
~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
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
相关文章推荐
- 黑马程序员--------------java基础语法(—)------常量,变量,数据类型和运算符
- 【黑马程序员】------java基础语法--关键字、变量、常量、运算符
- 黑马程序员——Java基础---正则表达式
- 黑马程序员 JAVA基础--关键字,标识符,运算符,二进制的转换的学习笔记
- 黑马程序员——Java基础语法(一)---关键字、常量、变量、运算符
- 黑马程序员——java语言基础常量、变量、运算符
- 黑马程序员-----java基础之运算符----与(&)、或(|)、非(!)、异或(^)、短路与(&&)等
- G笔记_Java基础(变量、基本类型、运算符和表达式-1)
- 黑马程序员——【Java基础】——正则表达式
- 黑马程序员学习log第九篇基础知识:JAVA的面向对象之正则表达式及反射总结
- 黑马程序员-----java基础概述之关键字、运算符
- 黑马程序员----java基础--常量变量运算符总结
- Java语言基础-4.运算符与表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员_java基础一(标识符,关键字,基本数据类型,运算符)
- 黑马程序员_java语言基础_常量变量运算符
- 黑马程序员-Java基础-正则表达式
- 黑马程序员--Java基础语法之关键字、常量、变量、运算符
- 黑马程序员——java基础——正则表达式
- 黑马程序员_java基础笔记(08)...GUI,网络编程,正则表达式