11、"=="和equals 方法究竟有什么区别?
== 操作符专门用来比较两个变量的值是否相等。要比较两个基础类型的数据或两个引用变量是否相等,只能用==操作符。
equals是比较两个独立对象的内容是否相等。字符串的比较基本都是用equals。
如果一个类没有自己定义的equals方法,他默认继承Object类中的equals方法,里面的实现是== 。就和==效果一样。对于自己定义的类需要用到equal比较两个独立对象对应的内容是否相等,就需要覆盖equals方法。自己equals的实现。
12、静态变量和实例变量的区别?
语法定义 静态变量需要加static 而实例变量不需要
程序运行 实例变量属于某个实例对象的属性,必须创建了实例对象。其中的实例变量才会被分配空间,才能使用这个实例变量。
静态变量不属于某个实例对象,而是属于类,所以又叫做类变量。只要程序加载了类的字节码,不用创建任何实例对象,静态变量就被分配空间,静态变量就可以使用类。
总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量可以直接通过类名来引用。
13、是否可以从一个 static 方法内部发出对非 static 方法的调用?
不可以,非static方法是要和对象关联在一起的,必须实例化一个对象,才能通过该对象对非静态方法进行调用。而static调用时不需要创建任何对象,可以直接调用。调用一个static方法时,可能还没有创建任何实例对象,就没有办法调用非static方法,所以不可以。
注:今天更新少类,太晚了,早上起来继续更新。