首页 > 编程语言 >【java SE语法篇】1. 运算符

【java SE语法篇】1. 运算符

时间:2024-07-26 10:58:16浏览次数:12  
标签:false System 运算符 println java true SE out

目录


在这里插入图片描述

1. 运算符和表达式

运算符:

就是对常量或者变量进行操作的符号。
比如: + - * /

表达式:

用运算符把常量或者变量连接起来的,符合Java语法的式子就是表达式。
比如:a + b 这个整体就是表达式
​而其中+是算术运算符的一种,所以这个表达式也称之为算术表达式

2. 算数运算符

分类:

+ - * / %

运算特点:

+ - * :跟小学数学中一模一样没有任何区别.
/:
1.整数相除结果只能得到整除,如果结果想要是小数,必须要有小数参数。
2.小数直接参与运算,得到的结果有可能是不精确的。
案例:
System.out.println( 10 / 3);//3
System.out.println(10.0 / 3);//3.3333333333333335
%:取模、取余。
   他做的也是除法运算,只不过获取的是余数而已。
案例:
System.out.println(10 % 2);//0
System.out.println(10 % 3);//1
应用场景:
//可以利用取模来判断一个数是奇数还是偶数
System.out.println(15 % 2);//1  奇数

3. 隐式转换

概念:

也叫自动类型提升。
​就是**把一个取值范围小的数据或者变量,赋值给另一个取值范围大的变量。**此时不需要我们额外写代码单独实现,是程序自动帮我们完成的。

两种提升规则:

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

取值范围从小到大的关系:

byte short int long float double

4. 强制转换

概念:

​如果要把一个取值范围大的数据或者变量赋值给另一个取值范围小的变量。是不允许直接操作
​如果一定要这么干,就需要加入强制转换

书写格式:

目标数据类型 变量名 = (目标数据类型)被强转的数据;

简单理解:

​ 要转成什么类型的,那么就在小括号中写什么类型就可以了。

案例:

public class OperatorDemo2 {
    public static void main(String[] args) {
        double a = 12.3;
        int b = (int) a;
        System.out.println(b);//12
    }
}

强制转换有可能会导致数据发生错误。(数据的精度丢失)

5. 自增自减运算符

分类:

++  自增运算符
--  自减运算符

++:就是把变量里面的值+1

– -:就是把变量里面的值-1

使用方式:

  • 放在变量的前面,我们叫做先++。 比如:++a
  • 放在变量的后面,我们叫做后++。 比如:a++

注意点:

​ 不管是先++,还是后++。单独写在一行的时候,运算结果是一模一样的。

案例:

//++
int a = 10;
a++;//就是让变量a里面的值 + 1
System.out.println(a);//11
++a;//就是让变量a里面的值 + 1
System.out.println(a);//12

6. 赋值运算符

最为常用的: =

运算过程:就是把等号右边的结果赋值给左边的变量

案例:

public class OperatorDemo6 {
    public static void main(String[] args) {
        //1.最为简单的赋值运算符用法
        int a = 10;//就是把10赋值给变量a
        System.out.println(a);

        //2.如果等号右边需要进行计算。
        int b = 20;
        int c = a + b;//先计算等号右边的,把计算的结果赋值给左边的变量
        System.out.println(c);

        //3.特殊的用法
        a = a + 10;//先计算等号右边的,把计算的结果赋值给左边的变量
        System.out.println(a);//20
    }
}

7. 扩展运算符

分类:

+=、-=、*=、/=、%=

运算规则:

就是把左边跟右边进行运算,把最终的结果赋值给左边,对右边没有任何影响。

案例:

public class OperatorDemo7 {
    public static void main(String[] args) {
        //扩展赋值运算符
        int a = 10;
        int b = 20;
        a += b;//把左边和右边相加,再把最终的结果赋值给左边,对右边没有任何影响
        // 相当于 a = a + b;
        System.out.println(a);//30
        System.out.println(b);//20
    }
}

