JAVA基础知识

1.面向对象和面向过程的区别

面向过程

优点: 性能比面向对象更高,那是因为需要加载类的实例化,比较消耗资源。如果想要提高效率的话,比如单片机,嵌入式,这些采用面向过程的方式。

缺点: 与面向对象相比,代码扩展性不好,不易复用,不易维护。

面向对象

优点: 代码易维护,易扩展,具有高内聚,低耦合的特点,因为封装,继承,多态是面向对象的特点。

缺点: 在效率方面比面向过程要低。

2.JAVA语言的特点

  1. 面向对象,也就是封装,继承,多态
  2. 跨平台性,JVM虚拟机的特点
  3. 支持多线程,c++语言不支持内置的多线程机制
  4. 支持网络编程
  5. 编译与解释并存

3.JAVA和C++的区别

  1. 都是面向对象的语言,都支持封装,继承,多态
  2. JAVA当中没有指针的概念,不提供指针访问内存
  3. JAVA的类是单继承的,C++允许多继承,但是JAVA当中可以实现多个接口
  4. JAVA的内存会自动释放,C++需要手动free.

4.字符型常量与字符串常量的区别

  1. 从形式上来看,字符型常量是由单引号显示,而字符串常量有双引号显示
  2. 从含义上来看,字符型常量相当于一个整数值,就是ASCll值,字符串常量代表一个地址值
  3. 从大小来看,字符型常量占2个字节,字符串常量占若干字节。

5.构造器 Constructor 是否可被 override?

构造器不能被重写override,但是构造器可以被重载overload

6.重载和重写的区别

重载: 发生在同一个类中,方法名相同,但是参数的个数,顺序,类型可以不同,方法的返回值和访问修饰符可以不同

重写: 有继承关系,发生在父子类中,方法名和参数列表必须相同,返回值范围小于等于父类,抛出异常的范围小于等于父类,访问修饰符范围大于等于父类,父类中private私有方法不能被子类重写。

7. String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?

可变性
因为String的底层就是字符数组,private final char value[] ,所以String是不可变的。StringBuilder和StringBuffer都是继承AbstractStringBuilder类,底层使用char[] value,没有使用final,所以是可变的。

线程安全性
因为String是不可变的,是final的,所以String是线程安全的。StringBuffer因为对方法加了同步锁,所以是线程安全的。StringBuilder没有加同步锁,所以是非线程安全的。

性能
从底层可以知道,当我们对String进行一些操作的时候,都会生成新的对象,StringBuffer是对其本身进行操作,并没有生成新的对象.

8.自动装箱与拆箱

装箱: 将基本类型用它们对应的引用类型包装起来;
拆箱: 将包装类型转换为基本数据类型;

9.接口和抽象类的区别是什么?

  1. 接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法。
  2. 接口中除了static、final变量,不能有其他变量,而抽象类中则不一定。
  3. 一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过extends关键字扩展多个接口。
  4. 接口方法默认修饰符是public,抽象方法可以有public、protected和default这些修饰符。
  5. 从设计层面来说,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范。接口可以理解为是一种能力。

10.== 与 equals

== :判断对象的地址是否相等.
equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:

  1. 类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,作用与"=="一样。
  2. 类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来比较两个对象的内容相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值