1.JAVA语言的特点?
1.简单易学
2.面向对象(封装继承多态)
3.平台无关性
4.GC垃圾回收机制
5.异常处理机制
6.支持多线程
7.支持方便的网络编程
8.编译和解释并存
2.面向对象和面向过程的区别?
1.面向过程的性能更高
2.面向对象易维护、易复用、易拓展。使系统更灵活、更易于维护。
3.JAVA和C++的区别?
1.JAVA不提供指针访问内存,程序内存更安全。
2.JAVA类单继承 C++多继承 但JAVA的接口可以多继承
3.JAVA自带内存管理
4.JAVA没有结束符
4.byte short int long float double char boolean
5.基本类型和引用类型的区别
1.基本类型直接赋值 引用类型先用new创建对象,然后把对象赋予对应的值。
2.==号比较的时候,基本类型比较的是值,引用类型比较的是引用地址。
3.传参时,基本类型是值传递,引用类型是地址传递。
4.JVM中的位置,基本类型直接存储在栈中,而引用类型,现在栈上分配一块内存,再把信息存在堆内存上,然后由栈上面的引用指向堆中对象的地址。
6.重载与重写
重载发生在同一类中,方法名必须相同,参数类型、个数、顺序,方法返回值和访问修饰符可以不同。
重写是子类对父类允许访问的方法的实现过程中进行的重新编写,发生在子类中,方法名,参数类型必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰范围大于等于父类。另外,如果父类方法访问修饰符为private,子类就不能重写该方法。也就是说方法提供的行为改变,而方法的外貌并没有改变。
7.封装继承多态
8.final修饰的类不能被继承,方法不能被重写,变量不可被更改。
9.String StringBuffer StringBuilder的区别
String的值不可改变 另外两个可以改变
StringBuffer线程安全效率低,StringBuilder线程不安全效率高。
10.为什么String要设置不可变?
1.为了实现字符串常量池
2.为了线程安全
3.为了保证同一变量调用hashcode都产生相同的值,这也是Map的key使用String的原因。
10.JAVA异常体系
ERROR是错误
EXCEPTION表示程序本身可以处理的异常
checked exception是可检查的异常(IDE中会报错的异常)
unchecked Exception
11.接口和抽象类的区别
1.接口默认的方法是public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法。