零基础学Java(3)运算符
运算符
运算符用于连接值。Java提供了一组丰富的算术和逻辑运算符以及数学函数。
算术运算符
在Java中,使用算术运算符+、-、*、/表示加、减、乘、除运算。当参与/
运算的两个操作数都是整数时,表示整数除法;否则,表示浮点除法。整数的求余操作用%
表示。例如,15/2=7,15%2=1,15.0/2=7.5
需要注意,整数被0除将虎产生一个异常,而浮点数被0除将会得到无穷大或NaN结果。
数学函数与常量
在Math类中,包含了各种各样的数学函数。在编写不同类别的程序时,可能需要的函数也不同。
要想计算一个数值的平方根,可以是一个sqrt
方法
public class FirstSample {
public static void main(String[] args) {
double x = 4;
double y = Math.sqrt(x);
System.out.println(y); // 打印结果2.0
}
}
在Java中,没有幂运算,因此需要借助于Math类的pow
方法
double y = Math.pow(x, a)
将y的值设置为x的a次幂。pow方法有两个double类型的参数,其返回结果也为double类型
数值类型之间的转换
我们经常需要将一种数值类型转换为另一种数值类型。下图给出了数值类型之间的合法转换
图中有6个实现箭头,表示无信息丢失的转换;另外有3个虚线箭头,表示可能有精度损失的转换。例如,123456789
是一个大整数,它所包含的位数比float类型所能够表示的位数多。当将这个整数转换为float类型时,将会得到正确的大小,但是会损失一些精度。
public class FirstSample {
public static void main(String[] args) {
int n = 123456789;
float f = n;
System.out.println(f);
}
}
输出结果
1.23456792E8
当用一个二元运算符连接两个值时(例如n+f,n是整数,f是浮点数),先要将两个操作数转换为同一种类型,然后再进行计算。
- 如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型。
- 否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型。
- 否则,如果其中一个操作数是long类型,另一个操作数将转换为long类型。
- 否则,两个操作数都将被转换为int类型
强制类型转换
在Java中,允许进行这种数值之间的类型转换,当然,有可能会丢失一些信息。这种可能损失信息的转换要通过强制类型转换来完成。强制类型转换的语法格式
是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名。例如:
double x = 8.997;
int nx = (int) x;
这样,变量nx的值为8,因为强制类型转换通过截断小数部分将浮点值转换为整型。
如果想对浮点数进行舍入运算,以便得到最接近的整数(在很多情况下,这种操作更有用),那就需要使用Math.round
方法:
double x = 8.997;
int nx = (int) Math.round(x);
现在,变量nx的值为10。当调用round的时候,仍然需要使用强制类型转换(int)。其原因是round方法返回的结果为long类型,由于存在信息丢失的可能性,所以只有使用显式的强制类型转换才能够将long类型转换成int类型。
结合赋值和运算符
可以在赋值中使用二元运算符,这是一种很方便的简写形式。例如
x += 4;
等价于:
x = x + 4;
自增与自减运算符
程序员都知道加1,减1是数值变量最常见的操作。在Java中也有:n++将变量n的当前值加1,n--则将n的值减1.++在前会先完成加1;++在后会使用变量原来的值。
关系和boolean运算符
Java包含丰富的关系运算符
- 相等使用两个等号
==
- 不相等使用
!=
&&
表示逻辑与运算符||
表示逻辑或运算符
注意:&&和||运算符,如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了
最后,Java支持三元操作符?:
,这个操作符很有用。如果条件为true,下面的表达式
condition? expression1: expression2
就为第一个表达式的值,否则计算为第二个表达式的值。例如
x < y ? x: y
会返回x和y中较小的一个。
零基础学Java(3)运算符的更多相关文章
- 零基础学Java第二节(运算符、输入、选择流程控制)
本篇文章是<零基础学Java>专栏的第二篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 第一章 运算符 1.1 算术运算符的概述和用法 运算符 对常量和变 ...
- 零基础学Java,PayPal技术专家手把手带你入门
在最权威的 TIOBE 编程语言排名榜单上,Java 常年稳居第一,可以说是世界上应用最为广泛的一门语言. 同时,在微服务.云计算.大数据.Android App 开发等领域,Java 也是当之无愧的 ...
- 零基础学Java第四节(字符串相关类)
本篇文章是<零基础学Java>专栏的第四篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! String 本文章首发于公众号[编程攻略] 在Java中,我们经 ...
- 零基础学Java第三节(基本输入输出)
本篇文章是<零基础学Java>专栏的第三篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] Java程序的命令行参数 我们可以 ...
- 零基础学Java第一节(语法格式、数据类型)
本篇文章是<零基础学Java>专栏的第一篇文章,从本篇文章开始,将会连更本专栏,带领大家将Java基础知识彻底学懂,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! ...
- 零基础学Java第五节(面向对象一)
本篇文章是<零基础学Java>专栏的第五篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] 类与对象 在哲学体系中,可以分为主 ...
- 零基础学Java第六节(面向对象二)
本篇文章是<零基础学Java>专栏的第六篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] 继承 创建一个Person类 我们 ...
- 零基础学Java(1)初识Java程序
前言 就国内来说,Java毫无疑问是后端语言中的No.1没有之一,所以今天我们也来0基础学习Java!!! Java的好处(针对测试工程师) 面试加分->涨薪 大多数公司服务端用的都是Java, ...
- [零基础学JAVA]Java SE基础部分-03. 运算符和表达式
转自:http://redking.blog.51cto.com/27212/116751 1.课程名称:运算符.表达式 讲解了JAVA中各种运算符的使用,包括与.或.非.大于.小于等. 2.知识点 ...
- 零基础学Java之Java学习笔记(四):运算符
算术运算符: 算术运算符是对数值类型的变量进行运算的,在 Java 程序中使用的非常多. 运算符 说明 例子 结果 + 加法-相加运算符两侧的值 9+9 18 - 减法-左操作数减去右操作数 10 ...
随机推荐
- XCTF练习题---WEB---backup
XCTF练习题---WEB---backup flag:Cyberpeace{855A1C4B3401294CB6604CCC98BDE334} 解题步骤: 1.观察题目,打开场景 2.打开以后发现是 ...
- 前后端分离,简单JWT登录详解
前后端分离,简单JWT登录详解 目录 前后端分离,简单JWT登录详解 JWT登录流程 1. 用户认证处理 2. 前端登录 3. 前端请求处理 4. 后端请求处理 5. 前端页面跳转处理 6. 退出登录 ...
- XPath语法和lxml模块
XPath语法和lxml模块 什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. X ...
- JS运算符,流程控制,函数,内置对象,BOM与DOM
运算符 1.算数运算符 运算符 描述 + 加 - 减 * 乘 / 除 % 取余(保留整数) ++ 递加 - - 递减 ** 幂 var x=10; var res1=x++; '先赋值后自增1' 10 ...
- 3.Docker常用命令
帮助启动类命令 启动docker: systemctl start docker 停止docker: systemctl stop docker 重启docker: systemctl restart ...
- 使用Husky提升你的项目规范
使用 ESLint, Prettier, Husky, Lint-staged 提升你的项目规范 本文写于 2020 年 11 月 7 日 大家应该都知道 ESLint 与 prettier,他们的用 ...
- Python写安全小工具-TCP全连接端口扫描器
通过端口扫描我们可以知道目标主机都开放了哪些服务,下面通过TCP connect来实现一个TCP全连接端口扫描器. 一个简单的端口扫描器 #!/usr/bin/python3 # -*- coding ...
- 594. Longest Harmonious Subsequence - LeetCode
Question 594. Longest Harmonious Subsequence Solution 题目大意:找一个最长子序列,要求子序列中最大值和最小值的差是1. 思路:构造一个map,保存 ...
- DevOps之敏捷开发
初步了解一下敏捷开发及其流程 1 为什么要敏捷开发? 敏捷开发描述了一套软件开发的价值和原则,在这些开发中,需求和解决方案皆通过自组织跨功能团队达成. 1.1 背景与动机 当需求的不明确性和工程实现的 ...
- unity---监听物体被点击
脚本 public void OnPointerClick(PointerEventData eventData) { Debug.LogFormat("{0} is Click" ...