java基础之一 对象,接口
来源:互联网 发布:python库中文 编辑:程序博客网 时间:2024/06/03 05:18
一、==和equals的区别
==:
- 基本类型,值相等即返回true
- 引用类型:比较栈(stack)内存的地址是否相等,相等即可返回true(string和integer除外,由于两个对象在jvm中存储不同)
equals:
- 不能比较基本类型,只能比较两个对象,堆(heap)内存中的值是否相等,如果相等返回true
- 一般需要自定义,重写该方法,主要有业务决定
int t1=1;int t2=2;Person p1=new Person();Person p2=new Person();t1==t2 //truep1==p2 //falsep1.equals(p2) //true
此处重点说明string和integer对象
String内存位置说明
- 显式的String常量
详解string内存空间
String a1 = “holten”;
String b1 = “holten”;
第一句代码执行后就在常量池(java7前在方法区中,java7后移至对堆里)中创建了一个值为holten的String对象;
第二句执行时,因为常量池中存在holten所以就不再创建新的String对象了。
此时该字符串的引用在虚拟机栈里面。
另外:
String s1=”a”;
String s2=s1+”b”;
System.out.println(s2==”ab”);//输出false
这里s2地址和”ab”地址不一致,所以输出false
String对象
String a2 = new String(“holtenObj”);
String b2 = new String(“holtenObj”);
Class被加载时就在常量池中创建了一个值为holtenObj的String对象,第一句执行时会在堆里创建new String(“holtenObj”)对象;
第二句执行时,因为常量池中存在holtenObj所以就不再创建新的String对象了,直接在堆里创建new String(“holtenObj”)对象。
此时:a1==b1 //true 常量池值不变a2==b2 //false 比较栈内存地址a1.equals(b1) //true 比较string对象值a2.equals(b2) //true 比较new string()对象在堆内存中的值
integer:
在interger类中,为了初始化方便,提供-128-127之间的数创建对象时直接创建在常量池中,其他对象会建立堆内存中
integer t1=new integer(1);integer t2=new integer(1);integer t3=new integer(128);integer t4=new integer(128);Integer c = 3; Integer d = 3;c==d //true jvm底层在常量池建立一个integer对象c.equals(d) //true 值相等t1==t2 //truet1.equals(t2) //truet3==t4 //false 地址不一致t3.equals(t4) //true 堆内存中对象值相等int i=2017: Integer j=2017;i==j //true i.equals(j) //true 实际对象值相等
接口和抽象类的区别
共同点:
都不能创建实例化对象,且可包含抽象方法
不同点:
第一:从接口和类的角度
- 类中可以有静态方法和普通方法的实现,静态变量和普通变量,构造器和普通代码块,而接口都没有
- 接口可以支持实现多个接口,类不能多继承。
第二:从设计思想的角度
- 接口体现一种规范,系统的总览,规定了实现者向外提供的服务,规定了调用者可以调用的方法和如何访问该方法
- 抽象类体现一种模板式设计,即多个子类调用同一个父类,可以作为系统实现过程中的中间产品,这个产品已经实现了部分功能,但是又有部分功能没有实现,即这个产品不是最终产品。
阅读全文
0 0
- java基础之一 对象,接口
- java基础之一 数组、对象
- 面向对象基础之一
- 黑马程序员---Java基础--05天(面向对象之一)
- 黑马程序员-----Java基础(五):面向对象之一
- java基础入门之一
- Java基础笔记之一
- java基础之一多线程
- java基础之一注释
- java基础之一异常
- JAVA基础之一:基础语法
- java基础要点(7)面向对象-抽象与接口
- java基础----面向对象4(继承与接口)
- java基础--类与对象(继承与接口应用)
- 黑马程序员---Java基础---面向对象:继承、抽象类、接口
- java基础-面向对象(接口和抽象类)
- Java基础--面向对象(继承、抽象类、接口)
- java基础8_对象转型_接口
- Tree Grafting,树转换成二叉树,tree recovery,遍历顺序确定二叉树
- fastjson使用技巧整理
- poj 2155 Matrix(树状数组)
- hive weekofyear 怪异的姿势
- hdu1521-dp
- java基础之一 对象,接口
- 工厂方法模式
- C++ 单生产者多消费者多线程示例
- tcp超时重传
- UML序列图——时序图基本使用
- Codeforces Round #386 (Div. 2) C
- POJ3068 "Shortest" pair of paths
- Maven详解之仓库------本地仓库和远程仓库
- ListView上拉刷新 下拉加载