扩展的赋值运算符中隐层还包含了一个强制转换。

8. 关系运算符

又叫比较运算符,其实就是拿着左边跟右边进行了判断而已。

分类:

符号解释
==就是判断左边跟右边是否相等,如果成立就是true,如果不成立就是false
!=就是判断左边跟右边是否不相等,如果成立就是true,如果不成立就是false
>就是判断左边是否大于右边,如果成立就是true,如果不成立就是false
>=就是判断左边是否大于等于右边,如果成立就是true,如果不成立就是false
<就是判断左边是否小于右边,如果成立就是true,如果不成立就是false
<=就是判断左边是否小于等于右边,如果成立就是true,如果不成立就是false
  • 关系运算符最终的结果一定是布尔类型的。要么是true,要么是false
  • 在写==的时候,千万不要写成=

9. 逻辑运算符

9.1 & 和 | 的使用:

&:逻辑与(而且)

两边都为真,结果才是真,只要有一个为假,那么结果就是假。

|:逻辑或(或者)

两边都为假,结果才是假,只要有一个为真,那么结果就是真。

案例:

// &  //两边都是真,结果才是真。
System.out.println(true & true);//true
System.out.println(false & false);//false
System.out.println(true & false);//false
System.out.println(false & true);//false

System.out.println("===================================");

// | 或  //两边都是假,结果才是假,如果有一个为真,那么结果就是真。
System.out.println(true | true);//true
System.out.println(false | false);//false
System.out.println(true | false);//true
System.out.println(false | true);//true

9.2 ^(异或)的使用:

​在以后用的不多,了解一下即可。

计算规则:如果两边相同,结果为false,如果两边不同,结果为true

案例:

//^   //左右不相同,结果才是true,左右相同结果就是false
System.out.println(true ^ true);//false
System.out.println(false ^ false);//false
System.out.println(true ^ false);//true
System.out.println(false ^ true);//true

9.3 !(取反)的使用:

是取反,也叫做非。

计算规则:false取反就是true,true取反就是false

取反最多只用一个。

案例:

System.out.println(!false);//true
System.out.println(!true);//false

System.out.println(!!false);//注意点:取反最多只用一个。

10. 短路逻辑运算符

分类: && ||

&&:

运算结果跟&是一模一样的,只不过具有短路效果。

||:

运算结果跟|是一模一样的。只不过具有短路效果。

逻辑核心:

​当左边不能确定整个表达式的结果,右边才会执行

​当左边能确定整个表达式的结果,那么右边就不会执行了。从而提高了代码的运行效率。

总结:

​&& 和 & 、||和|的运行结果都是一模一样的。

​但是短路逻辑运算符可以提高程序的运行效率。

建议:

​最为常用: && || !

11. 三元运算符

又叫做:三元表达式或者问号冒号表达式。

格式:

关系表达式 ? 表达式1 :表达式2 ;

计算规则:

  • 计算关系表达式的值。
  • 如果关系表达式的值为真,那么执行表达式1。
  • 如果关系表达式的值为假,那么执行表达式2。

三元运算符的最终结果一定要被使用,要么赋值给一个变量,要么直接打印出来。

案例:

public class OperatorDemo12 {
    public static void main(String[] args) {
        //需求:求两个数的较大值
        int a = 10;
        int b = 20;

        //格式:关系表达式 ? 表达式1 : 表达式2 ;
        //注意点:
        //三元运算符的最终结果一定要被使用。
        //要么赋值给一个变量,要么直接输出。
       int max =  a > b ? a : b ;
        System.out.println(max);


        System.out.println(a > b ? a : b);
    }
}

标签:false,System,运算符,println,java,true,SE,out
From: https://blog.csdn.net/fj123789/article/details/140583275

