5、运算符

Java中的运算符分类:

5.1 算术运算符

?

5.1.1算术算符

在Java中,使用算术运算符+、-、*、/、%表示加、减、乘、除、求余运算。

注意:当运算/运算时,两个都是整数是,表示整数除法,否则表示浮点除法。

两个数进行算术 运算时,结果向高字节数据类型隐式转换

?

示例:

步骤1:在Demo010项目中的com.zjk.type包中创建Arithmetic类

源码:

package com.zjk.type;

/**

*

*@类名 Arithmetic

*@日期 2015年11月28日下午6:59:47

*@作者
zjkorder

*@版本 v1.0

*@描述????

*

* 算术运算符

* main方法所在类

*/

public
class
Arithmetic {

????

????/**

???? * 主方法

???? * @Title: main

???? * @Description: TODO(这里用一句话描述这个方法的作用)

???? * @param
@param args 设定文件

???? * @return void

???? * @throws

???? *

???? */

????public
static
void main(String[] args) {

????????

????????int
a = 7; //声明并赋值一个整型

????????

????????int
b = 2; // 声明并赋值一个整数

????????

????????double
c = 2.0;// 声明并赋值一个浮点数

????????

????????int
d = a*b; //两个整数相乘的结果为整数

????????

????????int
e = a/b; //两个整数相除的结果为整数

????????

//????????int g = a*c;

????????

//????????int f = a/c;// 错误:Type mismatch: cannot convert from double to int. 原因:两个进行算术只要其中一个为浮点数,其结果为浮点数

????????

//????????int h = 2.8%2;//错误:Type mismatch: cannot convert from double to int

????????

????????double
h = 2.8%2; //浮点数的取余运算时通过的

?

????????System.out.println(h);//原因:浮点数取余运算,存在精度丢失

????????

????}

?

}

?

5.1.2数据类型之间的转换

?

在程序运行时,经常需要将一种数值类型转换为另一种数值类型。数值之间的合法转化关系(自动转化):

?

注释: 黑色箭头表示无信息丢失的转换

灰色箭头表示可能有精度损失的转换

低字节向高字节自动转换,不存在精度丢失。

相同字节大小的来个数据类型转换,有可能存在精度丢失。

5.1.3强制数据类型转换

?

数据类型从低字节向高字节转换是 自动转换,当高字节向低字节转换是需要强制转换。

强制类型转换:

double
d3 = 10.9879786586587;

????????float
f3 = (float)d3; //double类型转换为float

?

扩展技巧: 想要取一个浮点数最近的整数?

double
d = 9.98;

????int
i = (int)Math.round(d);//Math.round();四舍五入

?

示例:

步骤1在Demo010项目中的com.zjk.type包中创建Convert类

源码:

package com.zjk.type;

/**

*

*@类名 Convert

*@日期 2015年11月28日下午7:49:08

*@作者
zjkorder

*@版本 v1.0

*@描述????

* 数据类型之间转换

* main方法所在类

*/

public
class
Convert {

????
?

????

????/**

???? * 主方法

???? * @Title: main

???? * @Description: TODO(这里用一句话描述这个方法的作用)

???? * @param
@param args 设定文件

???? * @return void

???? * @throws

???? *

???? */

????public
static
void main(String[] args) {

????????

????????byte
b1 = 1; //声明赋值字节类型的整数a

????????

????????short
s1 = b1; //正确,byte 可以自动转换为short

????????

?

????????char
c1 = ‘a‘;//声明一字符型

????????

????????int
i1 = c1;//正确,字符型可以自动转换为int型

????????????????

????????int
i2 = s1; // 正确,short 可以自动转化为
int

????????

????????long
l1 = i2;// 正确
,int可以自动转化为long型

????????

????????double
d1 = i2;// 正确
,int可以自动转化为double型

????????

????????System.out.println("不存在精度丢失的自动转换");

????????System.out.println("转换关系/数据类型\t\t\t值");

????????System.out.println("a-->char\t\t\t"+c1);

????????System.out.println("char-->int\t\t\t"+i1);

????????System.out.println("1-->byte\t\t\t"+b1);

????????System.out.println("byte-->short\t\t\t"+s1);????

????????System.out.println("short-->int\t\t\t"+i2);

????????System.out.println("int-->long\t\t\t"+l1);

????????System.out.println("int-->double\t\t\t"+d1);

????????
?

????????

????????int
i3 = 2_147_483_647;//一个int类型数据的最大值

????????

????????float
f1= i3; //存在精度丢失

????????

????????long
l2 = 9_223_372_036_854_775_807L;//long 类型的最大值

????????

????????float
f2 = l2;//存在
精度丢失

????????

????????double
d2 = l2;//存在精度丢失

????????

????????System.out.println("存在精度丢失的自动转换");

????????System.out.println(" 转换关系/数据类型\t\t\t值");

????????System.out.println(" 2_147_483_647-->int\t\t\t"+i3);

????????System.out.println(" int-->float\t\t\t"+f1);

????????System.out.println("9_223_372_036_854_775_807L-->long\t\t\t"+l2);

????????System.out.println(" long-->float\t\t\t"+f1);

????????System.out.println(" long-->double\t\t\t"+f1);

????????
?

????????

????????double
d3 = 10.9879786586587;

????????float
f3 = (float)d3; //double类型转换为float

????????int
i4 = (int) f3; //float 类型强制转换为int
类型

????????
?

????
?

????????
?

????????

????????System.out.println("强制转化");

????????

????????System.out.println("转换关系/数据类型\t\t\t值");

????????System.out.println("10.9879786586587-->double\t\t\t"+d3);

????????System.out.println("double-->float\t\t\t"+f3);

????????System.out.println("float-->int\t\t\t"+i4);

????????

????????

????}

?

}

