Java基础--4运算符
来源:互联网 发布:php编程是什么 编辑:程序博客网 时间:2024/06/06 00:13
自增运算符和自减运算符
因为运算符改变了变量的值,所以它的操作数不能是数值。例如,4++就是一条非法语句。
int m =7;int n = 7;int a = 2 * ++m; // now a is 16, m is 8int b = 2 * n++; // now b is 14, n is 8
建议不要在其他表达式的内部使用++,这样编写很容易令人困惑,并也很容易会产生bug。
关系运算符与boolean运算符
&&和||是按照“短路”的方式来求值的。如果第一个操作数已经能够确定表达式的值,那么就不必再计算第二个操作数了。这样的方法不仅稍微加快了运行速度,同时也可以避免一些错误的发生。例如:
(x != 0) && (1 / x > x + y) //no division by 0
当x为0时,不会计算第二部分。如果x为0,1/x不会被计算,就不会出现除以0的错误。
重难点:位运算符
位运算符不按“短路”方法来运算。在得到结果之前,一定要计算两个操作数的值。
(^) 逻辑异或 二进制同位对比,不同时结果才为1
(~) 逻辑非 1变0,0变1
(<<) 左移 二进制有效位全部向左移制定位数
(>>) 右移 二进制有效位全部向右移制定位数
(>>>) 按位右移补零操作符 二进制有效位全部向右移指定位数,同时即使无效位也要用0补上。
warning:对移位运算符右侧的参数需要进行模32的运算(如果左边操作数是long类型,那么要对右侧操作数模64)。例如,1 << 35 与 1 << 3 或 8 是相同的。
数学函数与常量
Math类,包含各种各样的数学函数。
想要计算一个数值的平方根,可以使用sqrt方法:
double y = Math.sqrt(4);
在Java中,没有幂运算,因此要用到Math的pow方法:
double y = Math.pow(x, a);
y的值为x的a次幂(x^a)
Math类提供了一些常用的三角函数:
Math.sin
Math.cos
Math.tan
Math.atan
Math.atan2
还有指数函数以及它的反函数——自然对数以及以10为底的对数:
Math.exp
Math.log
Math.log10
还提供了两个用于表示π和е常量的近似值:
Math.PI
Math.E
不必在数学方法名和常量名前添加前缀“Math.”,只要在源文件的顶部加上下面的这段代码就可以了:
import static java.lang.Math.*;
数值类型之间的转换
在上图,蓝色箭头表示没有信息的丢失;而三个紫色粗线的箭头,表示有可能有精度损失的转换。例如:
int n = 123456789;float f = n;//f值为1.234567892E8
当使用上面两个数值进行二元操作时(例如 n+f , n是整数,f是浮点数),先要将两个操作数转换为同一种类型,然后再进行计算。
○ 如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型;
○ 否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型;
○ 否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型。
○ 否则,两个操作数都将被转换为int类型。
重难点:强制类型转换
如果想对浮点数进行舍入运算,那就需要使用Math.round方法。
double x = 9.997;int nx = (int)Math.round(x);
使用强制类型转换的原因是因为Math.round()方法返回的结果是一个long类型,存在信息丢失的可能。
warning:如果试图将一个数值进行强制转换,而又超出了目标类型的表示范围,结果就会截断成为一个完全不同的值。例如,(byte)300的实际值为44。
重点:括号与运算符级别
表达式 a += b += c
等价于 a += (b += c)
因为 += 是右边结合运算符
右结合运算符有
! ~ ++ – + - ()(强制类型转换)
?: = ((+ / - / * / / / % / & / | / ^ / << / >> / >>>)=)
枚举类型
自定义枚举类型
enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};
然后,可以声明这种变量:
Size s = Size.MEDIUM;
Size类型的变量只能存储在这个类型声明中给定的某个枚举值,或者null值。
<———————————————–>
From–《Java核心技术卷·I》
- Java基础--4运算符
- Java 基础运算符
- Java基础---运算符
- Java基础运算符
- 【基础】java 运算符
- Java基础:运算符
- Java基础--运算符
- java基础运算符
- Java基础--运算符
- Java基础--运算符
- Java基础------运算符
- java 基础 运算符
- java入门基础编-4-运算符
- Java基础:Java运算符
- 【Java基础】Java运算符
- java基础 运算符 条件运算符 ? :
- java基础之运算符
- Java基础_运算符
- 每日一练(20171108)
- 细数非对称加密与对称加密的区别
- 每天20分钟,只需一年,一年级学生英语听力达到六年级水平!关键是坚持一点都不难!
- Kaggle 发布首份数据科学从业报告 | 不及美国同行1/3,中国数据科学家平均年薪约3万美元
- 【持续更新】j2ee+tomcat实战过程中的问题及解决方案汇总
- Java基础--4运算符
- Android基于Retrofit2.0+RxJava的结合使用,让你的网络请求更简单
- Html常见用法
- 2017.11.8 LeetCode N皇后问题
- RS485(半)全双工实现
- GitHub 发布2017年度开发者报告 JavaScript 依然最受欢迎
- 使用jsonp获取天气预报
- 自定义控件ViewPagerIndicator的使用
- [翻译]WebRender:让网页渲染如丝顺滑