7.[Think in Java笔记]操作符

简介:

Java操作符作用于操作数,生成一个新值。

几乎所有的操作符都智能操作基本类型,例外的操作符是"="、"=="、和"!=",这些操作符可以操作所有的对象,除此之外,String类还支持"+"和"+="。

优先级

当一个表达式中存在多个操作符时,操作符的优先级决定了各部分的计算顺序。

赋值

赋值操作符"=",意思是"去右边的值,把它复制给左边"。右值可以是任意常数、变量或表达式,左值必须是一个明确的已命名变量。

基本操作符

Java基本元素操作符包括加号(+),减号(-),除号(/)、乘号(*)以及取模操作符(%)。

自动递增和递减

递减操作符是"--",意味"减少一个单位";递增操作符"++",意味"增减一个单位"。

这连个操作符有两种方式:前缀式和后缀式。前缀递增表示"++"操作符位于变量或表达式的前面,后缀递增表示"++"操作符位于变量或表达式的后面。

对于前缀递增和前缀递减,是先执行运算,再生成值。而对于后缀递增和后缀递减,会先生成值,再执行运算。

关系运算符

关系运算符生成的是一个boolean结果,它们计算的是操作数的值之间的关系。

关系操作符包括小于(<)、大于(>),小于或等于(<=)、大于或等于(>=),等于(==)以及不等于(!=)。

关系运算符==和!=适用于所有对象,比较的是对象的引用。如果相比较两个对象的实际内容是否相同,必须使用equals()方法;而基本类型直接使用==和!=比较。

逻辑运算符

逻辑运算符包括与(&&)、或(||)、非(!)能根据参数的逻辑关系,生成一个布尔值。

与、或、非操作只可应用与布尔值。

按位操作符

按位操作符/对两个参数中对应的位/执行布尔代数运算,并生成一个结果。

按位操作符与逻辑操作符使用同样的符号,但由于位是非常小,所以按位操作符只是用一个符号,即按位与(&)、按位或(|),按位非(~)。

位移操作符

位移操作符的运算对象是二进制的位。位移操作符只可用来处理整数类型。

左移位操作符(<<)能按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0);"有符号"右移位操作符(>>)则按照操作右侧制定的位数将操作符左边的操作向右移动;"有符号"右移位操作符使用符号扩展:若符号为正,则在高位插入0;若符号为负,则在高位插入1;Java中增加了一种"无符号"右移位操作符(>>>),它使用零扩展:无论政府,都在高位插入0。

如果对char、byte或者short类型的数值进行位移操作,则在位移之前,他们先转换为int类型。

result = expression1 >> expression2

十进制整数转换为二进制整数

十进制整数转换为二进制整数采用"除2取余,逆序排列"法,即用2除以十进制整数,得到一个商和余数,再用2去除商,又得到一个商和余数,如此进行,直到商为1时为止,然后把先得到的余数作为二进制数的低位,后得到的余数作为二进制数的高位,依次排列。

例如302:302/3=152余0;152/2=75余1;72/2=37余1;37/2=18余1;18/2=9余0;9/2=4余1;4/2=2余0;2/2=1余0;1/2=0余1;故二进制数为100101110。

二进制整数转换为十进制整数

二进制整数转换为十进制整数采用"把二进制数首先写成加权系数展开式,然后按十进制加法规则求和"。

例如01101011:第0位,1乘2的0次方=1;1乘2的1次方=2;0乘2的2次方=0;1乘2的3次方=8;0乘2的4次方=0;1乘2的5次方=32;1乘2的6次方=64;0乘2的7次方=0;然后1+2+0+8+32+60=107。

负数的二进制表达式

负数是以其正值的补码的形式表达。

原码:一个整数,按照绝对值的大小转换成的二进制数

反码:将二进制数按位取反,得到的新二进制数称为原二进制数的反码(1变0,0变)

补码:反码加1称为补码,即要得到一个数的补码,先得到反码,然后反码加1,所得数为补码。比如00000101的反码是11111010,那么补码为11111010+1=11111011。

三元操作符

三元操作符也称为条件操作符:boolean-exp ? value0 : value1

如果boolean-exp的结果为true,则计算value0,如果为false,则计算value1。

条件运算符与if-eles完全不同,因为它会产生一个值。

字符串操作符+和+=

这个操作符在Java中有特殊用途:连接不同的字符串。

字符串操作符:如果表达式以一个字符串起头,那么后续所有操作数都必须是字符串型,编译器会把双引号内的字符序列自动转换成字符串。










本文转自 LinkedKeeper 51CTO博客,原文链接:http://blog.51cto.com/sauron/1229406,如需转载请自行联系原作者
目录
相关文章
|
13天前
|
Java
Java基础—笔记—static篇
`static`关键字用于声明静态变量和方法,在类加载时初始化,只有一份共享内存。静态变量可通过类名或对象访问,但推荐使用类名。静态方法无`this`,不能访问实例成员,常用于工具类。静态代码块在类加载时执行一次,用于初始化静态成员。
10 0
|
13天前
|
Java API 索引
Java基础—笔记—String篇
本文介绍了Java中的`String`类、包的管理和API文档的使用。包用于分类管理Java程序,同包下类无需导包,不同包需导入。使用API时,可按类名搜索、查看包、介绍、构造器和方法。方法命名能暗示其功能,注意参数和返回值。`String`创建有两种方式:双引号创建(常量池,共享)和构造器`new`(每次新建对象)。此外,列举了`String`的常用方法,如`length()`、`charAt()`、`equals()`、`substring()`等。
15 0
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--希尔排序
数据结构与算法(Java篇)笔记--希尔排序
|
11天前
|
存储 Java 编译器
Java基础教程(4)-Java中的操作符
【4月更文挑战第4天】Java中的String是常用类,字符串是不可变对象,用双引号表示。String对象在编译期长度受限于65535,运行期不超过Int范围。字符串方法如length()、substring()、replace()、equals()等提供了多种操作。可变字符串可使用StringBuffer或StringBuilder。String对象通过字符串池优化内存,池中已有相同内容字符串则返回其引用。
|
13天前
|
Java API
Java基础—笔记—内部类、枚举、泛型篇
本文介绍了Java编程中的内部类、枚举和泛型概念。匿名内部类用于简化类的创建,常作为方法参数,其原理是生成一个隐含的子类。枚举用于表示有限的固定数量的值,常用于系统配置或switch语句中。泛型则用来在编译时增强类型安全性,接收特定数据类型,包括泛型类、泛型接口和泛型方法。
9 0
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--快速排序
数据结构与算法(Java篇)笔记--快速排序
|
1月前
|
机器学习/深度学习 算法 搜索推荐
数据结构与算法(Java篇)笔记--归并排序
数据结构与算法(Java篇)笔记--归并排序
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--插入排序
数据结构与算法(Java篇)笔记--插入排序
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--选择排序
数据结构与算法(Java篇)笔记--选择排序
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--冒泡排序
数据结构与算法(Java篇)笔记--冒泡排序