基础语法.

1 String 、StringBuilder 、StringBuffer 的区别?

String是只读性字符串,引用的字符串内容不能被修改
StringBuilder和StringBuffer代表的字符串对象可以直接被修改
StringBuilder单线程环境下运行,效率要比StringBuffer效率高
StringBuffer加了锁,线程更加安全

2 equals() 与 == 的区别?

equals和 = = 都是用来比较对象的,但是使用范围和比较的内容不同
==在基本数据类型间使用,是用来比较对象所代表的值的
而在引用数据类型间使用,则是用来比较对象的地址值
equals只能用来比较引用数据类型,当该对象类型没有重写equals方法,比较的是地址值
当该对象类型重写了equals方法,比较的是对象所代表的的值

3 是否可以继承String类? 为什么用final修饰?

String类不能被继承,因为String类是被final修饰的类,无法被继承
1.只有字符串是不可变的,字符串池才有可能存在,因为字符串池中存储的字符串是唯一的,当两个字符串对象的内容相同,只会存储一个
2.如果字符串是可变的话,会引起严重的安全问题。如我们经常使用的用户名和密码,一般都是用字符串存储,且是唯一的,如果字符串是可变的话,就会对我们的数据库存储造成破坏
3.因为字符串是不可变的,所以多线程是安全的,字符串才能在多个线程间进行传递,因为字符串本身的线程就是安全的
4.因为字符串是不可变的,所以字符串在被加载的时候,会缓存它的hashcode值,其值不会发生改变;因此字符串常被用来作为map继承的键使用,字符串相较于其他类型的键加载速度更快且更加安全

4 什么是面向对象编程 ?

在java的世界里,外物皆对象。
面向对象编程是采用类、方法、封装、继承、多态的思想来进行程序设计
使程序的设计尽量与人的思维方式保持一致

5 面向对象的三大特征

面向对象的三大特征是封装、继承、多态。
封装:将对象的属性和行为封装到类中,不允许外界直接访问,对外提供公共的方法访问。
继承:即子类继承父类,将对象间的公共的属性和行为提取到父类中,子类只需要继承父类即可;简化了代码,提高了代码的复用性
多态:父类引用指向子类对象;多态的前提是有继承关系、有方法的重写、向上转型;向上转型就是编译看左边,运行看右边。

6 JDK,JRE,JVM

jdk是开发者工具包,包含jre和jvm
jre是开发环境,包含jvm和核心类库
jvm是虚拟机

7 java基本数据类型

整数:byte、short、int、long
小数:float、double
布尔:flase、true
字符:char
字符串

8 什么是方法签名

方法签名就是方法名和参数列表
方法名相同,参数列表相同,会构成方法的重写
方法名形同,参数列表不同,会构成方法的重载

9 java中的访问修饰符

private、default、protect、public

10 final有什么用?和finally,finalize有什么区别?

final表示最终
被final修饰的类为最终类,不能被继承
被final修饰的变量为常量,不能被重写赋值
被final修饰的方法不能被重写

finally是try…catch结构的最后一层,无论出现什么异常,finally里的代码都会被执行

finalize是Object类中的方法,用在垃圾回收器中

11 this和super的区别

this表示的是本类对象,就是对象本身
super表示的是超类对象,即父类对象
this是通过本类中的构造方法创建对象的,super是通过父类中的构造方法创建对象的

12 break ,continue ,return 的区别及作用?

break在循环中使用是结束循环
continue是结束本次循环,进入下一次循环
return是结束方法

13 抽象类能被final修饰吗?

抽象类不能被final修饰,因为抽象类本身就是用来继承的,如果被final修饰的类是无法被继承的,与设计理念相悖

14 static修饰的方法能调用非static修饰的变量和方法吗 ?

静态调用静态,static修饰的方法只能调用static修饰的变量和方法

15 局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final

1.为了保持数据的一致性
2.局部变量是存在栈中,它会随着方法的出栈而消失;只有被final修饰后,才会存放到堆中的常量池内,这样即使方法消失,也不会影响它的调用

16 重载(Overload)和重写(Override)的区别

重载是方法名相同,参数列表不同;参数列表包含参数数量、参数类型、参数顺序
重写是方法名相同,参数列表相同,实在子类继承父类重写父类方法时使用的

17 构造器(constructor)是否可被重写(override)

构造器constructor无法被重写,因为重写是在子父类继承关系中体现的,而构造器无法被继承,自然就无法被重写;
子类会自动调用父类的构造方法创建对象,调用和继承是没有关系的

18 Java中创建对象的方式有哪些

1.new对象
2.反射 :class.newinstance和constructor.newinstance
3.clone方法
4.反序列化创建对象

19 接口和抽象类的区别

相同点 :接口和抽象类都是抽象出来的概念
不同点:
1、接口是行为的抽象,即方法的抽象,设计的目的是为了增强对象的方法;抽象类是类的抽象,是一种模板设计,设计的目的是为了提高代码的复用性
2、接口没有构造方法,它的方法的实现只能通过该接口的实现类来调用;抽象类有构造方法,也有方法的实现,可以直接通过该类对象调用
3、接口的成员变量默认修饰符是public static final,不能被修改或重新赋值,抽象方法都是被public abstract 修饰的,在1.8之后可以定义静态方法和默认方法;有抽象方法的类一定是抽象类
4、接口可以多实现,不能被继承;抽象类只能实现单继承;实现接口和继承抽象类都必须重写他们的抽象方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值