初识java——javaSE(2)--运算符【求个关注】

文章目录

  • 一 运算符
    • 1.1 算术运算符
      • 当两个不同类型的值相加时:
      • / 运算符
      • %运算符
    • 1.2 关系运算符
    • 1.3 逻辑运算符
      • 短路:
      • 逻辑非
    • 1.4 位运算符
      • &
      • |
      • ^
        • 位运算符当作逻辑运算符中使用
      • ~
      • >>
      • <<
      • >>>
    • 1.5 赋值运算符
    • 1.6 三目运算符


一 运算符

1.1 算术运算符

算术运算符有以下几种:+ - * / %

当两个不同类型的值相加时:

当两个不同类型的值进行相加时,较小类型的值其类型会自动转换成较大类型。

代码:

 byte a = 2;int b = 5;int c  = a+b;System.out.println(c);

在这里插入图片描述

  byte b1 = 5;int i = 5;byte b2 = b1+i;System.out.println(b2);

因为变量b1与i相加,首先b1自动转换类型为int ,然后b1+i的值为int类型,赋给byte类型b2,没有强制类型转换操作符,所以报错!
在这里插入图片描述

/ 运算符

当除数为0时:

     int a = 10/0;System.out.println(a);

在这里插入图片描述
输出结果显示异常,其提示是因为/ by zero,即除以0的原因。

 整数与整数之间相除,结果取整,对于小数部分则丢弃
   int a = 5;byte b = 2 ;System.out.println(a/b);

在这里插入图片描述

  整数与浮点数相除,结果为小数
int a = 5;double d = 2.0;System.out.println(a/d);System.out.println(d/a);

在这里插入图片描述

%运算符

%运算符的右操作数亦不能为0
   int b = 8%0;System.out.println(b);

在这里插入图片描述

整数与整数之间的取模,结果依然为整数,为正整数还是负整数取决于操作数的符号
   int a = 5;int b = 2;int c = -2;System.out.println(a%b);System.out.println(a%c);//正数对负数取模int a2 = -5;System.out.println(a2%b);//负数对正数取模
 整数与浮点数之间的取模,结果为浮点数,为正数还是负数,亦取决于操作数的符号
    int a2 = 5;float f1 = 2.0f;System.out.println(a2%f1);

在这里插入图片描述

  浮点数与浮点数之间的取模结果依然是浮点数,结果的符号,取决于操作数的符号
      double d1 = -5.0;double d2 = 2.0;System.out.println(d1%d2);

在这里插入图片描述

1.2 关系运算符

关系运算符:  > , < , == , >= ,  <=,!=
关系运算符与操作数组成的表达式为关系表达式,关系表达式的结果是布尔类型,值有两种,true与false
因此关系表达式是布尔表达式的一种。

举例:

        int a = 10;int b = 5;boolean  b1=  a>b ;System.out.println(b1);

在这里插入图片描述

1.3 逻辑运算符

逻辑运算符有:&& 逻辑与  || 逻辑或   !逻辑非
//&&的逻辑是两边的布尔表达式的结果都为true,则此逻辑表达式的结果为true,否则结果为false。
  int a = 10;int b =5;boolean b1 = a>b&&10>0;System.out.println(b1);

在这里插入图片描述

 ||  逻辑或
此运算符的逻辑是,两边的布尔表达式的结果均为false,此逻辑表达式的结果才为false,否则结果为true
   int a = 10;int b =5;boolean b1 = a>b||10<0;System.out.println(b1);

在这里插入图片描述

短路:

在java中的短路与c语言中的短路是一样的,这里再系统阐述一下:

 对于逻辑与 与 逻辑或 操作符的特性//提出了短路的思想//对于逻辑与操作符 ,如果左边的布尔表达式的结果为false,则此逻辑表达式的结果一定为false,所以右边的布尔表达式就不需要再//计算了,也不会再计算//这样是为了节省资源,减少不必要的执行
    int a =10;int b =5;//    boolean b2 = 10/0>5;   //这样会报警告boolean b1 =  a<b&& 10/0>5;//这个算式不会,原因就在于后面的表达式根本就没有执行!System.out.println(b1);

在这里插入图片描述

   int a = 6;int b = 4;boolean b1 = a>b|| 10/0>5;System.out.println(b1); //此时不会报警告,因为第一个布尔表达式值为true,所以第二个布尔表达式不会执行//也就不会报警告

