JAVA编程(三)--------JAVA运算符

本文详细介绍了Java中的各种运算符,包括基本运算符、比较运算符、逻辑运算符、位运算符和三目运算符。通过实例展示了整数除法的特性和自增自减运算符的差异,以及逻辑运算符中的短路行为。同时,讨论了位运算符在加密处理中的应用,最后提到了三目运算符的使用方法。
摘要由CSDN通过智能技术生成

Java作为一种编程语言,适用于进行计算,所以需要有一个运算符支撑起来这些计算。

基本运算符

运算符运算含义运算符目数
+正号单目运算符
-负号单目运算符
+表示两个数相加双目运算符
-表示两个数相减双目运算符
*表示两个数的相乘双目运算符
\表示两个数做除法双目运算符
%表示两个数做模运算双目运算符
++表示一个数字自加单目运算符
--表示一个数自减单目运算符

上述运算符中,正负号和加减乘这几个运算不需要过多的解释,对于不同数据类型之间运算参考JAVA编程(二)--------JAVA数据类型里边对于不同数据类型之间的运算解释的比较明白

Java除法

对于Java里边的除法来说,需要考虑一个问题就是整数除法,在任何一个编程语言中,整数除法都是一个重要的参数

样例程序

class IntDevision
{
	public static void main(String[] args) 
	{
		int a=15;
		int b=8;
		double c = a/b;
		System.out.println(a/b);
		System.out.println(a/b*b);
		System.out.println(c);
	}
}

对于上述程序运行可以得到下述结果

---------- java ----------
1
8
1.0

输出完成 (耗时 0 秒) - 正常终止

分析:

两个整数做除法的时候,会返回整除运算的结果,所以a/b=1,在a/b*b=1*b=b,在后续转换为double类型则变成了1.0这个数据,那么如果想对两个整数做除法,而且想得到浮点数类型的话,那么需要进行以下操作:

class IntDevision
{
	public static void main(String[] args) 
	{
		int a=15;
		int b=8;
		double c = 1.0*a/b;
		System.out.println(c);
	}
}

得到的运算结果为:

---------- java ----------
1.875

输出完成 (耗时 0 秒) - 正常终止

在运算的过程中,先运算了1.0*a将整体根据自动类型提升转化为了double类型数据,之后double/int也转化为了double类型,所以最后就可以得到double类型的数据。

++和--运算符

++运算符可以分为两种用法一种是放在变量后边如a++,一种是放在变量前边如a++

这两种运算有什么区别呢

运行下述样例程序:

class SelfAdd
{
	public static void main(String[] args) 
	{
		int a1 = 10;
		int b1 = 10;
		b1 = a1++;
		System.out.println("a1="+a1+";b1="+b1);
		int a2 = 10;
		int b2 = 10;
		b2 = ++a2;
		System.out.println("a2="+a2+";b2="+b2);

	}
}

可以得到下述结果

---------- java ----------
a1=11;b1=10
a2=11;b2=11

输出完成 (耗时 0 秒) - 正常终止

a1和a2的结果相同,都是在原来a1,a2的基础上进行了+1操作,这就是自加运算符对于本身的操作,但是如果这个整个运算进行操作。

// b=a++运算步骤
b=a;
a=a+1

// b=++a运算步骤
a=a+1
b=a;

一种得到+1运算之后的结果,另外一个是得到+1运算之前的结果。

但是a++和++a如果单独使用,并没有什么区别,但是如果a的数据类型是short或者type,那么a++和++a与a=a+1就存在了根本上的区别。

class SelfAdd
{
	public static void main(String[] args) 
	{
		short a1 = 10;
		a1++;
		System.out.println("a1="+a1);
		short a2 = 10;
		a2=a2+1;
		System.out.println("a2="+a2);

	}
}

对于上述程序进行编译运行:

---------- javac ----------
SelfAdd.java:9: 错误: 不兼容的类型: 从int转换到short可能会有损失
		a2=a2+1;
		     ^
1 个错误

输出完成 (耗时 0 秒) - 正常终止

由于常数1在Java中默认为int所以运算的过程中得到的结果是int类型,所以无法进行运算。

但是对于short来说,仍然可以使用++这个运算符

class SelfAdd
{
	public static void main(String[] args) 
	{
		short a1 = 10;
		a1++;
		System.out.println("a1="+a1);
		//short a2 = 10;
		//a2=a2+1;
		//System.out.println("a2="+a2);

	}
}

