一.Java语言有哪些特点:
1.跨平台(JVM内置是Java跨平台的根本)
2.易学习,有庞大的类库
3.面向对象(Java最重要的特征,让程序耦合度更低,内聚性更高)
4.支持多线程
5.可靠安全
二.面向对象和面向过程的区别:
面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步步实现,然后在使用的时候再调用即可。
面向对象:是把构成问题的事务刨析成各个对象,然后再用这些对象来描述某个事务在解决问题的过程中所发生的行为。面向对象有封装,继承,多态三大特性,这些特性使得开发系统变得易维护,易复用,易扩展。可以设计出低耦合的系统。
三.八大基本类型和大小以及他们的封装类
基本类型 | 大小(字节) | 默认值 | 封装类 |
byte | 1 | 0 | Byte |
short | 2 | 0 | Short |
int | 4 | 0 | Integer |
float | 4 | 0.0f | Float |
double | 8 | 0.0d | Double |
long | 8 | 0L | Long |
boolean | - | false | Boolean |
char | 2 | null | Character |
四.Java的自动装箱和拆箱
装箱就是自动将基本数据类型转换为包装器类型(int-->Integer);调用方法:Interger的valueOf(int)方法。
拆箱就是自动将包装器类型转换为基本数据类型(Integer-->int);调用方法:Integer的intValue方法。
五.重载和重写的区别
重写(Override)
从字面意思来看,重写就是重新写一遍。其中就是子类重写继承过父类的方法。需要注意的是子类函数的访问修饰权限不能少于父类的。
public class Father {
public static void main(String[] args) {
// TODO Auto-generated method stub
Son s = new Son();
s.sayHello();
}
public void sayHello() {
System.out.println("Hello");
}
}
class Son extends Father{
@Override
public void sayHello() {
// TODO Auto-generated method stub
System.out.println("hello by ");
}
}
重写 总结:1.发生在父类和子类之间。 2.方法名,参数列表,返回类型 必须相同。3.访问修饰符的限制一定要大于被重写方法的访问修饰符。
重载(OverLoad)
在一个类中,同名的方法如果有不同的参数列表(参数类型不同,参数个数不同甚至参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但是不能通过返回类型是否相同来判断重载。
public class Father {
public static void main(String[] args) {
// TODO Auto-generated method stub
Father s = new Father();
s.sayHello();
s.sayHello("wintershii");
}
public void sayHello() {
System.out.println("Hello");
}
public void sayHello(String name) {
System.out.println("Hello" + " " + name);
}
}
重载 总结:1.重载OverLoad是一个类中多态性的一种表现。2.重载要求同名方法的参数列表不同(参数类型,参数个数甚至参数顺序)。重载的时候,返回值类型可以相同也可以不同,无法以返回值类型来判断是否重载。
六.equals和==的区别
==:
==比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否指向同一个对象。比较的是真正意义上的指针操作。
1、比较的是操作符两端的操作数是否是同一个对象。 2、两边的操作数必须是同一类型的(可以是 父子类之间)才能编译通过。 3、比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为 true,如: int a=10 与 long b=10L 与 double c=10.0都是相同的(为true),因为他们都指向地 址为10的堆。
equals:
equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承java.lang.Object类的,所以适用于所有的对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。
总结:
所有比较是否相等时,都是用equals 并且在对常量相比较时,把常量写在前面,因为使用object的 equals object可能为null 则空指针。
在阿里的代码规范中只使用equals ,阿里插件默认会识别,并可以快速修改,推荐安装阿里插件来 排查老代码使用“==”,替换成equals。