在这里插入图片描述

逻辑非

此运算符的作用是用于改变布尔表达式的值,如果是false,则变为true,如果是true,结果是false
  System.out.println(!false);System.out.println(!true);System.out.println(! (10>0));

在这里插入图片描述

1.4 位运算符

 位操作符& 按位与|  按位或^  按位异或~  按位取反<<   左移二进制位>>   右移二进制位>>>  无符号右移动二进制位

&

&  按位与//   按位与的操作数有两个,针对的是操作数的二进制位//  运算规则为,如果两个操作数对应的二进制位均为1,则结果对应的位为1,否则为0
  byte a = 2;byte b = 3;//2 的二进制位为 ://0000 0010// 3 的二进制位为://0000 0011//则两个数的按位与结果为://0000 0010         转换为十进制,结果为2System.out.println(a&b);

在这里插入图片描述

 //针对按位与的特性,可以得出两个结论//一个数 按位与 其本身,结果还是其本身// 一个数 按位与 0 ,结果还是0  ;

|

//  |按位或//按位或的操作数有两个// 其运算规则为:如果两个操作数对应的二进制位均为0,则结果的该位为0,否则结果的该位为1
  byte a1 = 2;byte b2 = 3;// 0000 0010// 0000 0011//结果://0000 0011  ——转换为十进制,结果为3。System.out.println(a1|b2);

在这里插入图片描述

// 对于按位或的规则,我们可以得出结论://一个数按位或其本身,结果还是其本身

^

//     ^ 按位异或   按位异或也是二进制运算符,其操作数有两个
//   其运算规则是,将两个操作数对应的二进制位进行比较,如果相同,则结果中该位为0,不同该位为1
   byte a1  = 3;byte b1 = 5;// 3 的二进制:0000 0011// 5 的二进制:0000 0101//3^5 的结果: 0000 0110 ——转换为十进制为6System.out.println(a1^b1);

在这里插入图片描述

    // 一个数 按位异或 其本身,则结果为0// 一个数 按位异或  0,则结果为其本身
位运算符当作逻辑运算符中使用
    //1  按位与可当作逻辑与操作符,二者的差别在于前者没有短路
    System.out.println(3>0&4>0);System.out.println(3>0&10/0>1);

在这里插入图片描述

  // 按位或可当作逻辑或操作符,二者差别在于前者没有短路
 System.out.println(3<0|5>3);System.out.println(3>0|10/0>2);

在这里插入图片描述

~

  //按位取反的操作数与其他位运算符不同,操作数只有1个//其运算规则是将一个数的二进制位全部取反,即将1变成0,将0变成1
byte a3 = 5;// 0000 0101//按位取反的结果:~5:// 1111 1010 -- 这是补码// 1000 0101    — 转换成原码// 结果为 - 6System.out.println(~a3);

在这里插入图片描述

>>

//>> 操作符//>>运算符的操作数有两个,运算规则是将左操作数的各个二进制位向右移动右操作数值位,// 符号位由原来符号补上
    byte a = 2;// 0000 0010//a>>1// 0 0000 001   //0补上原符号位//0000 0001System.out.println(a>>1);byte a2 = - 3;//1000 0011 --原码//1111 1101 --补码//右移一位,符号位不变//1  1111  110//1111 1110--补码//1000 0010-- 原码  结果为-2System.out.println(a2>>1);

在这里插入图片描述

<<

// << 运算符的操作数亦有两个,运算规则是将左操作数的各个二进制位向左移动右操作数数值位,空出的位补0
    byte a1 = 3;/*0000 0011a1<< 1000 0011 00000 0110 ————转化为十进制为:6*/System.out.println(a1<<1);byte b1 = -3;//  1000 0011-- 原码//  1111 1101 -- 补码//    111 1101 0  ---左移一位补0//  1111 1010  --补码//  1000 0110  结果为-6System.out.println(b1<<1);

在这里插入图片描述

>>>

//  >>> 此运算符与>>运算符的不同之处在于>>>运算符是无符号右移,即补符号位时,只补0
 byte a1 = -3;// 1000 0011 -----原码// 1111 1101 ------补码//a1>>>1 无符号右移一位// 0 1111 110//0111 1110 结果为:126System.out.println(a1>>>1);  System.out.println(Integer.MAX_VALUE);

在这里插入图片描述

     //出现这个结果说明,变量在无符号右移时,自动转化成int类型