?

5.14数据类型转换精度丢失原理

?

在CUP中 数据运算主要是在寄存器中运行的,而计算机的寄存器的空间的相当有限的,所以程序语言规定数据类型的大小,所以每一个数据类型都有自己的字节大小:

高字节向低字节转换:

?

后四位为小数部分

前四位为整数部分

?

5.2自增运算符与自减运算符

?

1:n++运算符,先返回值,再加加:

2:++n运算符,先加加,再返回值:

3:n---运算符,先返回值,再减减:

4:--n运算符,先减减,再返回值

?

示例:

步骤1在Demo010项目中的com.zjk.type包中创建IncrementAndSelfReduction类

源码:

package com.zjk.type;

/**

*

*@类名 IncrementAndSelfReduction

*@日期 2015年11月28日下午9:15:52

*@作者
zjkorder

*@版本 v1.0

*@描述????

* 自增自减运算

* main方法所在类

*/

public
class
IncrementAndSelfReduction {

?

????/**

???? * 主方法

???? * @Title: main

???? * @Description: TODO(这里用一句话描述这个方法的作用)

???? * @param
@param args 设定文件

???? * @return void

???? * @throws

???? *

???? */

????public
static
void main(String[] args) {

????????int
i = 1;

????????System.out.println("i\t"+i);

????????System.out.println("i++\t"+(i++));

????????System.out.println("i\t"+i);

????????System.out.println("++i\t"+(++i));

????????System.out.println("i\t"+i);

????????System.out.println("i--\t"+(i--));

????????System.out.println("i\t"+i);

????????System.out.println("--i\t"+(--i));

????????System.out.println("i\t"+i);

????}

}

?

5.3关系运算符与boolean运算符

?

<(小于), >(大于),<=(小于等于),>=(大于等于)

&& 逻辑与 || 逻辑或 !逻辑非

三目运算符:

condition ? expression1 : expression2;

当条件condition 为真时 计算expression1表达式,否则执行expression2表达式

?

示例程序:

步骤1:步骤1在Demo010项目中的com.zjk.type包中创建RelationalOperators类

?

源码:

package com.zjk.type;

/**

*

*@类名 RelationalOperators

*@日期 2015年11月28日下午9:36:31

*@作者
zjkorder

*@版本 v1.0

*@描述????

* 逻辑运算符

* main方法所在类

*

*/

public
class RelationalOperators {

?

????public
static
void main(String[] args) {

????????

????????int
a = 10;

????????

????????int
b = 5;

????????

????????boolean
t = true;

????????

????????boolean
f = false;

????????
?

????????

????????System.out.println("a<b\t"+(a<b));

????????System.out.println("a>b\t"+(a>b));

????????System.out.println("a>=b\t"+(a>=b));

????????System.out.println("a<=b\t"+(a<=b));

????????System.out.println("!t\t"+(!t));

????????System.out.println("t&&f\t"+(t&&f));

????????System.out.println("t||f\t"+(t||f));

????????System.out.println("a < b ? (a+b):(a-b)\t"+(a < b ? (a+b):(a-b)));

????????

????}

?

}

?

?

5.4位运算符

?

& ("与")

| ("或")

^ ("异或")

~ ("非")

?

?

?

?

时间: 2024-12-22 12:41:58

5、运算符的相关文章

java中的三元运算符详解

