JavaSE——运算符

/*
算术(数字)运算符
	+:①加法运算  ②字符串拼接  ③正号
	-:①减法运算  ②负号
	*:乘法运算
	/:除法运算(取商)
	%:取模运算(取余)
   ++:自增运算(+1)
		   ①前置自增:先自增后使用
		   ②后置自增:先使用后自增
   --:自减运算(-1)
		   ①前置自减:先自减后使用
		   ②后置自减:先使用后自减
		   
赋值运算符
	=:赋值符 (从右向左赋值)
	(混合运算符)所有的混合赋值运算符都会强转
   +=:加后赋值
   -=:减后赋值
   *=:乘后赋值
   /=:除后赋值
   
比较运算符(关系运算符)(运算结果要么为true要么为false)
   ==:相等 (表达式两边的值是否相同)
   !=:不相等
    <:小于
	>:大于
   <=:小于或等于
   >=:大于或等于
 
逻辑运算符 (运算结果要么为true要么为false)(能进行逻辑运算符运算的表达式都是布尔表达式(布尔表达式:计算结果为false或者true的表达式),最终运算结果也一定是true或者false)
   &&:与(并且)(运算符左右的表达式都满足,那么结果为true,否则为false)
   ||:或	   (运算符左右的表达式都满足或者只满足一个,那么结果为true,都不满足时,结果为false)
    !:非(取反)(数据原先为true加上!后变为false,数据原先为false加上!后变为true)

三元运算符
   (布尔表达式)? 表达式1 : 表达式2
   如果布尔表达式的结果为true 则执行表达式1
   如果布尔表达式的结果为false 则执行表达式2
*/

