(一) JavaSE基础语法 - 操作符

本文详细介绍了Java中的运算符,包括基本概念、优先级、分类以及各种运算符的用法。例如,算术运算符、逻辑运算符、比较运算符、赋值运算符、按位运算符和移位运算符,并通过实例演示了它们的使用。文章还强调了括号在解决优先级问题中的重要作用和短路逻辑在逻辑运算符中的应用。
摘要由CSDN通过智能技术生成

一、基本概念

1、介绍:

表达式由操作数与操作符组成,操作数可以是一个常量、变量或表达式,操作符用于指明操作数的操作方式。

比如:1 + 2,1 > 2 && true。

 
 
2、优先级:

优先级操作符简介结合性
1[ ].( )方法调用,属性获取从左向右
2!、~、 ++、 –一元运算符从右向左
3* 、/ 、%乘、除、取模(余数)从左向右
4+ 、 -加减法从左向右
5<<、 >>、 >>>左位移、右位移、无符号右移从左向右
6< 、<= 、>、 >=、 instanceof小于、小于等于、大于、大于等于, 对象类型判断是否属于同类型从左向右
7== 、!=是否相等,是否不等于。从左向右
8&按位与从左向右
9^按位异或从左向右
10|按位或从左向右
11&&短路与从左向右
12||短路或从左向右
13?:条件运算符从右向左
14=、 += 、-= 、*= 、/=、 %=、 &=、 |=、 ^=、 <、<= 、>、>= 、>>=混合赋值运算符从右向左

参考:https://www.sojson.com/operation/java.html

 
那么多似乎有点记不住,那么为表达式加括号()吧。

 
 

 

二、操作符分类

1、按作用的操作数个数分类:

一元操作符:操作的操作数为一个,比如:++、- -

二元操作符:操作的操作数为两个,比如:+、-、*、/

三元操作符:操作的操作数为三个,比如:三元表达式 int i = (2 > 1 ? 2 : 1)

 
 
2、具体功能分:

算数操作符:+、-、*、%、/、++、- -

逻辑操作符:&&、||

比较操作符:>、<、<=、>=。。。

按位操作符:&、| 、^、~

移位操作符:>>、<<、<<<

三元操作符:布尔表达式?表达式1:表达式2
 
 
 

三、操作符介绍

注意:对于byte、short、char在运算时会转换为int

 
1、算数操作符

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

 
注意:

(1)、除了boolean,其他基本数据类型都可以进行这些操作。

(2)、除了++、- -外,其他算数操作符可以配置 =使用。

 
 
2、逻辑操作符

&&、||

 
注意:

(1)、左右两边均为布尔表达式。

(2)、会发生短路现象,即一旦通过判断左边的表达式,可以确定整个表达式,那么操作符右边的表达式就不会进行判断。

@Test
public void test1(){
   int i = 0;
   if(false && i++ > 0){
       //左侧表达式为false,&&操作,通过左侧已经可以判断整个表达式
   }

   System.out.println(i); //0

   --------------------------------------------
       
   int j = 0;

   if(true || j++ > 0){
       //左侧表达式为true, ||操作, 通过左侧已经可以判断整个表达式
   }
   System.out.println(j); //0

}

 
 
 
3、比较操作符

== 、 > 、>= 、< 、<= 、 !=

 
 
 
4、赋值操作符

=、+= 、-= 、 *= 、/= 、%= 、&= 、^= 、 |=

@Test
public void test2(){
   int i = 0;
   i += 1; //等价于 i = i + 1;
   System.out.println(i);
   
   //其他的类似
}

 
 
 
5、按位操作符

& 、 | 、 ^ (异或) 、~(取反)

 
 
介绍:

以上的操作符为位运算操作符,左右两侧可以是整数、字母、或者boolean表达式

@Test
public void test3(){
   System.out.println(~'a'); //-98
   System.out.println(3 ^ 2); //1
   System.out.println(true ^ false); //true
}

~:即按位取相反数

比如:字符a对应数字97,二进制为0000000000000000000000000001100001,~操作后为11111111111111111111111110011110,互补后(-(取反 + 1))即为-98

 
^:即相异1,相同为0(相异为true,相同为false)

比如:3^2,二进制为…0011 ^ …0010,异或操作后为…0001,即为1,负数也是类似的。

 
 
注意:

(1)、&、| 并没有短路现象,左右两边均会判断。

(2)、除 ~ 外,其他都可以配合 = 使用。

(3)、boolean表达式可以配合按位操作符使用,~除外(为了区别 !)。

@Test
public void test4(){

   System.out.println(~(2 > 1)); //报错
   

   int i = 0;
   System.out.println(i ^= 1);
   System.out.println(i &= 1);
   System.out.println(i |= 1);
   System.out.println(i ~= 1); //报错
}

 
 
 
6、移位操作符

<<(左移)、>>(右移)、>>>(无符号右移)

 
 
介绍:

<<(左移):即数字带符号向左移位,左边高位丢弃,右边低位补0。

>>(右移):即数字带符号右移,被移位的二进制最高位是0(即+),右移后,空缺位补0,最高位为1(即-),右移后,空缺位补1。

>>>(无符号右移):被移位的最高位无论是否是0或1,空缺位都用0补

 
说明:位数不够的,是由于前面的0省略掉了。比如:11 -》000000000000000000000000000000011

@Test
public void test1(){
   //<<
   System.out.println(Integer.toBinaryString(3)); //11
   System.out.println(Integer.toBinaryString(3<<1)); //110

   System.out.println(Integer.toBinaryString(-3));//11111111111111111111111111111101
  System.out.println(Integer.toBinaryString(-3<<1));//11111111111111111111111111111010

   //>>
   System.out.println(Integer.toBinaryString(3)); //11
   System.out.println(Integer.toBinaryString(3>>1)); //1

   System.out.println(Integer.toBinaryString(-3));//11111111111111111111111111111101
  System.out.println(Integer.toBinaryString(-3>>1));//11111111111111111111111111111110

   //>>>
   System.out.println(Integer.toBinaryString(3)); //11
   System.out.println(Integer.toBinaryString(3>>>1)); //1

   System.out.println(Integer.toBinaryString(-3));//11111111111111111111111111111101
 System.out.println(Integer.toBinaryString(-3>>>1));//01111111111111111111111111111110

}

 
 
 

7、三元操作符

boolean表达式 ? 表达式1:表达式2;

 
 
示例:

@Test
public void test1(){
   int i = 2 > 1 ? 2 : 1;
}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值