相关文章

  • delphi调用Java类
    1、jdk的安装:https://www.cnblogs.com/ljk2008/p/18324820。2、jvm.dll:如果提示找不到JVM.dll需要在classpath、path中分别添加jvm.dll的路径。3、用到三方库:https://github.com/aleroot/DelphiJNI.git。4、JAVA类(CLASS、JAR)要放置在对应的文件夹内,如:packagecom.com1.com2;对......
  • OpenFeign报错:Caused by: java.lang.IllegalStateException: Method has too many Bod
    近两天在开发进行若依二开,openfeign需要一个微服务调用另一个微服务。等service层注入远程bean后,报错Causedby:java.lang.IllegalStateException:MethodhastoomanyBodyparameters:publicabstractvoidcom.shop.user.remote.RemoteUmsMemberAddressService.export(j......
  • 在K8S中,replicaset 和deploy有何区别?
    在Kubernetes(K8S)中,ReplicaSet和Deployment是两种非常重要的资源对象,它们都用于管理Pod的副本数量。尽管它们有一些相似之处,但在功能和用途上还是存在显著差异。下面详细介绍它们之间的区别:1.ReplicaSet定义:ReplicaSet是一种确保运行指定数量的Pod副本的Kuber......
  • Java NIO框架Netty教程(四)- ChannelBuffer
    在字符串消息收发中提到。ChannelBuffer是Netty中非常重要的概念。所有消息的收发都依赖于这个Buffer。我们通过Netty的官方的文档来了解一下,基于流的消息传递机制。Inastream-basedtransportsuchasTCP/IP,receiveddataisstoredintoasocketreceivebuffer.Unf......
  • Java NIO框架Netty教程(六)-Java NIO Selector模式
    全文详见个人独立博客:JavaNIO框架Netty教程(六)-JavaNIOSelector模式JavaNIO框架Netty教程(六)-JavaNIOSelector模式看到标题,您可能觉得,这跟Netty有什么关系呢?确实,如果你完全是使用Netty的,那么可能你可以完全不需要了解Selector。但是,不得不提的是,Netty底层关于NIO的实......
  • 【nacos】记一次使用NacosExploitGUI扫描发现nacos安全漏洞
    一、场景   公司使用nacos作为配置和注册中心,使用的版本是1.4.0 二、下载NacosExploitGUIhttps://github.com/charonlight/NacosExploitGUI下载release中的压缩包  三、运行NacosExploitGUI1、运行$java-jarNacosExploitGUI_v4.0.jarError:JavaFXruntime......
  • 使用 Selenium 捕获 XHR 请求时遇到问题
    首先,我不是开发人员,所以使用ai为我生成一个代码以从网页获取xhr请求,即:https://www.oddsportal.com/football/brazil/serie-a/bragantino-athletico-pr-xx0ujiJ5/这只是一个示例。我想从该页面上的xhr请求获取分数,而不是使用其他方法(例如使用类等定位它)。对我......
  • pytesseract 不从图像中提取文本
    我有以下图像并尝试使用pytesseract提取文本。但是,它总是返回一些未知字符。图像这是我正在使用的代码:importpytesseractasptfromPILimportImage#Convertingimagetotextimg=Image.open('frame-1ROI_2.png')extracted=pt.image_to_st......
  • (Javaweb)Vue
    目录一.Vue概述二Vue指令三.vue生命周期一.Vue概述1.model--数据模型:包含了很多的业务数据以及数据的处理方法2.view--视图层--数据的展示--DOM元素3.viewmodel--完成数据绑定的核心,实现model与viewmodel之间的数据连接其中,MVVM由三部分组成,model,view,viewmodelm......
  • (Javaweb)js
    目录一.js介绍二.引入方式三.js基础语法1.书写语法2.js变量3.数据类型运算符流程控制语句 四.js函数五.js对象六.js对象--Array数组七js对象--String字符串八.js对象--JSON九.js对象--BOM十.js对象--DOMDOM案例一.js介绍脚本语言:代码不需要进行编译,直......