温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java操作符有哪些容易混淆

发布时间:2021-06-17 15:17:24 来源:亿速云 阅读:132 作者:chen 栏目:编程语言

这篇文章主要讲解了“Java操作符有哪些容易混淆”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java操作符有哪些容易混淆”吧!

今天开始重新温习Java,翻了翻java编程思想,看到操作符那里有一些考试面试经常遇到的又容易出错的地方,在这记录一下。

1. 赋值操作:在对一个对象进行赋值操作时,我们所操作的是对对象的引用。比如使用c=d,将对象d赋给对象c,这时c所指向的正式d之前所指向的内存,这时如果改变c或者d其中任何一个的值,另外一个的值也会变。

下面举个例子说明:

Java代码

class A{         int a;     }         public class Test{         public static void main(String[] args){             A c = new A();             A d = new A();             c.a = 10;             d.a = 15;                 c = d;             System.out.println("c.a = " + c.a + ", d.a = " + d.a);             d.a = 20;             System.out.println("c.a = " + c.a + ", d.a = " + d.a);         }     }

输出结果为:

c.a = 15, d.a = 15

c.a = 20, d.a = 20

可见当d的值改变时,c的值也会跟着改变,这说明这两个对象指向同一块儿内存。

2. 方法调用中的别名问题,比如将对象a作为参数传递给函数f,并在函数f中对对象a进行修改,那么实际修改的是a对象本身,因为传递给f的是a的一个引用,它和a指向的是同一块内存。

Java代码

class A{         int item;     }         public class Test{         public static void main(String[] args){             A a = new A();             a.item = 10;             f(a);             System.out.println("a.item = " + a.item);         }         static void f(A obj){             obj.item = 20;         }     }

输出结果为:

a.item = 20

3. equals 和 ==

==就是用来比较对象的引用,也就是说它只在乎两个对象是不是指向同一块内存,如果是的话,就返回true,否则即使两个对象的值相等,它也返回false

equals()的默认行为也是比较引用,但是它在jdk的许多类中都被覆盖过了(这些类有java.io.file,java.util.Date,java.lang.string,包装类(Integer,Double等)),覆盖后的结果为,只要两个对象的类型一致、值一致,就返回true,否则返回false。

举个例子:

Java代码

class A{         int item;     }         public class Test{         public static void main(String[] args){             A a = new A();             a.item = 10;             A b = new A();             b.item = 10;                          f(a, b);                 a = b;             f(a, b);                 String s1 = new String("test");             String s2 = new String("test");             if(s1 == s2)                 System.out.println("s1 == s2");             else if(s1.equals(s2))                 System.out.println("s1 equals s2");         }             static void f(A a, A b){             if(a == b)                 System.out.println("a == b");             else                  System.out.println("a != b");                 if(a.equals(b))                 System.out.println("a equals b");             else                System.out.println("a is not equals b");         }     }
Java操作符有哪些容易混淆

输出结果为:

a != b

a is not equals b

a == b

a equals b

s1 equals s2

这充分说明了 == 和 equals都是比较对象的引用的,s1 equals s2说明了在String类里覆盖了equals方法,只要两个对象值一样,就返回true。

感谢各位的阅读,以上就是“Java操作符有哪些容易混淆”的内容了,经过本文的学习后,相信大家对Java操作符有哪些容易混淆这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI