面向对象和面向过程的区别
面向对象:面向对象易维护、易复用、易扩展,是因为面向对象有封装、继承、多态性的特性,所以设计出低耦合度的系统,使系统更加灵活、更易于维护。但是面向对象性能比面向过程低。
面向过程:面向过程性能比面向对象高,因为类调用时需要实例化,开销比较大,比较耗资源,所以当性能是最重要的考量因素的时候,单片机、嵌入式开发Linux/Unix等一般采用面向过程开发,但是,面向过程没有面向对象易维护、易复用、易扩展。
JDK 和 JRE
JDK是功能齐全的javaSDK,它拥有JRE所拥有的一切,还有开发工具包:编译器(javaC)和工具(如javadoci n和jdb)。它能够创建和编译程序。
JRE是java运行时环境,它是运行已编译java程序所需的所有内容的集合,包括java虚拟机(JVM),java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序。
==与equals的区别
1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址
2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
两个对象的hashCode()相同,则equals()也一定为true,对吗?
两个对象equals相等,则它们的hashCode必须相等,反之则不一定(它们的hashCode相等,则两个对象的equals不一定相等)。两个对象的==相等,则其HashCode一定相等,反之不一定成立。
HashCode(哈希码值)的存在主要应用于查找的快捷性,如 hashTable、hashMap等,HashCode是确定对象在散列储存结构中的地址值。
。反之HashCode相等,但是两个对象的equals比较不一定相等,也就是说这两个对象之间不一定使用于equals方法,只能说明这两个对象都存在于散列存储结构中。
final在Java中有什么作用(在Java中final可以修饰类、变量、方法)
1,Final 修饰类:当 final 修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用 final 进行修饰。final 类中的成员变量可以根据需要设为 final ,但是要注意 final类中的所有成员方法都会被隐式地指定为 final 方法。
2,Final 修饰方法:当 final 修饰一个方法后,该方法不能被子类重写(可以重载多个 final 修饰的方法),注意:重写的前提是子类可以从父类中继承此方法,