java中简单常见的方法和关键字

一,equals方法

这里经常会有面试官会问“==”和“equals”的区别?通常的回答是“==”比较的是值而“equals”比较的是地址 。

准确来讲“==”可以判断基本类型和引用类型,在进行判断时要求两边的类型必须一致或兼容。当判断基本类型时比较两边的值是否相等,当判断引用类型时比较两边的地址是否相等。

“equals”是判断两个任意引用类型的地址是否相等,但是我们看到的String.equals("引用类型元素")却判断值是否相等。这是因为在String类中重写了"equals"方法:

java中简单常见的方法和关键字_第1张图片

二,toString方法

源码:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
  }

返回的是当前类的类名和哈希值的16进制,当然我们可以在子类中重写该方法,并且在调用的时候不用写具体的调用语法,当前对象会自动调用该方法。

三,hashCode方法

如果当前对象调用此方法,会返回一个整数类型的特殊值(和调用对象的地址有关),有利于对象的存储。

四,finalize方法


垃圾回收方法,该方法可以唤醒系统中的GC(垃圾回收器)来进行无用对象空间的释放,命令

System.gc();

但是不一定唤醒就一定回收,当内存的可用空间比较充足时,GC的回收就比较佛性了。

五,static关键字

static 是静态的意思,一种修饰符,可以用来修饰类的成员,包括类的属性,方法,初始化块,内部类。静态成员随着类的加载一起加载,所以在类中可以直接调用其它静态成员;静态成员存储在方法区的静态域中并且只有一份,各个类对象之间共享;例如:现有一个Person类,其nation为静态属性,实例化两个对象并赋值,

class Person{
	String name;
	static String nation;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public static String getNation() {
		return nation;
	}
	public static void setNation(String nation) {
		Person.nation = nation;
	}
	public Person(String name,String nation) {
		super();
		this.name = name;
		this.nation=nation;
	}
	public String toString(){
		return name+"\t"+nation;
	}
	
}
Person p1 = new Person("柳岩","中国");
System.out.println(p1);
Person p2 = new Person("特朗普","美国");
System.out.println(p2);
System.out.println(p1);

运行结果:

java中简单常见的方法和关键字_第2张图片 由此可以看出对象柳岩和特朗普共享了Person的静态nation属性。

内存图:

java中简单常见的方法和关键字_第3张图片

六,final关键字

final是最终的意思,就是不能改变。

当final修饰类时,该类就变成了“太监类”,不能被继承,一般跟static一起出现。

当final修饰方法时,该方法不能被重写,但可以继承。

当final修饰属性和变量时,一旦赋值就不能被改变。常量在声明时必须赋值,如果修饰引用类型,引用类型的地址不能改变,但值可以改变。


七,所有类的爸爸:object



你可能感兴趣的:(North,drift)