JAVA学习笔记(四)
哈希表上的对象
equals(object o)
: 用于笔记两个对象是否是”相等”的
例:
Dog a = new Dog();
Cat c = new Cat();
if(a.equals(c)){
system.out.println("true");
} else {
system.out.println("false");
}
getclass()
:查找出对象从哪里被初始化
例:
Cat c = new Cat();
system.out.println(c.getclass());
hashCode()
:列出此对象的哈希代码。
例:
Cat c =new Cat();
System.out.println(c.hashCode());
toString()
:列出类的名称
例:
Cat c = new Cat();
System.out.println(c.toString());
- object 类:终极类型
- 是所有类的源头,它是所有类的父类。
- 任何从
ArrayList<Object>
取出的Object都会被当成Object这个类的实例。 - 如果对象的引用是Object,则他不能调用除了Object以外的方法。
- 调用原方法时可以通过声明的方式实现,如
Dog d = (Dog) o;
如果不能确定其原类型可用instanceof这个运算符检测,如if(o instanceof Dog){}
。从而防止类型转换错误。
- 接口(interface)
- 接口的定义:
public interface Pet{...}
,用 interface 取代 class - 接口的实现:
public class Dog extends Canine implements Pet,Saveable,paintable{...}
。 - 接口的方法一定是抽象的,其次接口的方法需要在类定义的开头进行实现。
- 不同继承树的类也可以实现相同的接口。
- 接口的定义:
- 内存空间:栈和堆
- 栈(stack):方法调用及局部变量的生存空间。当前运行的方法存放于栈顶。
- 堆(heap):对象的生存空间。实例变量存在于所属的对象中。
- 构造函数:在新建对象的时候执行的代码。
- 构造函数与类同名且没有返回类型。
- 当没有编写构造函数时程序会自动编写一个无参数的构造函数。
- 当有超过一个以上的构造函数即为重载的构造。
- 变量的存在时间:局部变量,实例变量。
- 局部变量:只存在声明该变量的方法中,方法结束时变量消失。当它存在时,它的状态会被保存,但只能在声明它的方法在执行中才能被使用。
- 实例变量:存在时间与对象相同。
- 释放对象的引用的方法
- 引用永久性的离开它的范围
void go(){life z = new life();}
- 引用被赋值到其他对象上
life z = new life();z = new life();
- 直接将引用设置为null
life z = new life();z = null;
- 引用永久性的离开它的范围
- 静态方法与非静态方法的差别
- 静态方法(static):不需要类实例的方法。一般以类的名称调用
Math.min(81.75);
。静态的方法不能调用非静态的变量与方法。 - 非静态方法:以引用变量的名称调用非静态的方法
song t2 = new song(); t2.play();
- 静态方法(static):不需要类实例的方法。一般以类的名称调用
- 静态变量:可以被所有实例共享的变量。
- 静态final变量:一旦被初始化后就不会被改动。
- 初始化:
1.声明的时候:
public class poo{
public static final int FOO_X = 25;
}
2.静态初始化程序中:
public class Bar{
public static final double BAR_SIGN;
static{
BAR_SIGN = (double) Math.randow();
}
}
- final的作用
- 非静态的final变量:
final int x
表明x的值不能被改变。可用于局部变量或者方法的参数。 - final的方法:
final void calcwhuffie(){}
表明该方法不能被覆盖。
- 非静态的final变量:
- math的方法
Math.ramdom()
:返回介于0.0~1.0之间的双精度浮点数。Math.abs()
:返回双精度浮点数类型参数的绝对值。该方法有覆盖版本,传入整形会返回整形,传入双精度浮点数会返回双精度浮点数。Math.round()
:根据参数是浮点型或双精度浮点数返回四舍五入之后的整型或长整型。Math.min()
:返回两参数中比较小的那一个。同样有覆盖版本。Math.max()
:返回两参数中比较大的那一个。同样有覆盖版本。
- autoboxing的作用
- 包装与解开primitive主数据类型给collection用
- 方法的参数:如果参数是某种包装类型,可以传入相对应的primitive主数据类型
- 返回值:如果方法返回某种primitive主数据类型,可以返回兼容的primitive主数据类型或该primitive主数据类型的包装类型
- boolean 表达式:如何boolean值得位置都可以用来求出boolean的表达式来代替。