运算符概要

  • 在Java中,使用算术运算符+,-,*,/表示加减乘除运算,当参与/的运算的两个操作数都是整数时,表示整数除法,否则,表示浮点除法.整数的求余操作(有时称为取模),用%表示,例如,15/2,15%2,15.0/2.
  • 需要注意的是,整数被0除将产生一个异常,而浮点数被0除会得到无穷大或NaN结果.

数学函数

  • 在Math类中,包含各种各样的数学函数,在编写不同类别的程序时,可能需要的函数也不同.
  • 要想计算一个数值的平方根,可以使用sqrt方法
double x = 4;
double y = Math.sqrt(x);
System.out.println(y); // 2
  • 在Java中,没有幂运算,因此需要借助于Math类的pow方法,语句double y = Math.pow(x,a);将y的值设置为x的a次幂.pow方法有两个double类型的参数,其返回结果也是double类型.
  • floorMod方法的存在是解决一个长期存在的有关整数余数的问题,考虑表达式n%2,如果n为偶数,这个表达式为0,如果n为奇数,表达式则为1,当然,除非n是负数.如果n为负,这个表达式则为-1,但是,欧几里得规则中描述:余数总是要大于等于0.因为我们要归一化一个的数,因此采用floorMod方法,该方法总会得到大于0的数.例如:floorMod(position+adjustment,12),产生0~11之间的数.但是对于负除数,floorMod会得到负数结果,不过这种情况在实际中很少出现.
  • Math类提供了一系列的三角函数
Math.sin
Math.cos
Math.tan
Math.atan
Math.atan2
  • 还有指数以及它的反函数-自然对数以及以10为底的对数
Math.exp
Math.log
Math.log10
  • 最后Java还提供了表示π和e常量的近似值
Math.pi
Math.E

数值类型之间的转换

隐式类型转换

  • 经常需要将一种数值类型转换为另一种数值类型.

  • 实心箭头表示无信息丢失的转换,虚箭头表示可能有精度损失的转换.
  • 当使用两个数值进行二元操作时,例如(n+f,n是整数,f是浮点数),先要将操作数转化为同一类型,然后进行计算.
    1. 如果两个操作数有一个是double类型,另一个操作数就转换为double类型.
    2. 否则,如果一个操作数是float类型,另一个操作数会转换为float类型.
    3. 否则,如果一个操作数是long类型,另一个会转换为long类型.
    4. 否则,两个操作数都会转化为int类型.

强制类型转换

  • 在必要的时候,需要将double类型转换为int类型,在Java中允许进行这种数值之间的类型转换,当然有可能丢失一些信息.在这种情况下,需要通过强制类型转换进行实现,强制类型转换的语法是在圆括号中给出想要转换的类型,后面紧跟的是待转换的变量名.例如
double x=9.997;
int nx=(int)x;

这时,变量nx的值为9,强制类型转换通过截断小数部分将浮点值转换为整型.

  • 如果对浮点数进行舍入计算,以便得到最接近的整数.那就使用Math.round方法.
double x=9.997;
int nx=(int)Math.round(x);

这时,nx的值为10,当调用round函数时,仍然需要进行强制类型转换,其原因是round方法返回的是long类型,由于存在信息丢失的可能性,所以只能采用显式的强制类型转换才能将long转换为int.

最新文章

  1. svn工具安装下载Tomcat源码以及导入eclipse
  2. Oracle --获取绑定变量的值.
  3. URL中的保留和不安全字符
  4. windowsxp设置开机不需密码,但是锁定后打开需要密码
  5. 您的应用静态链接到的 OpenSSL 版本有多个安全漏洞。建议您尽快更新 OpenSSL
  6. [zt]java synchronized详解
  7. 【PHP】$_POST, $HTTP_RAW_POST_DATA, and php://input
  8. unity3d 赛车游戏——复位点检测优化、反向检测、圈数检测、赛道长度计算
  9. Delphi与C语言类型转换对照
  10. (实用篇)微信网页授权(OAuth2.0) PHP 源码简单实现
  11. xamarin android——数据绑定到控件(二)
  12. 【小丸类库系列】Word操作类
  13. /etc/rc.local ; /etc/init.d ;/etc/profile;/etc/bashrc;~/.bash_profile;~/.bashrc;~/.bash_logout
  14. 屏蔽错误:LNK2038
  15. Lua 数据库访问(转)
  16. Nagios工作原理
  17. Cause: net.sf.cglib.beans.BulkBeanException; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
  18. 部分用户访问Polycom视频会议时故障
  19. 第一个React Native程序踩到的那些坑
  20. java学习进度

热门文章

  1. 多任务-python实现-UDP多线程聊天(2.1.6)
  2. 教你如何修改Python的pip源镜像
  3. 获取Web项目中的控制器类以及类中Action方法
  4. .net MVC 微信公众号 获取 access_token
  5. 微软自带打包工具 InstallShield 的使用
  6. 华为全栈AI技术干货深度解析,解锁企业AI开发“秘籍”
  7. JSP 的 4 种作用域?
  8. 零基础学习qt4 第七章的第一个例子
  9. python-scrapy爬取某招聘网站信息(一)
  10. Hadoop集群模式安装出现的若干问题