java语言中运算符=与==有何区别?

Python016

java语言中运算符=与==有何区别?,第1张

问题阐述

运算符=与==在程序中经常使用,请简述运算符=与==有什么区别?

专家解答

这两个运算符经常被混淆,很多程序开发人员在相等条件判断时使用了赋值运算符,即=符号,从而造成程序错误,所以关于这两个运算符的面试题出现的几率很高。=是赋值运算符,用于为变量或常量赋值,而==则是表示相等关系的关系运算符,通常用于进行条件判断。

 赋值运算符:

赋值运算符=是双目运算符,其作用就是为变量赋值,符号是=及其扩展运算符+=、-=、*=、/=、%=、&=和^=等。其中=用于把右边表达式的值赋值给左边的变量;而扩展运算符的作用是用左边变量的值和右边表达式的值进行相应运算后,再把运算结果赋值给左边的

变量。

例如:

longlen=5000          //把5000赋给变量len,所以len的值是5000

len+=500               //相当于len=len+500,所以len的值是5500

关系运算符。

关系运算符用于比较两个值的大小关系,运算结果是逻辑值真(true)或逻辑值假(false)。关系运算符包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和不等于(!=)6个。。关系运算符的用法和说明如表3.2所示。

表3.2关系运算符的用法及说明

==是一个比较运算符,基本数据类型比较的是值,引用数据类型比较的是地址值。

(比较地址值即是指是否为同一个对象的引用)

equals()是一个方法,只能比较引用数据类型。重写前比较的是地址值,重写后比一般是比较对象的属性。

扩展资料:

java中的数据类型,可分为两类:

1.基本数据类型,也称原始数据类型。

byte,short,char,int,long,float,double,boolean,他们之间的比较,应用双等号(==),比较的是他们的值。

2.复合数据类型。

当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。

JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址。

但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。

对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。

"="是赋值操作符,它的操作是把符号右边的变量或者常量或者对象的值赋值给符号右边的变量。

"=="是算数运算符中的一个操作符,主要用在判断中,如if(a

==

b){...}这条语句中,a

==

b语句的意思是先比较a和b的值是否相等(java中的相等不止是有值相等,还有对象的引用相等,这在比较两个值相等时需要注意和分清),然后返回比较的结果(只有两张,true和false)。