1.引用数据类型传递
class Person
{
String name ;
int age ;
}
public class TestRefDemo1
{
public static void main(String[] args)
{
// 声明一对象p1,此对象的值为null,表示未实例化
Person p1 = null ;
// 声明一对象p2,此对象的值为null,表示未实例
Person p2 = null ;
// 实例化p1对象
p1 = new Person() ;
// 为p1对象中的属性赋值
p1.name = "张三" ;
p1.age = 25 ;
// 将p1的引用赋给p2
p2 = p1 ;
// 输出p2对象中的属性
System.out.println("姓名:"+p2.name);
System.out.println("年龄:"+p2.age);
p1 = null ;
}
}
2.覆写object类的equal方法,用于比较
class Person
{
private String name ;
private int age ;
public Person(String name,int age)
{
this.name = name ;
this.age = age ;
}
// 覆写父类(Object类)中的equals方法
public boolean equals(Object o)
{
boolean temp = true ;
// 声明一p1对象,此对象实际上就是当前调用equals方法的对象
Person p1 = this ;
// 判断Object类对象是否是Person的实例
if(o instanceof Person)
{
// 如果是Person类实例,则进行向下转型
Person p2 = (Person)o ;
// 调用String类中的equals方法
if(!(p1.name.equals(p2.name)&&p1.age==p2.age))
{
temp = false ;
}
}
else
{
// 如果不是Person类实例,则直接返回false
temp = false ;
}
return temp ;
}
}
class TestOverEquals2
{
public static void main(String[] args)
{
Person t_p1 = new Person("张三",25);
Person t_p2 = new Person("张三",25);
// 判断p1和p2的内容是否相等
System.out.println(t_p1.equals(t_p2)?"是同一个人!":"不是同一个人");
}
}
3.
final
关键字的使用
⑴ final标记的类不能被继承
⑵ final标记的方法不能被子类覆写
⑶ final标记的变量(成员变量或局部变量)即为常量,只能赋值一次
4.代码块即是java中用“()”括起来的代码块就是代码块,划分为普通代码块、静态代码块、构造块、同步代码块
1.普通代码块:直接在一个方法中出现的大括号()就成为普通代码块
2.构造块:直接在类中定义的代码块,构造块重复执行多次,比构造方法先执行
3.静态块优先于主方法执行,且静态块优先于构造块执行,而且只执行1次
4.同步块:
5.接口实例相关的设计模式
(1)适配器模式:解决接口不兼容的问题
(2)工厂模式
(3)代理模式: