1.基础知识
1.1面向对象的特征
封装,继承,多态
封装:就是把对象的属性和行为(数据)结合为一个独立的整体,并尽可能隐藏对对象的内部实现细节,就是把不该告诉别人的东西隐藏起来,把可以告诉别人的公开,别人只能用我提供的功能实现需求而不知道是如何实现的。增强代码的安全性。
继承:子类继承父类 的数据属性和行为,并能根据自己的需求扩展出新的行为。提高了代码的复用性。
多态:指允许不同的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。
1.2基本数据类型
1.3 关于 JDK JRE JVM
JDK(Java Development Kit):开发工具包,整个java的核心,是java的核心。
JRE(Java Runtime Environment):运行环境运行时类库,运行JAVA程序所必须的环境集合。
JVM(Java Virtual Machine):Java 虚拟机,实现跨平台的最核心的部分。
1.4重载和重写的区别
重载:发生在同一类中,方法名必须相同,参数类型不同,个数不同,顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。
重写:发生在父子类中,方法名参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类,如果父类方法访问修饰符为private则子类就不能重写该方法。
1.5Java中的==和equals的区别
==的作用
基本类型:比较的是值是否相同
引用类型:比较的是地址是否相同
equals的作用
引用类型:默认比较是地址。但是!在String,Integer,Date这些类库中equals被重写,比较的是内容而不是地址!
面试官:请解释字符串比较之中 “ == ” 和 equals() 的区别?
答:==比较的是两个字符串内存地址(堆内存)的数值是否相等,属于数值比较;equals():比较的是连哥哥字符串的内容,属于内容比较。
1.6 String、StringBuffer、StringBuilder三者之间的区别
String 字符串常量:适用于少量的字符串操作。
StringBuffer 字符串变量(线程安全):适用于单线程下字符串缓冲区进行大量操作。
StringBuilder 字符串变量(非线程安全):适用于多线程下在字符串缓冲区进行大量操作。
1.String是final类不能被继承且为字符串常量,而StringBuilder和StringBuffer均为字符串变量。
2.在String类中使用“+”作为数据的连接操作,而在StringBuffer类中使用append()方法(方法定义:public StringBuffer append(数据类型 变量))进行数据连接。
3.String类和StringBuilder、StringBuffer类的转换。
a.String类通过apend()方法转换成StringBuilder和StringBuffer类。b.StringBuffer类和StringBuilder类通过to.String()方法转换成String类型
4.String类、StringBuffer和StringBuilder类中定义的常用方法,三类的大部分方法(下例)可以互补。
5.线程安全性方面
StringBuffer 对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder 并没有对方法进行加同步锁,所以是非线程安全的。
1.7接口和抽象类的区别
实现:抽象类的子类使用extends来继承;接口必须使用implements来实现
构造函数:抽象类可以有;接口不能有。
main方法:抽象类可以有,接口不能有。
实现数量:类可以是实现多个接口,但是只能继承一个抽象类。
访问修饰符:接口中的方法默认使用pubilc修饰;抽象类中的方法可以是任意修饰符。
1.8 String常用的方法有
indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace():字符串替换。