面向对象java学习笔记2
来源:互联网 发布:淘宝深圳美版s7 编辑:程序博客网 时间:2024/05/17 02:50
相同和同一:
x——>"abc" <——y; x和y指向同一个。 x——>"abc", y——>"abc",x和y的值相同。
拓:
char *x=”abc”; char *y=”abc”;
x==y的结果是false,判读的是指针引用的内存地址不同;*x==*y的结果是true,两个指针地址所存储的数值相同。
相同检验:equal、 ==、
实例1:
package OOlearning;public class Isequal { public static void main(String[] args) { String a="dc"; String b="dc"; System.out.println(a==b); System.out.println(a.equals(b)); System.out.println(b.equals(a)); }}
结果:true true true
Parent p,Child c;验证p是否等于c是由父类方法实现。验证c是否等于p由子类方法实现:
如果有两个子类 c1 c2 :p.equal(c1) p.equal(c2)结果都是true c1.equal(c2)结果不一定 此时的equal方法是子类所有: 可能子类重写了该方法。
实例代码2:
package OOlearning;public class Isequal2 { public static void main(String[] args) { Parent p1=new Parent(); Parent p2=new Parent(); //p2.setPint(2); if(p1.equals(p2)){ System.out.println("sidwgh"); } }}class Parent{ int pint=0; public boolean equals(Object o){ if(o instanceof Parent){ Parent p=(Parent) o;//如果改成Parent p= o;不能编译通过——编译是否通过决定于 对象属于的静态类。 return this.pint==p.pint;//如果删掉上面一行代码 改成=o.pint也不能通过 } return false; } public void setPint(int pint) { this.pint = pint; }}
输出结果是:sidwgh
如果将注释行代码取消,结果无输出。
实例代码3:
package OOlearning;public class Isequal2 { public static void main(String[] args) { Parent p1=new Parent(); Child c1=new Child(); Child c2=new Child(); c2.setCint(2); if(p1.equals(c1)){ System.out.println("p1.equals(c1)结果是true!"); } if(p1.equals(c2)){ System.out.println("p1.equals(c2)结果是true!"); } if(c1.equals(c2)){ System.out.println("c1.equals(c2)结果是true!"); } if(c1.equals(p1)){ System.out.println("c1.equals(p1)结果是true!");//p1不是child类,即p1 instanceof Child的结果返回是false。 } }}class Parent{ int pint=0; public boolean equals(Object o){ if(o instanceof Parent){ Parent p=(Parent) o;//如果改成Parent p= o;不能编译通过——编译是否通过决定于 对象属于的静态类。 return this.pint==p.pint; } return false; } public int getPint() { return pint; } public void setPint(int pint) { this.pint = pint; } } class Child extends Parent{ int cint=0; public boolean equals(Object o){ if(o instanceof Child){ Child p=(Child) o; return this.cint==p.cint; } return false; } public int getCint() { return cint; } public void setCint(int pint) { this.cint = pint; } }
结果是:p1.equals(c1)结果是true!
p1.equals(c2)结果是true!
子类是父类的instance 而父类不是子类的instance。
0 0
- java面向对象学习笔记(2)
- Java学习笔记之面向对象2
- 面向对象java学习笔记2
- 黑马学习笔记--JAVA面向对象2
- java面向对象学习笔记
- java学习笔记-----面向对象
- JAVA学习笔记----面向对象
- java面向对象学习笔记
- 学习笔记-Java面向对象
- java面向对象学习笔记
- java学习笔记面向对象
- JAVA学习笔记-面向对象
- 【JAVA学习笔记】面向对象
- Java 面向对象学习笔记
- JAVA学习笔记-----面向对象
- java学习笔记--面向对象
- Java面向对象学习笔记
- JAVA笔记面向对象2
- 统计文本文件中单词出现频率,自己编写的Java小程序
- hdu-1010 Tempter of the Bone(DFS+奇偶剪枝)
- swift中extension的使用
- 【c++】构造器与析构器
- Leetcode 370. Range Addition (Medium) (cpp)
- 面向对象java学习笔记2
- Ubuntu使用VNC连接windows错误: connection: no matahcing security types
- linux系统进程的内存布局
- leetcode 432. All O`one Data Structure
- 管理Tomcat服务的Daemon脚本
- 基于Python的Flask Web开发 笔记 (2)
- java基础--StringBuffer类常用方法以及案例
- ecshop 通过数据库触发器的方式同步用户账号密码,失败的问题
- 51nod1445 变色DNA【最短路】