您的位置:首页 > 编程语言 > Java开发

java基础知识之运算符

2016-07-09 11:30 302 查看

运算符

1.算数运算符

算数运算符,一眼看到就能知道它是什么。就是我们小学学到的算数运算符号。当然,有些可能比之前学到的用处和用法更多,但是也不用害怕。通过讲解会很容易理解。

(1)减号“-”

减号在java中的作用就是做减法运算,与之前我们学到的基本没有什么不同。要注意的就是相减得两个数可能数据类型不同,那么可能需要类型转换。当然,如果这两个数类型相同可以直接做减法。

 如:

public class Test {
public static void main(String[] args) {
int a = 10;
int b = 5;
int c = a - b;
System.out.println(c);

}

}
当数据类型不同时:

如:

public class Test {
public static void main(String[] args) {
int a = 10;
int b = 5;
int c = a - b;
System.out.println(c);

int d = 10;
double e = 5.0;
double f = d - e; //d - e 为double类型 赋给double不需要强转
System.out.println(f);

int x = 5;
double y = 10.0;
int z = (int) (y - x); //y - x 的结果是double 将double类型赋给int类型 需要进行强转 将结果转为int类型
System.out.println(z);
}

}

在java中基本数据类型有高低级之分(值的范围不同),分别为(byte、short、char)、int、long、float、double。当高级数据类型赋值给低级数据类型时,需要进行强制类型转换。如:int = (int)double;原因是:高级数据类型的取值大于低级数据类型,低级别数据类型无法存的下数据。就像将大杯子中的水倒入小杯子里,小杯子存不下。

(2)乘号“*”

乘号的作用不用多说。它在java中就是做乘法运算。简单举例说明:

如:

public class Test {
public static void main(String[] args) {
int a = 10;
int b = 5;
int c = a * b;
System.out.println(c);

int d = 10;
double e = 5.0;
double f = d * e; //d * e 为double类型 赋给double不需要强转
System.out.println(f);

int x = 5;
double y = 10.0;
int z = (int) (y * x); //y * x 的结果是double 将double类型赋给int类型 需要进行强转 将结果转为int类型
System.out.println(z);
}

}

使用*(乘号)时也要向 “-” 号一样注意数据类型的转换。

(3)加号“+”

加号在java中有三种含义:(一)做加法运算、(二)表示正数、(三)表示连接作用。虽然看起来用法有点多,但是其实前面两个我们在初中之前已经学过。

a.加法作用:

这个作用于减法和乘法相同,知识用作两个数的加法运算,这作用我们再熟悉不过了:

b.表示正数:

表示正数也很容易理解,当一个数没有符号时如:5,我们默认它是正数。只是省略了“+”而已,加上“+”我们更能够表示正数;如:+5。看到很容易就知道。

c.表示连接作用:

这个作用可能有点陌生,但是其实很好理解。它的作用就是把数字和字符串在输出时连接在一起。共同输出。

代码:

public class TestOpe002{
public static void main(String[] args){

System.out.println(+36);//正数

System.out.println(4+6);//加法运算

int num=90;
System.out.println("num="+num);//拼接 num=90 (双引号中的内容会原样输出,之后进行拼接)

System.out.println(5+6+"abc");//11abc 跟字符串运算,会整体变成一个字符串

System.out.println("abc"+5+6);//abc56

System.out.println(5+6+"abc"+5+6);//11abc56

}
}

(4)除法:“/”

在java中除法的表示可能与之前学的有所不同。之前的表示方法为:“÷”。在java中表示为:“/”。虽然表示方法不同,但是用法是相同的,都是表示两个数做除法运算。

如:

int num1=10/3;
System.out.println(num1);//3
int num3=10/4;
System.out.println(num3);//2 两个整数类型运算,结果是int类型,小数部分直接舍去。

double d1=10/3.0;
System.out.println(d1);//只要有一个操作数是浮点类型,那么结果的值就是浮点型的。


2.赋值运算符

赋值运算符,表示为“=”。起到赋值的作用。简单说,就是等于的作用。不同的是,数学中的“=”,运算时是由左至右,表示等号左边的值等于右边的值。而java中,运算是由右至左,表示的是,将等号右边的值(或地址,在后面讲到)赋给左边
4000


