首页 > 编程语言 >java基础-算术运算符(加减乘除取余),隐式转换、强制转换

java基础-算术运算符(加减乘除取余),隐式转换、强制转换

时间:2023-04-30 20:22:06浏览次数:36  
标签:10 java int 数据类型 运算符 转换 表达式 赋值

一、运算符和表达式的定义

运算符:对字面量或者变量进行操作的符号。

表达式:用运算符把自变量连接起来,符合java语法的式子就可以称为表达式。

例如:

int a=10;
int b=20;
int c=a+b;

其中,+,是运算符,并且是算术运算符;a+b表达式,由于+是算数运算符,所以这个表达式叫算术表达式

二、运算符的分类

1、算术运算符

加+、减-、乘*、除/、取余%

当算术运算中数值的数据类型不一致时,就需要进行数据类型转换。数据类型转换又分为隐式转换强制转换。

隐式转换(数据类型自动提升)

把一个取值范围小的数值,转成取值范围大的数值。

byte<short<int<long<float<double

例如:

int a=10;
double b=a;

其中,b=10.0属于double数据类型

注意:隐式转换的两种提升规则

取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算。

byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。

例如:

byte b1=10;
byte b2=10;
数据类型 b3=b1+b2;

其中,b3的数据类型是int。

强制类型转换

把一个取值范围大的数值,赋值给取值范围小的变量。是不允许直接赋值的,如果一定要这么做就需要假如强制转换。

强制转换格式:目标数据类型 变量名=(目标数据类型)被强转的数据。

例如:

double a=12.2;
int b=(int)a;

注意,如果强转的数据比较大,就会发生错误。

例如:

int a=300;
byte b=(byte)a;

这时,b就会报错,因为byte类型的取值范围是-128~127,300超出了这个范围所以报错。

字符串的“+”操作

当“+”操作出现字符串时,这个“+”是字符串连接符,而不是算术运算符了。作用是将前后的数据进行拼接,并产生一个新的字符串。

例如:

String a="12";
String b="2";
String c=a+b;//c=122

2、自增自减运算符

++(自增)和--(自减)无论是放在变量的前边还是变量的后边,单独写一行的结果是一样的。

但是参与计算时,a++(先用后加)和++a(先加后用)是有区别的。

例如:

 

int a=10;
int b=a++;//这时b=10,a=11,先用后加,表示先将a=10赋值给b,然后a再进行自增+1;
int c=10;
int d=++a;//这时d=11,c=10,先加后用,表示a先进行自增+1,然后再将自增后的值赋值给d;

 

3、赋值运算符

符号 作用 说明
= 赋值 int a=10,将10赋值给变量a
+= 加后赋值 a+=b,将a+b赋值给变量a
-= 减后赋值

a-=b,将a-b赋值给变量a

*= 乘后赋值

a*=b,将a*b赋值给变量a

/= 除后赋值

a/=b,将a/b赋值给变量a

%= 取余后赋值

a%=b,将a%=b赋值给a

注意:

扩展的赋值运算符,隐含了一个强制类型转换。

例如:

short a=1;
short a+=1;//a=a+1-》右边的a是一个int数据类型,

4、关系(比较)运算符

符号 说明  
== a==b,判断a和b的值是否相等,成立为true,不成立为false  
!= a!=b,判断a和b的值是否不相等,成立为true,不成立为false  
>

a>b,判断a是否大于b,成立为true,不成立为false

 
>=

a>=b,判断a是否大于等于b,成立为true,不成立为false

 
<

a<b,判断a是否小于b,成立为true,不成立为false

 
<=

a<=b,判断a是否小于等于b,成立为true,不成立为false

 

注意,关系运算符的结果都是boolean类型,要么是true,要么是false。

5、逻辑运算符

符号 作用 说明
& 与、且 并且,两边都为真,结果才为真
| 或者,两边都为假,结果才能为假
^ 异或 相同为false,不同为true
! 非,取反 相反
&& 短路与 两个都为真,结果才是真
|| 短路或 只要有一个为真,结果就为真

6、三元运算符

三元表达式格式:关系表达式?表达式1:表达式2;

注意:三元运算符的判断值必须被定义。

例如:

 

