java中的操作符:1.操作符接收一个或多个参数,并生成一个新值;
2.有些操作符可以改变操作数本身的值,这被称为副作用,例如自增,自减操作符,这类带有副作用的操作符 的最普遍的用途就是用来产生副作用。但是使用此类操作符生成的值,与没有副作用的操作符生成的值没有什么区别。
3.几乎所有的操作符都只能操作"基本类型",例外的是"=","==","!="。这三个操作符可以操作所有对象。
4.String类支持"+","+="操作符。
java中的其它操作符:
一.三元操作符(三目操作符)
表达式为:boolean-exp ? value0 :value1
它也称为条件操作符,比较特别,有三个操作数。如果表达式boolean-exp的值为true,则计算value0,否则计算value1。value0和value1为操作符最终产生的值。
三元操作符可以被if-else语句替换。但它的特点是比较简洁,效率比较高,但如果过多使用,则会造成代码的可读性很差。
示例:
输出结果:
二.字符串操作符+和+=
它的特殊用途为连接不同的字符串。如果某个表达式以字符串起头,那么后续所有操作数都必须是字符串型。同时,编译器会把双引号内的字符序列自动转化为字符串。
示例:
输出:
三.类型转换操作符
类型转换(cast):在适当的时候,java会将一种数据类型自动转换成另一种。具体用法是将希望得到的数据类型置于圆括号内,放在要进行类型转换的值的左边。既可以对数值进行转换,也可以对变量进行。类型转换包括窄化转换和扩展转换。
窄化转换:将能容纳更多信息的数据类型转换为不能容纳那么多信息的类型的操作。这样就有可能会面临信息丢失的危险。此时,编译器会强制要求我们进行类型转换,或者说我们必须要显式的对它进行类型转换。
扩展转换:不必显式的进行类型转换,因为新的类型肯定能容纳原来类型的信息,不会造成任何信息的丢失。
java允许我们把任何基本类型转换为别的基本类型。但布尔型除外,布尔型根本不允许进行任何类型的转换处理。
在进行窄化转换时,必须注意截尾和舍入的问题
在将float或double转型为整数值型时,总是对该数字进行截尾处理。如果想要得到舍入,需要用到java.lang.Math类的round()方法。
示例:
输出结果为:
对浮点数进行舍入操作的介绍
对浮点数进行舍入时,可以利用java.lang.Math类的三个舍入方法:
---Math.ceil(X):ceil表示天花板的意思,所以ceil方法表示为向上舍入。
即:Math.ceil(11.1)=12,
Math.ceil(11.5)=12,
Math.ceil(11.8)=12,
Math.ceil(-11.1)=-11,
Math.ceil(-11.5)=-11,
Math.ceil(-11.8)=-11。
此时要注意,传入的参数是double类型的,输出的结果也是double类型的,并没有对X取整。
---Math.floor(X):floor表示地板的意思,所以floor方法表示为向下舍入,
即:Math.floor(11.1)=11,
Math.floor(11.5)=11,
Math.floor(11.8)=11,
Math.floor(-11.1)=-12,
Math.floor(-11.5)=-12,
Math.floor(-11.8)=-12
此时要注意,传入的参数是double类型的,输出的结果也是double类型的,并没有对X取整。
---Math.round(X):表示对浮点数四舍五入取整,算法为Math.floor(X+0.5),即将原数加上0.5之后再向下取整。Math.round(11.1)=Math.floor(11.1+0.5)=11,
Math.round(11.5)=Math.floor(11.5+0.5)=12,
Math.round(11.8)=Math.floor(11.8+0.5)=12,
Math.round(-11.1)=Math.floor(-11.1+0.5)=-11,
Math.round(-11.5)=Math.floor(-11.5+0.5)=-11,
Math.round(-11.8)=Math.floor(-11.8+0.5)=-12
此时要注意,传入的参数是float类型的,输出的结果是int类型的,有对X取整;
传入的参数是double类型的,输出的结果是long类型的,有对X取整;
示例:
输出为:
输出结果为:
四.java中没有sizeof操作符
sizeof操作符可以告诉你为数据项分配的字节数,在C和C++里,需要使用sizeof的最大原因是为了“移植”。不同的数据类型在不同的机器上可能有不同的大小。所以在进行一些与存储空间有关的运算时,必须要获取那些类型具体有多大。
但在java里完全不需要考虑数据类型的大小问题,因为所有数据类型在所有机器中的大小都是一样的。