如:

int a = 10;

这句代码表示:声明一个整型变量a,并且将10赋给a。那么a的值就是10.

代码:

public class TestOpe004{
public static void main(String[] args){
//给出两个数
//int num1=10;
//int num2=30;

//输出交换前的两个数
System.out.println("交换前的num1="+num1);
System.out.println("交换前的num2="+num2);

//进行交换。使用第三变量作为中转
int t;
t=num1;
num1=num2;
num2=t;

//输出交换后的两个数
System.out.println("交换后的num1="+num1);
System.out.println("交换后的num2="+num2);

}
} 将两个变量的值进行交换

3.关系运算符

所谓关系运算符,就是比较大小。其结果可能是< , > , =。它的作用与数学中的比较关系相同,用法也是一样的;如
3<5 , 8>4 , 7=7;

我们在数学曾今学过判断表达式:if(){}..else(){};它的作用就是如果if括号中的表达式成立,那么执行if后面{
}中的语句;如果不成立,就执行else后面{ }中的语句。为了能够更好的理解关系表达式。我们举例说明。

代码:

public class TestOpe006{
public static void main(String[] args){
//给出三个数
int num1=50;
int num2=30;
int num3=90;
int t;
//输出比较前的三个数
System.out.println(num1+" "+num2+" "+num3);

//进行比较
if(num1>num2){

t=num1;
num1=num2;
num2=t;
}

if(num1>num3){

t=num1;
num1=num3;
num3=t;
}

if(num2>num3){

t=num2;
num2=num3;
num3=t;
}

//输出比较后的三个数
System.out.println(num1+" "+num2+" "+num3);
}
} 比较三个数的大小,并由小到大输出

4.逻辑运算符

逻辑运算符,就是做一些逻辑判断,主要就是先判断所给的表达式是否正确。然后通过逻辑运算符判断最后结果 。逻辑运算符,一般与布尔类型(boolean)结合使用,如果结果为真,返回ture;反之,返回false;逻辑运算符主要包括:

(1)“&”,这个符号叫做逻辑与,可以理解为“并且”。

如: a&b。

(一):当 a
表达式 为真,并且b
表达式 也为真时;那么 a&b
这个表达式整体为真。

(二):当 a
表达式 为真,并且b
表达式 为假时;那么 a&b
这个表达式整体为假。

(三)当 a
表达式 为假,并且b
表达式 也为真时;那么 a&b
这个表达式整体为假。

(四)当 a
表达式 为假,并且b
表达式 也为假时;那么 a&b
这个表达式整体为假。

总的来说:a&b,只有当a表达式和b表达式同事为真时,a&b才为真,其他情况均为假。

(2)”|”,这个符号叫做逻辑或,可以理解为“或者”;

如:a|b;

(一)当 a
表达式 为真,同时b
表达式 也为真时;那么 a|b
这个表达式整体为真。

(二):当 a
表达式 为真,b
表达式 为假时;那么 a|b
这个表达式整体为真。

(三):当 a
表达式 为假,b
表达式 为真时;那么 a|b
这个表达式整体为真。

(四):当 a
表达式 为假,同时b
表达式 也为假时;那么 a|b
这个表达式整体为假。

总的来说:a|b,只要a表达式或者b表达式有一个为真时,a|b就为真;a和b同时为假时,a|b才为假。

(3)“!”,这个符号叫做非,可以理解为“相反”。

如:!a

(一)当 a
表达式 为真时,那么 !a
这个表达式整体为假。

(二):当 a
表达式 为假时,那么 !a
这个表达式整体为真。

总的来说:!a,如果a的值为真,那么结果为假,如果a的值为假,那么结果为真。!a与a的值相反。

(4)“^”,这个符号叫做异或,

如:a^b

(一)当 a
表达式 为真,同时b
表达式 也为真时;那么 a^b
这个表达式整体为假。

(二):当 a
表达式 为真,b
表达式 为假时;那么 a|b
这个表达式整体为真。

(三):当 a
表达式 为假,b
表达式 为真时;那么 a|b
这个表达式整体为真。