1.5 赋值运算符

 = ,+=,-= ,/= ,%= 
//    赋值运算符// 赋值运算符 =byte a = 5;  //意为将5赋值给变量a// +=a+=5;//a+=5,是一种简写,展开为://a = a+5 ;// -=a-=3;//同理,展开为:a =a-3;//*=a*=3;//同上,展开为:a=a*3;// /=a/=2;//同上,展开为:a=a/2;//%=a%=2;//同上,展开为:a = a%2;

1.6 三目运算符

 布尔表达式  ?表达式:表达式
三目运算符共有三个操作数,其运算规则是先判断?之前的布尔表达式的值为true还是false,如果为true ,
则执行 :之前的表达式,如果为false,则执行 :之后的表达式。
//  三目运算符int c=  5>0?3:2;System.out.println(c);

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库(MySQL)—— DQL语句(聚合,分组,排序,分页)

数据库&#xff08;MySQL&#xff09;—— DQL语句&#xff08;聚合&#xff0c;分组&#xff0c;排序&#xff0c;分页&#xff09; 聚合函数常见的聚合函数语法 分组查询语法 排序查询语法 分页查询语法 DQL的执行顺序 我们今天来继续学习MySQL的DQL语句的聚合和分组查询&…

c++容器与算法概述

容器与算法 每个标准库容器都提供了begin() end() 函数&#xff0c;分别返回容器的头部位置和尾部位置。 I/O 流 对于自定义的类型&#xff1a; struct Entry {std::string name;int number;};如果需要使用标准输出需要重载<< 运算符&#xff0c;特别注意&#xff1a…

《Redis使用手册之Lua脚本》

《Redis使用手册之Lua脚本》 EVAL&#xff1a;执行脚本 127.0.0.1:6379> eval “return ‘hello world’” 0 “hello world” 127.0.0.1:6379> eval “return redis.call(‘set’,KEYS[1],ARGV[1])” 1 “message” “hello world” OK 127.0.0.1:6379> get message…

街道征迁项目档案管理系统

街道征迁项目档案管理系统是一个用于管理街道征迁项目档案的软件系统。该系统的主要功能包括档案录入、档案存储、档案检索、档案共享等。 系统的用户可以通过该系统录入征迁项目相关的档案信息&#xff0c;包括项目名称、征迁范围、土地面积、征迁补偿费用等。同时&#xff0c…

Python基础学习之编辑器

大家好&#xff0c;今天我想和大家分享一下Python中一个非常强大且优雅的特性——装饰器&#xff08;Decorators&#xff09;。装饰器在Python中是一种高级语法&#xff0c;它允许你在不修改函数或类的情况下&#xff0c;为其添加额外的功能。这不仅让代码更加整洁&#xff0c;…

搭建Kafka源码环境并测试

文章目录 一、前言二、环境准备三、环境搭建3.1 JDK 环境搭建3.2 Scala 环境搭建3.2.1 配置 Scala 环境变量3.2.2 验证 3.3 Gradle 环境搭建3.3.1 配置 Gradle 环境变量3.3.2 验证 3.4 Zookeeper 环境搭建3.4.1 配置 Zookeeper 环境变量3.4.2 验证 3.5 Kafka 源码搭建3.5.1 导入…

Codeforces Round 942 (Div. 2) ----- A ----- F --- 题解

前情提要&#xff1a;因为数学水平原因&#xff0c;没法给出e的证明&#xff0c;因为我也是举例归类得出的结论&#xff0c;但是按理来说应该可以利用生成数函数证明 f题也是因为数学原因加上水平有限&#xff0c;我的理解可能有偏差。 目录 A. Contest Proposal&#xff1a…

图像处理的一些操作(1)

图像处理 1.安装PIL&#xff0c;skimage库1.1导入skimage库中的oi模块和data模块 2.读取图像文件2.1读取图像文件2.2 以灰度模式读取图像2.3 查看示例图像的目录路径2.4 读取chelsea图片2.5 加载示例图片并保存2.6 获得加载图片的信息2.6.1 输出图片类型2.6.2 输出图片尺寸2.6.…

MySQL数据库练习(17)