public class OperateDemo{
	public static void main(String []args){
	//算术运算
		// +
			//①加法运算
			int a = 3;
			int b = 4;
			System.out.println(a+b);//7 //分别取出a、b的值进行加法运算
			//②字符串拼接
			System.out.println("你"+"好");//你好  //从左向右进行拼接
			//③正号
			System.out.println(+3);//3
			
			//拓展
			//①加法运算
			int c = 3;
			double d = 4.0;
			System.out.println(c+d);//7.0 //不同类型的数据在做运算的时候,会先把范围小的类型转换为范围大的类型再运算.即:先把c转换为double类型再与d相加
			//②字符串拼接(从左向右进行拼接)
			System.out.println("5+5="+5+5);//5+5=55   //从左到右 检测到 "5+5="+5 +号的一端"5+5="是一个字符串 另一端是一个数字5 会把5强行转化为字符串格式 于是就变成了字符串拼接运算 得出"5+5=5" 再将"5+5=5"与最后面那个5相加 同理也变成了字符串拼接运算 得出5+5=55  
			System.out.println("5+5="+(5+5));//5+5=10  //想让哪一部分先运算就给那一部分加上小括号
			System.out.println(5+5+"=5+5");//10=5+5
		
		// -
			//①减法运算
			int e = 5;
			int f = 4;
			System.out.println(e-f);//1
			//②负号
			System.out.println(f-e);//-1
			
		// * 乘法运算
			System.out.println(f*e);//20
	    // / 除法运算
			System.out.println(f/e);//0 
		// % 取模运算
			System.out.println(e%f);//1
			
			//拓展
			//除法运算与取模运算
				//利用除法运算与取模运算可以得出一个数字的某个位数所对应的数
				int number = 47;
				System.out.println(47%10);//7 得到个位数
				System.out.println(47/10);//4 得到十位数
			
		// ++ 
			//①前置自增
			int m = 3;
			int n = ++m;//++m相当于m=m+1,m先自增,此时m由3变成了4,再将自增后的m的值赋给n。
			System.out.println(m);//4 m已经自增了变化成了4
			System.out.println(n);//4
			//②后置自增
			int p = 3;
			int q = p++;//先将p的值赋给q,此时q=3;然后p再自增,此时p变成了4
			System.out.println(p);//4
			System.out.println(q);//3
		// --
			//①前置自减
			int r = 3;
			int s = --r;//--r相当于r=r-1,r先自减,此时r由3变成了2,再将自减后的r的值赋给s。
			System.out.println(r);//2 m已经自减了变化成了2
			System.out.println(s);//2
			//②后置自减
			int t = 3;
			int u = t--;//先将t的值赋给u,此时u=3;然后t再自减,此时t变成了2
			System.out.println(t);//2
			System.out.println(u);//3
//注:
//1、相同类型的数据进行算术运算时,得到的结果的类型一定是该数据所对应的类型。即:两个int类型的数据做算数运算时得到的结果也一定是一个int类型的数据
//2、不同类型的数据进行算术运算时,会先把范围小的类型转换为范围大的类型再进行运算。
//3、字符串在进行拼接的时候,严格按照从左到右的顺序进行拼接。
//4、想要对哪一部分的先进性运算,就给那一部分加上小括号。
	
	//赋值运算 (先计算再赋值给自身)
		// =:赋值符
			int v = 3+4;//先计算赋值符右边的表达式3+4,然后再将结果赋值给赋值符左边的变量a
			System.out.println(v);//7
			
		// +=:加后赋值
			int w = 5;
			w+=7;//w+=7相当于w=w+7 即w=5+7 将5+7的结果再赋值给w
			System.out.println(w);//12
		// -=:减后赋值
			int x = 5;
			x-=7;//x-=7相当于x=x-7 即x=5-7 将5-7的结果再赋值给x
			System.out.println(x);//-2
		// *=:乘后赋值
			int y = 5;
			y*=7;//y*=7相当于y=y*7 即y=5*7 将5*7的结果再赋值给y
			System.out.println(y);//35
		// /=:除后赋值
			int z = 5;
			z/=7;//z/=7相当于z=z/7 即z=5/7 将5/7的结果再赋值给z
			System.out.println(z);//0
//注:所有的混合赋值运算符都会强转
		byte a0=1;//定义了一个byte类型的数据a0,a0的值为1
		a0=a0+3;//先计算表达式a0+1再将计算的结果赋值给a0
				//表达式a0+3中,a0为byte类型,3为int类型。编译器在进行a0+3的操作时,会将a0自动转换为int类型,所以表达式a0+3的结果为4,是一个int类型。
				//这个时候要求把4赋值给a0由于第一行代码定义的a0为byte类型,4是int类型,而int类型是不能直接转换为byte类型的所以会报错。
				//为了不报错需要我们手动对它进行一个强转
				//即:a0=a0+3应该修改为 a0 = (byte)(a0+3)
		System.out.println(a0);//报错  错误: 不兼容的类型: 从int转换到byte可能会有损失
		//-------此处是分割线----------//
		byte b0=1;
		b0+=3;
		System.out.println(b0);//4 不会报错
		//这个时候我们会产生一种疑问,b0+=3不是相当于b0=b0+3吗?那么应该会像上面a0的例子一样结果会报错才对,但是为什么这里反而没有报错?
		//事实上,尤其是对于不同类型的混合运算符运算,它在底层会有一个隐式的操作————自动强转
		//即:b0+=3 在底层是进行的 b0=(byte)(b0+3)操作,所以不会报错。
		
	//比较运算符
	    // ==:相等于
			int c0 = 7;
			int d0 = 5;
			System.out.println(c0==d0);//false
		// !=:不等于
			System.out.println(c0!=d0);//true
		// <:小于
			System.out.println(c0<d0);//false
		// >:大于
			System.out.println(c0>d0);//true
		// <=:小于或等于
			System.out.println(c0<=d0);//false
		// >=:大于或等于
			System.out.println(c0>=d0);//true 
			
		//拓展:
		int e0 = 10;
		double f0 = 10.0;
		System.out.println(e0!=f0);//false 两个不同类型的数据在进行运算时(不管进行什么类型的运算)都会进行数据类型的转换
								   //先将int类型的e0转换为double类型变成了10.0
								   //于是就变成了10.0与10.0之间进行!=运算 结果当然为true
								   
	//逻辑运算符
		// && 与
			System.out.println(5>3 && 4>3);//true  左边为true  右边为true
			System.out.println(6>5 && 2>4);//false 左边为true  右边为false
			System.out.println(2>4 && 6>5);//false 左边为false 右边为true
			System.out.println(3>4 && 2>5);//false 左边为false 右边为false
		// ||或
			System.out.println(5>3 || 4>3);//true  左边为true  右边为true
			System.out.println(6>5 || 2>4);//true  左边为true  右边为false
			System.out.println(2>4 || 6>5);//true  左边为false 右边为true
			System.out.println(3>4 || 2>5);//false 左边为false 右边为false
		// !非
		    int g0 = 10;
			int h0 = 4;
			System.out.println(g0>h0);//true
			System.out.println(!(g0>h0));//false
//注:&&运算与||运算中,只要能判断出结果则后边的部分就不再进行判断
	
		int i0 = 3;
		boolean j0 = true && ++i0>2; //++i0>2得到true
		System.out.println(i0);//4 i0进行了自增变为了3
		System.out.println(j0);//true
		
		int k0 = 3;
		boolean m0 = false && ++k0>2;// ++k0>2得到true
		System.out.println(k0);//3 i0没有进行自增 这是因为在boolean m0 = false && ++k0>2;左边表达式的结果为false由此就可以判断出整个与运算的结果为false所以不需要再对右边的表达式进行操作
		System.out.println(m0);//false
		
		int p0 = 3;
		boolean q0 = true || ++p0>2;
		System.out.println(p0);//3 p0没有进行自增 这是因为在boolean q0 = true || ++p0>2;左边表达式的结果为true由此就可以直接判断出整个或运算的结果为true所以不需要再对右边的表达式进行操作
		System.out.println(q0);//true
		
		int r0 = 3;
		boolean s0 = false || ++r0>2;// ++k0>2得到true
		System.out.println(r0);//4 r0进行了自增 因为在或运算中一边的表达式的结果为false时还需要判断另一边的表达式的情况才能判断出整个或运算的结果为true还是false
		System.out.println(s0);//true
		
	//三元运算符
			System.out.println(3>2?"大":"不大");//大
			int t0 = 10;
			int u0 = 30;
			boolean v0 = t0>=u0?true : false;
			System.out.println(v0);//false
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于PyTorch的Embedding和LSTM的自动写诗实验LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)和记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构和主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入和上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的这个代码主要是研究手写数字的识别效率,用卷积神经网络算法来实现,用的是官方手写字体数据,能够显现百分之九十以上的识别率+使用说明文档 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
基于LSTM+CNN的自然语言处理,基于单维LSTM、多维LSTM时序预测算法和多元线性回归算法的预测模型LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)和记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构和主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入和上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。
JavaSE网络编程采用的是基于TCP/IP协议的网络模型。这个模型包括客户端和服务器端两部分。客户端通过套接字(Socket)与服务器建立连接,服务器则监听客户端的连接请求并进行响应。 在Java中,可以使用Socket类和ServerSocket类来实现网络编程。Socket类用于建立客户端与服务器之间的通信连接,而ServerSocket类则用于创建服务器端的套接字,监听并接受客户端的连接请求。 客户端通过创建Socket对象,指定服务器的IP地址和端口号,然后通过Socket对象的方法与服务器进行通信。服务器端通过创建ServerSocket对象,指定服务器要监听的端口号,并通过accept()方法接受客户端的连接请求。一旦建立了连接,客户端和服务器端就可以通过输入流和输出流来进行数据的传输。 网络模型是基于TCP/IP协议的,因此可以使用Java的InputStream和OutputStream来进行数据的读写。客户端可以通过InputStream从服务器端接收数据,通过OutputStream向服务器端发送数据。服务器端则可以通过InputStream接收客户端发送的数据,通过OutputStream向客户端发送数据。 总结来说,JavaSE网络编程采用的是基于TCP/IP协议的网络模型,通过Socket和ServerSocket来实现客户端和服务器端之间的通信。通过InputStream和OutputStream来进行数据的读写。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [JavaSE——网络编程](https://blog.csdn.net/yzl1293346757/article/details/126192384)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [JavaSE学习——网络编程](https://blog.csdn.net/Demon_and_Angle_/article/details/126387829)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立志Java工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值