//需求:求两数是否相同
int number1=20;
int number2=30;
String s=number1==number2?"相同":"不相同";

其中,变量s代表了关系表达式number1==number2的结果。

三、运算符优先级

小括号高于一切。

 

 

标签:10,java,int,数据类型,运算符,转换,表达式,赋值
From: https://www.cnblogs.com/hqh2021/p/17344708.html

相关文章

  • amr转mp3 音频格式转换
    amr转mp3音频格式转换目前支持*.wav;*.aiff;*.aac;*.m4a;*.flv;*.mp4;*.avi;*.cda;*.slk;*.amr等格式转换为mp3文件并进行播放预览!支持单个文件转换和批量文件转换。 下载地址:链接:https://pan.baidu.com/s/1x7iAUD7CNtaULGNmqo1fjQ?pwd=8888提取码:8888   ......
  • Android、iPhone和Java三个平台一…
    移动开发中遇到的最让人纠结的要属Java、Android和iPhone三个平台加解密不一致的问题。因为手机端后台通常是用JAVA开发的WebService,Android和iPhone客户端调用同样的WebService接口,为了数据安全考虑,要对数据进行加密。头疼的问题就来了,很难编写出一套加密程序,在3个平台间加解......
  • JSP 的本质原理解析:"编写的时候是JSP,心里想解读的是 java 源码"
    JSP的本质原理解析:"编写的时候是JSP,心里想解读的是java源码"@目录JSP的本质原理解析:"编写的时候是JSP,心里想解读的是java源码"每博一文案1.JSP概述2.第一个JSP程序3.JSP的本质就是Servlet4.JSP的基础语法4.1在JSP文件中直接编写文字4.2在JSP中编写Java程序......
  • JavaMail收发邮件的步骤
     发邮件1)获取Sessionn()方法ii)New一个上面类的实例,设置用户名和密码 andmail.smtp.auth属性iv)同过Session的静态方法,获取一个Session实例2)生成Messagei)没有附件的邮件 第一步:new一个MimeMessage实例(根据Session) 第二步:给Message实例设置su......
  • Collections:Java常见并发容器
    JDK提供的这些容器大部分在java.util.concurrent(JUC)包中。//concurrent同时发生的1.ConcurrentHashMap:线程安全的HashMap在ConcurrentHashMap中,无论是读操作还是写操作都能保证很高的性能:在进行读操作时(几乎)不需要加锁,而在写操作时通过锁分段技术只对所操作的段加锁......
  • Java 网络编程 —— Socket 详解
    构造Socket在【客户端/服务端】的通信模式中,客户端需要主动构造与服务器连接的Socket,构造方法有以下几种重载形式:Socket()Socket(InetAddressaddress,intport)throwsUnknownHostException,IOExceptionSocket(InetAddressaddress,intport,InetAddresslocalAddr,in......
  • java 基础复习
    4-29号专题java大数处理和精度外理方法整理java中整数有四个类型,byteshortintlong.java中byte1个字节,short2个字节,int4个字节,long8个字节以long为例,long会占8*8=64个位,转成10进制就是19位。如果想表达更大的数字就需要用biglnteger以下内容专业针对大数处理方法讲解......
  • 软构笔记-Java Swing学习
    JavaSwing教程JavaSwing是Java平台的一个GUI工具包,提供了各种组件和工具类,用于创建漂亮的用户界面。安装JavaSwingJavaSwing是Java标准库的一部分,因此无需安装额外的软件包。只需要安装Java开发工具包(JDK),就可以开始使用JavaSwing开发GUI应用程序了。创建......
  • IDEA报错:Internal error :java.lang.illegalAccessErrorjiang
    IDEA报错:Internalerror:java.lang.illegalAccessErrorjiang报错Internalerror:java.lang.illegalAccessErrorjiang原因及解决方法今天在IDEA运行一个新项目时发生了这个报错,原因是该项目使用较新的JDK17版本,而我一直使用的IDEA2019.3.5不支持JDK17,将IDEA版本更换为2021.2.......
  • Java根据Integer数组(有null值)递归构造二叉树
    二叉树:publicclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(){}TreeNode(intval){this.val=val;}TreeNode(intval,TreeNodeleft,TreeNoderight){this.val=val;this.l......