schooldb库——utf8字符集——utf8_general_ci排序规则 81. DDL CREATE TABLE styles (id int(11) NOT NULL AUTO_INCREMENT COMMENT 自增ID,styleSys varchar(20) DEFAULT NULL COMMENT 系统类型(home:PC),styleName varchar(255) NOT NULL COMMENT 风格名称,styleAuthor va…

企业网站必看——企业级OV SSL证书详细介绍

组织验证&#xff08;Organization Validation&#xff0c;简称OV&#xff09;SSL证书作为网络安全解决方案的重要组成部分&#xff0c;通过提供中级的安全保障和增强的网站身份验证&#xff0c;有效提升了网站的安全级别与用户信赖度。本文将深入探讨OV SSL证书的工作原理、申…

面试:Spring(IOC、AOP、事务失效、循环引用、SpringMVC、SpringBoot的自动配置原理、Spring框架常见注解)

目录 一、Spring的单例Bean是否是线程安全的&#xff1f; 二、什么是AOP 1、介绍 &#xff08;1&#xff09;记录操作日志 &#xff08;2&#xff09;实现Spring中的事务 三、spring中事务失效的场景有哪些&#xff1f; 1、异常捕获处理 2、抛出检查异常 3、非public方…

香港Web3,步履蹒跚

4月30日&#xff0c;6支香港虚拟资产现货ETF在香港交易所敲钟上市&#xff0c;正式迎来市场首秀。 而在前一周&#xff0c;香港证监会&#xff08;SFC&#xff09;官网就已列出华夏基金(香港)、博时国际和嘉实国际三家基金公司的比特币和以太坊现货ETF&#xff0c;并陆续披露了…

[ log日志画图]分割模型训练结束生成相关日志运用代码画图

文章目录 [ log日志画图]分割模型训练结束生成相关日志运用代码画图我的log文件&#xff1a;画图&#xff1a;1.loss1.1 loss是干嘛的1.2 代码1.3 生成图 2.DICE.IOU2.1 DICE,IOU是干嘛的(常规介绍)2.2 代码2.3 生成图小白tip [ log日志画图]分割模型训练结束生成相关日志运用代…

python 怎么调用R

如何在python中调用R&#xff1f;这其中包括了如何调用R的对象&#xff08;函数和包&#xff09;&#xff0c;R和python的对象如何互相转换&#xff0c;以及如何调用R的脚本&#xff08;外界参数的输入&#xff09;。python提供了一个模块rpy2&#xff0c;可以较好地完成这项工…

关于海康相机和镜头参数的记录

对比MV-CS020-10UC和大家用的最多的MV-CS016-10UC 其实前者适合雷达站使用&#xff0c;后者适合自瞄使用 一&#xff1a;MV-CS020-10UC的参数 二&#xff1a;对比 三&#xff1a;海康镜头选型工具

Java 基础重点知识-(泛型、反射、注解、IO)

文章目录 什么是泛型? 泛型有什么用?泛型原理是什么? Java 反射什么是反射? 反射作用是什么?动态代理有几种实现方式? 有什么特点? Java 注解什么是注解, 作用是什么? Java I/O什么是序列化?Java 是怎么实现系列化的?常见的序列化协议有哪些?BIO/NIO/AIO 有什么区别…

面试八股——HashMap

实现原理 红黑树是为了解决链表过长之后&#xff0c;查找时间过长的问题&#xff0c;将链表存储变为红黑树存储。 put方法的实现&#xff08;5⭐&#xff09; 相关属性&#xff1a; 1. 容量&#xff1a;初始容量为2^4。 2. 加载因子&#xff1a;初始值为0.75 上面两个属性的…

【面试经典 150 | 回溯】单词搜索

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;回溯 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等内容进行回顾…

Cloudflare高级防御规则 看看我的网站如何用防御的

网站已趋于稳定&#xff0c;并且经过nginx调优。我想先分享一下Cloudflare的WAF规则&#xff0c;因为这是最有效的防御之一&#xff0c;可以抵御大量恶意攻击流量&#xff0c;我已经验证了数月。 对于海外独立站电商网站&#xff0c;Cloudflare的CDN服务是首选&#xff0c;它强…

1. 深度学习笔记--神经网络中常见的激活函数

1. 介绍 每个激活函数的输入都是一个数字&#xff0c;然后对其进行某种固定的数学操作。激活函数给神经元引入了非线性因素&#xff0c;如果不用激活函数的话&#xff0c;无论神经网络有多少层&#xff0c;输出都是输入的线性组合。激活函数的意义在于它能够引入非线性特性&am…