1:说一说八大基本数据类型
2:面向对象
面向对象的核心,就是类和对象。Java中的面向对象的思想:万物皆对象。
类:是对一类事物的描述,是抽象的,看不见,摸不着。
对象:是实际存在的该类事物的每个个体 也称为实例 是具象的。
所以面向对象程序设计的重点是类的设计,而不是对象的设计。
类是对象的描述
对象叫做类的实例化(Instance)
类不占内存,对象才占内存。
3:说一说Java的特点
1.Java是面向对象的
2.Java是跨平台的:一次编译,到处运行
3.Java是多线程的
4.Java有GC,简化了开发
5.Java是分布式的
6.Java现在运用最广泛(有待商榷,python太猛了)
7.支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持);
8.支持网络编程并且很方便( Java 语言诞生本身就是为简化网络编程设计的,因此 Java 语言不仅支持网络编程而且很方便);
9.编译与解释并存;
4:说一说JVM和字节码
JVM是Java虚拟机:读取和运行字节码文件的虚拟机,JVM针对不同系统的特定版本的JVM,目的是使用相同的字节码,他们都会给出相同的结果,一次编译,可以到处运行。
字节码:Java中,JVM可以理解的语言符号就是字节码,装载字节码的文件叫做字节码文件,也就是class文件,字节码文件只面向JVM,由于的跨平台性,Java程序无需重新编译,可以在多种平台上运行。
5:JDK与JRE
JRE是Java运行时环境,JRE运行已经编译过的Java程序,包含编译后程序运行所需要的JVM虚拟机+Java类库+Java命令+其他的一些基础组件,JRE不能新程序的创建。
JDK是功能齐全的JavaSDK:包含编译后程序运行时环境,也就是JRE,同时还包含Javac编译器和其他的一些工具(Javadoc和jdb)JDK可以创建、编译新程序。
6:什么是位运算符
// 在hashmap源码中 默认的容量和最大容量 它采用了位运算符 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 其实就是16 static final int MAXIMUM_CAPACITY = 1 << 30; static final float DEFAULT_LOAD_FACTOR = 0.75f; // 位运算符 相当于二进制中 数值左移4位 00001 --> 10000
7:讲一讲什么是函数式接口
函数式接口的定义:任何接口,如果只包含一个抽象方法,那么他就是一个函数式接口
对于函数式接口,我们可以通过lambda表达式来创建该接口对象。
public interface Runnable{ public abstract void run(); }
8:StringBuilder和StringBuffer的区别
- 他们都是可变长度的字符串
- StringBuffer 线程安全 效率低
- StringBuilder 线程不安全 效率高
9:简单介绍下多态、重载、重写
多态:同一种事物的多种形态。
作用:
1.不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可,提高可复用性;
2.派生类的功能可以被基类的方法或引用变量所调用,提高可扩展性。
- 编译时多态 方法重载overload
- 方法名必须相同
- 形参列表必须不同(形参的数据类型和形参的个数不同)
- 与返回值类型无关
- 运行时多态 方法重写overwrite
- 必须存在继承关系
- 重写的方法、返回值类型、参数列表必须和父类的方法保持一致
- 子类的访问修饰符不能低于父类方法的访问修饰符 public
10:讲一讲自动装箱和拆箱
装箱:将基本类型用它们对应的引用类型包装起来;
拆箱:将包装类型转换为基本数据类型;
11:String能被继承吗?
不能,String类是被final修饰的,底层是有数组实现,数组的长度是不可变的。
public final class String implements java.io.Serializable, Comparable<String>, CharSequence
12:什么叫做解释性语言、编译性语言
Java的源文件以.java为扩展名,通过javac编译过后形成.class文件;.class文件则是java虚拟机能够运行(翻译成对应操作系统可执行的文件)的文件。(熟悉两个概念:解释型语言和编译型语言)
解释型语言:是在程序运行时将程序翻译成机器语言,所以运行速度相对于编译型语言较慢。如JS
编译型语言:在程序执行之前,有一个单独编译的过程,直接将程序翻译成机器语言,以后执行时,就不需要进行翻译了。
13:private关键字的作用
private修饰的方法,只能在本类中进行使用,方法中可以访问本类对象的所有的私有属性和私有方法,可以在本类所有的方法中出现,本类对象点私有属性或者本类对象点私有方法的这种情况。
private修饰的内容,不能在除了本类之外所有的地方进行调用,包括main方法中或者子类中或者父类中或进行本类对象点私有属性或者本类对象点私有方法,都是错误写法编译期报错。
private 修饰的方法和字段,说白了,只能够本类方法中调用,只是也可以访问本类其他对象的私有字段和属性而已。
14:static关键字的作用
Java当中的所有的方法都可以被继承,private 方法(但是不可见)和static方法都可以
静态方法是静态绑定,静态绑定是在编译时完成的,动态绑定是在运行时完成的。
static 方法可以被继承,如果子类中方法名一样,从父类中继承的静态方法会被隐藏
如果父类和子类都都含有同名的静态方法,对象.方法调用的都是对象声明类型的静态方法,如果对象声明类型中没有此静态方法,去父类中找,因为本质上静态方法是类的方法,和对象没有关系,和直接用类名调用时一样的。