得到运算结果:

---------- java ----------
a1=11

输出完成 (耗时 0 秒) - 正常终止

可以发现自加可以计算

同理可以得到--运算符的使用方法

比较运算符

比较运算符,有如下几种>, <,  >=, <=, ==, != instanceof

最后一个将会在后边讲面向对象中再给大家讲解。

运算符意义
>前边大于后边:true,否则false
<前边小于后边:true,否则false
>=前边大于或等于后边:true,否则false
<=前边小于或等于后边:true,否则false
==前边等于后边:true,否则false
!=前边不等于后边:true,否则false

样例程序:

class ComparaOperator 
{
	public static void main(String[] args) 
	{
		int a1 = 10, a2 = 11, a3 = 11, a4 = 13;
		System.out.println("a1==a2的运算结果为:"+(a1==a2));
		System.out.println("a2>a1的运算结果为:"+(a2>a1));
		System.out.println("a2>=a3的运算结果为:"+(a2>=a3));
		System.out.println("a2<=a3的运算结果为:"+(a2<=a3));
		System.out.println("a3>=a4的运算结果为:"+(a3>=a4));
		System.out.println("a4!=a2的运算结果为:"+(a4!=a2));
		System.out.println("a1<a2的运算结果为:"+(a1<a2));
		System.out.println("a2>a4的运算结果为:"+(a2>a4));

	}
}

得到运算结果:

---------- java ----------
a1==a2的运算结果为:false
a2>a1的运算结果为:true
a2>=a3的运算结果为:true
a2<=a3的运算结果为:true
a3>=a4的运算结果为:false
a4!=a2的运算结果为:true
a1<a2的运算结果为:true
a2>a4的运算结果为:false

输出完成 (耗时 0 秒) - 正常终止

最后根据是否满足条件得到布尔值。

逻辑运算符

在Java中逻辑运算符

逻辑运算符运算含义
&逻辑与
&&短路与
|逻辑或
||短路或
逻辑非
^逻辑异或

不同逻辑运算的真值表

&和&&运算真值表
truefalse
truetruefalse
falsefalsefalse
|和||的运算真值表
truefalse
truetruetrue
falsetruefalse
!的运算真值表
truefalse
falsetrue
^的运算真值表
truefalse
truefalsetrue
falsetruefalse

主要用于条件判断语句中的一些判断句的一些判定

讨论&和&&的区别:

在与运算的过程中,如果其中一个是false,那么运算结果是false。

如果是false&(运算式),得到false结果,但是运行运算式

如果是false&&(运算式),得到false结果,运算式不运行

class LogicOperator 
{
	public static void main(String[] args) 
	{
		boolean b1=true,b2=false;
		int i1=1,i2=1;
		if(b2&(i1++==1))
			System.out.println("true");
		System.out.println("i1="+i1);
		
		if(b2&&(i2++==1))
			System.out.println("true");
		System.out.println("i2="+i2);
	}	
}

得到的运算结果:

---------- java ----------
i1=2
i2=1

输出完成 (耗时 0 秒) - 正常终止

i1运算式中,由于是&逻辑与运算,所以后续的i1++得到运算

i2运算式中,由于是&&短路与运算,所以后续的i2++没有得到运算

同理,对于或运算来说,如果第一个为true那么最终结果即为true

所以true|(运算式),得到结果true而且运算运算式

true||(运算式),得到结果true,但是不运行运算式

位运算符

在Java中存在位运算符的操作,使用的比较少,一般作为加密处理

运算符运算意义
>>右移(/2)
<<左移(*2)
>>>无符号右移
&按位与
|按位或
^按位异或
~按位非

在这个运算中,即将数字转化为二进制,通过位运算,得到计算结果

三目运算符

在Java中有且只有一个三目运算符,使用方法如下:

(布尔表达式)?(表达式1):(表达式2)

如果布尔表达式的值为真,那么运行表达式1,如果布尔表达式的值为假,那么运行表达式2

样例程序

class TernaryOperator
{
	public static void main(String[] args) 
	{
		int a=1,b=3;
		int c = a>b?a:b;
		System.out.println(c);
	}
}

  得到运算结果:

---------- java ----------
3

输出完成 (耗时 0 秒) - 正常终止

分析:

其中的三目运算符 c = a>b?a:b;运算过程中,先比较a和b的大小,前边设置a=1,b=3,所以a<b,所以运算表达式2,那么返回的数值为b的参数值为3,所以c=3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值