(四):当 a
表达式 为假,同时b
表达式 也为假时;那么 a|b
这个表达式整体为假。

总的来说:a^b,a表达式和b表达式的值相同时,a^b就为假;a和b的值不同时,a^b为真。

(5)“&&”,这个符号叫做短路与,它的执行结果与&是相同的。区别在于,这个符合可以提高效率,较少判断条件;

如a&&b:

(一):如果a的值为假,那么a&&b的值为假,b的值不用判断。

(二):如果a的值为真,在判断b的值,根据a和b的值,判断最后结果。

(6)“||”,这个符号叫做短路或。它的执行结果与
| 是相同的。区别在于,这个符合可以提高效率,较少判断条件;

如a||b:

(一):如果a的值为真,那么a&&b的值为真,b的值不用判断。

(二):如果a的值为假,在判断b的值,根据a和b的值,判断最后结果。

代码:

public class TestOpe007{
public static void main(String[] args){
//逻辑非 !
System.out.println(!true);//false
System.out.println(!false);//true

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

//逻辑与 & 只要有一个操作数是false,那么结果一定是false
System.out.println((2>1)&(7>8));
System.out.println(true&true);
System.out.println(false&false);
System.out.println(false&true);

System.out.println("-----------------&------------------------");
//逻辑或 | 只要有一个操作数是true,那么结果一定是true
System.out.println(true|false);
System.out.println(true|true);
System.out.println(false|false);
System.out.println(false|true);

System.out.println("------------------|-----------------------");

//逻辑异或 ^ 操作数相同,结果为false。操作数不同,结果为true 。
System.out.println(true^false);
System.out.println(true^true);
System.out.println(false^false);
System.out.println(false^true);

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

//短路与 && 我们发现短路与,跟逻辑与执行结果是一模一样的。
//区别:如果第一个操作数是false,那么结果一定是false,后面的表达式不用执行。提高效率

System.out.println(true&&false);
System.out.println(true&&true);
System.out.println(false&&false);
System.out.println(false&&true);

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

//短路或 || 我们发现短路或,跟逻辑或执行结果是一模一样的。
//区别:如果第一个操作数是true,那么结果一定是true,后面的表达式不用执行。提高效率
System.out.println(true||false);
System.out.println(true||true);
System.out.println(false||false);
System.out.println(false||true);

System.out.println("-----------------------------------------");
}
}

5.条件运算符

条件运算符,又叫三目运算符。三目运算符的格式:x ? y : z。它往往被用来代替if..else来进行判断。

含义:

x ? y : z

x---代表一个条件表达式,结果是true或者false

如果x为true,那么执行y中的内容

如果x为false,那么执行z中的内容

 代码:

public class TestOpe008{
public static void main(String[] args){
int num1=4;
int num2=7;
//()中是一个条件判断,一个关系表达式,它的值是布尔值(true,false),如果这个值是true,那么执行{}中的语句,如果//不是true,那么执行else后面的语句。

if(num1>num2){

System.out.println("第一个数大于第二个数");
}else{
System.out.println("第一个数小于第二个数");
}

System.out.println("-----------------下面是三目运算符(条件运算符)表达:--------------------");

System.out.println(num1>num2?"第一个数大于第二个数":"第一个数小于第二个数");

}
} 其中最后:num1>num2?"第一个数大于第二个数":"第一个数小于第二数"。num1>num2相当于三目运算符中的X表达式,"第一个数大于第二个数"相当于Y,"第一个数小于第二个数",相当于Z。这种方式比if-else简单便捷许多,但是三目运算符只能做只有两种情况的比较。

 

6.运算符的优先级

所谓优先级,就是当一个表达式中出现了多个运算符,先执行哪个,后执行哪个的问题。

常用运算符的优先级为:

 赋值运算符<条件运算符<逻辑运算符<关系运算符<算数运算符<单目运算符

单目运算符就是:“!”运算符

括号的优先级最高,先算括号里的

 

例如:

 5<6 | 'A'>'a' && 12*6<=45+23&&!true

=5<6 | 'A'>'a' && 12*6<=45+23&&false

=5<6 | 'A'>'a' && 72<=68&&false

=true |false  &&false &&false

=true&&false &&false

=false

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息