最近在带领实习生中遇到很多新手问与三元运算符有关的java题目,多数为代码结果题,少数为应用题.鉴于很多资料上对于java三元运算的讲解过于简单,网上的资料与题目也不是很完善,对于结果答案分析不一,故在此总结,当然仅为个人观点,水平有限,不足之处,还请大家多多指出,互相交流学习. 什么是java三元运算符呢?无疑其操作元有三个,第一个是条件表达式,剩余两个为值,条件表达式为真时运算取第一个值,为假时取第二个值. 其示例代码如下:boolean a = 20 < 45 ? true : false

Mysql运算符与函数(胖胖老师)

use test;create table `employee`(    emp_no int unsigned,    emp_name varchar(30),    emp_sex varchar(3),    emp_age tinyint unsigned,    sal double,    history datetime);insert into employee values(1, '张三', '男', 18, 5000, '2012-04-23'),(2, '李四', '男'

MySQL数据库中的算术运算符

MySQL数据库中的算数运算符 MySQL数据库中的算术运算符 一.运算符的概述: 运算符在MySQL数据库中也是很重要的知识体,在执行sql语句的时候这个运算符对操作数据帮助很大.其中运算符的运用可以帮助你减省大量的时间,操作起来也比较灵活. 二.运算符 运算符主要包括"算数运算符"."比较运算符"."罗运算符"."位运算符"四大类,下面我们就一次学习一下. 1.算术运算符 算术运算符在sql语句的时候经常使用,例如对表的字

重载&gt;&gt;运算符

#include <iostream>   #include <stdio.h>   using namespace std;   class Input   {       public:          //实际重载是右移运算符          Input & operator >> (int &a)          {              scanf("%d",&a);              fflush

JS中的运算符&amp;JS中的分支结构

一.JS中的运算符 1.算术运算(单目运算符) + 加.- 减.* 乘./ 除.% 取余.++ 自增.-- 自减 >>> +:有两种作用,连接字符串/加法运算.当+两边全为数字时,进行加法运算: 当+两边有任意一边为字符串时,起连接字符串的作用,连接之后的结果为字符串 除+外,其余符号运算时,会先尝试将左右变量用Number函数转为数字 >>> /: 结果会保留小数点 >>> ++: 自增运算符,将变量在原有基础上+1: --: 自减运算符,将变量在原

java基础语言 运算符

/* ++,--运算符的使用: 单独使用: 放在操作数的前面和后面效果一样.(这种用法是我们比较常见的) 参与运算使用: 放在操作数的前面,先自增或者自减,然后再参与运算. 放在操作数的后面,先参与运算,再自增或者自减. 作用:就是对变量进行自增1或者自减1. */ public class Text3 { public static void main(String[] args) { //定义两个变量 int x = 3; int y = 4; //单独使用 //x++; //y--; ++

集合和三元运算符

一.三元运算符 如下判断可以使用三元运算更方便的实现: a = 1b = 2 if a > 1: c = aelse: c = b 和下面是一样的: a = 1b = 2#下面这个c = a if a>1 else b 如下两种方法也是一样的:方式一: s=[]nums = list(range(1,11))for i in nums: if i%2==0: s.append(i)print(s)方式二:ss = [i for i in nums if i%2==0]print(ss)#这两种

2_C语言中的数据类型 (八)运算符

1          运算符表达式和语句 1.1       基本运算符 1.1.1          = 数据对象:泛指数据在内存的存储区域 左值:表示可以被更改的数据对象 右值:能赋给左值的量 1.1.2          + 加 1.1.3          – 减 1.1.4          * 乘 1.1.5          / 除 1.1.6          % 取余数 1.1.7          += 加等于 1.1.8          -= 减等于 1.1.9     

(17)Powershell中的重定向运算符

默认情况下,Powershell 把输出发送到屏幕显示.但是,Powershell也可以将输出重定向至一个文本文件,或将错误输出重定向至常规输出流. 重定向运算符有什么用 ? 重定向运算符意味着我们可以将命令的输出信息输出到指定的文件,完全满足脚本中的log的要求,即可以利用重定向打印脚本或命令执行的详细信息. Powershell 中有以下重定向运算符. 运算符 说明 示例 > 将输出发送到指定文件. PS D:\> Get-Process > process.txt >>

(18)Powershell中的字符串拆分运算符

Powershell中提供了对字符串的拆分操作运算符.-split 运算符将一个字符串拆分成多个字符串. 拆分运算符 拆分运算符用于将一个或多个字符串拆分为多个子字符串.可更改拆分操作的以下元素: (1)定界符.默认为空白,但是可指定字符.字符串.模式或用于设置定界符的脚本块. (2)子字符串的最大数目.默认设置为返回所有子字符串.如果指定的数字小于子字符串数,则其余子字符串将合并到最后一个子字符串中. (3)用于指定定界符匹配条件的选项,如 SimpleMatch 和 Multiline. 拆