目录
Java语言有哪些特点
Java都有那些开发平台?
Jdk和Jre和JVM的区别【重要】
面向对象和面向过程的区别
什么是数据结构?Java的数据结构有哪些?
1.数组:
2.队列 Queue
3.链表 Linked List
4.栈Stack
5.树Tree
什么是OOP?
类与对象的关系?
面向对象的特征?【重要】
Java中的基本数据类型?
什么是隐式转换,什么是显式转换 ?【重要】
char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型
float f=3.4;是否正确?
自动拆箱和自动装箱[重要]
Java中的包装类都是那些?
instanceof关键字的作用
一个java类中包含那些内容?
访问修饰符 public,private,protected,以及不写(默认)时的区别?【重要】
局部变量和成员变量的区别?
重载(Overload)和重写(Override)的区别?【重要】
equals与==的区别?【重要】
++i与i++的区别
数组实例化有几种方式?
Java中各种数据默认值
Java常用包有那些?【重要】
Object类常用方法有那些?
java中有没有指针?
构造方法能不能显式调用?
内部类与静态内部类的区别?
Static关键字有什么作用?【****】
final在java中的作用,有哪些用法?【****】
StringString StringBuffer 和 StringBuilder 的区别是什么?【重要】
讲下java中的math类有那些常用方法?
String类的常用方法有那些?
什么是接口?为什么需要接口?接口特点?
抽象类和接口的区别?【重要】
Java语言有哪些特点
1.简单易学,有丰富的类库
2.面向对象(Java最重要的特性,让程序耦合度更低)
3.跨平台(JVM实现)
4.支持多线程
Java都有那些开发平台?
Jdk和Jre和JVM的区别【重要】
1、JDK是java开发工具包,是整个java的核心,包含了java运行环境JRE,java开发工具(是开发人员所需要安装的环境)
2.JRE是运行Java程序所必须的环境集合,包含了JVM和核心类库(java的运行环境,java程序运行所需要安装的环境)
3.JVM是Java虚拟机的缩写,是整个Java实现跨平台的最核心部分
面向对象和面向过程的区别
1.面向过程
一种较早的编程思想,顾名思义就是该思想是站着过程的思想强调的就是功能行为,功能的执行过程,即先后顺序,而每 一个功能我们都使用函数(类似于方法)把这些步骤一步一步实现。使用的时候依次调用函数就可以了。
2.面向对象
什么是数据结构?Java的数据结构有哪些?
1.数据结构,简单的就是计算机存储,组织数据的集合
(精心选择的数据结构可以带来更高的运行或者存储效率)
2.
1.数组:
数组是最简单,使用最频繁的数据结构。它是一种线性表 数据结构,用一组连续的内存空间来储存一组相同类型的数据
(数据是按照顺序储存在内存的连续空间内,由于数据是储存在连续空间内的,所以每个数据的内存地址都可以通过数组下标计算出来,从而直接访问数据)
优点:按照索引查询元素速度快,按照索引遍历方便
缺点:
1.数组储存空间的大小固定后无法扩容了,
2.数组只能存一种类型的数据,
3.添加,删除的操作慢,因为要移动其他元素
2.队列 Queue
特点是,先入先出,操作是两段进行的(相当于排队做核酸)
3.链表 Linked List
链表是 一种物理储存单元上非连续,非顺序的储存结构,链表有一系类节点组成,节点就是指链表中的每一个元素,每个节点包含两个数据(一个是存储元素的数据域(值) 另一个存储下一个节点地址的指针域)
假设上图中100-108是一块内存中连续地址的内存分布,假设101、103、106、107这几个内存地址都已经存储数据了,那剩下的100、102、104、105、108是不是就浪费呢,答案是否定的,我们可以使用链表的方式存储数据。
优点:
添加或者删除元素只需要改变前后两个元素节点的指针域指向地址即可,添加,删除比数组快
缺点:
因为有大量的指针域,占用空间大
查找时,要遍历,比数组慢
4.栈Stack
栈是一种数据程线性排列的数据结构,和上边的队列相反,特点是 先进后出 常说LIFO (Last in First Out)
栈的结构就像一个集装箱,越先放进去的东西越晚才能拿出来,所以,栈常应用于实现递归功能方面的场景,例如斐波那契数列。
5.树Tree
树形结构是一种层级的数据结构,由顶点(节点) 和 连接他们的边组成
1.二叉树 (如果是顺序插入的,则会形成一个单向链表)
缺点:顺序插入时,会形成一个链表,查询性能大大降低(大数据也慢)
2.红黑树(平衡二叉树)
特点:
缺点:
大数据量情况下,层级较深,检索速度慢
3.B-Tree(是一种多叉路衡查找树,相对于二叉树)
以一颗最大度数(max-degree)为5(5阶)的b-tree为例,那这个B树每个节点最多存储4个key,5个指针
特点:
5阶的B树,每一个节点最多4个Key,5个指针
一旦节点存储的key数量到达5,就会裂变,中间元素向上分裂。
非叶子节点和叶子节点都会存放数据。
4.B+Tree
B+Tree是B-Tree的变种,我们以一颗最大度数(max-degree)为4(4阶)的b+tree为例,
绿色框框起来的部分,是索引部分,仅仅起到索引数据的作用,不存储数据。
红色框框起来的部分,是数据存储部分,在其叶子节点中要存储具体的数据。
特点:
1.所有节点都会出现在叶子节点
2.叶子结点形成一个单向链表
3.非叶子节点仅仅起到索引数据作用,具体的数据都是在叶子节点存放的
数据结构还有好多。。
什么是OOP?
面向对象编程
类与对象的关系?
面向对象的特征?【重要】
多态产生条件:1.有继承或者实现的关系2.有方法的重写3.父类的引用指向子类对象多态下成员变量 和 方法:
*******成员变量: 编译看左边 执行看左边****** *******成员方法: 编译看左边 执行看右边******多态的好处 和 弊端:
好处:
1.作为形参 : 扩大了形参 接收 范围。
2.作为返回值:扩大了接收返回值类型的范围。
弊端:
不能使用子类特有特征;
多态转型:
1.向上转型:zi 》fu
举例:Father f = new Son(); 多态
2.向下转型:
需要强转:
Son s = (Son)f;
强转有风险
有类型转换异常可能 ClassCastExeption
dog 无法转换 cat
引用关键字 instanceof 判断 是XXX 类型的吗
Java中的基本数据类型?
Java语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的 数据类型 也分配了不同的 内存空间 ,
所以它们表示的 数据大小 也是不一样的。
什么是隐式转换,什么是显式转换 ?【重要】
基本数据类型之间的运算
* 1.自动数据类型的提升(不包含boolean)
* byte . char . short --> int --> long --> float --> double2.强制数据类型的转换(格式:(目标类型) 数据)
* double d1 = 12.9;
* int i1 = (int)d1;
强制类型转换 (范围大的 转 范围小的)
举例:int a = (int)1.5;
将 double 类型的1.5 强转为1;
在 赋值给 a
char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型
float f=3.4;是否正确?
自动拆箱和自动装箱[重要]
自动装箱: 将 基本数据类型 自动转换 为 对应的包装类型(valueof)
/*
* 自动 装箱:
* 将 基本数据类型 自动转换 为 对应的包装类型
* 比如: Integer i = 123;
* 底层: 将基本数据类型 的123 自动转换(valueOf) 为 包装类型
* 叫自动装箱
*
*
* */
Integer i = 123;
Integer integer = Integer.valueOf(122);
自动拆箱: 包装类 类型 转换 为对应的 基本数据类型(XXX.intValue())
/*
* 自动拆箱 : 包装类 类型 转换 为对应的 基本数据类型
*
* 比如说: int a = 1;
* 将引用类型i 自动转换 (i.intValue()) 成基本数据类型
*
*
*
* */
Java中的包装类都是那些?
instanceof关键字的作用
instanceof关键字是判断instanceof左边的对象是否属于右边的类型(用于引用类型的判断结果为true或false)
instanceof前面的对象所属的类是后面类型的类或者是其子类的话,判断结果为true,否则为false
一个java类中包含那些内容?
属性、方法、内部类、构造方法、代码块。
访问修饰符 public,private,protected,以及不写(默认)时的区别?【重要】
局部变量和成员变量的区别?
1.局部变量:方法内,没有默认值(使用前必须赋值),栈中,方法调用
2.成员变量:类中方法外,有默认值,堆中,对象创建而创建
重载(Overload)和重写(Override)的区别?【重要】
重载(Overload)发生在同一个类中,同一方法名,不同的形参列表(个数,顺序,参数类型)
(与返回值和访问修饰符无关)
重写(Override)父子类中,子类对父类方法进行重写,方法体不同,方法声明一样
equals与==的区别?【重要】
== 作用:
基本数据类型:比较的是值是否相同
引用数据类型:比较的是地址值是否相同
equals作用:
引用类型:默认情况下,比较的是地址值
特:String,Integer,Date这些类库中equels被重写,比较的是内容而不是地址值
++i与i++的区别
数组实例化有几种方式?
Java中各种数据默认值
Byte,short,int,long 默认是都是 0Boolean 默认值是 falseChar 类型的默认值是 ’’Float 与 double 类型的默认是 0.0对象类型的默认值是 null
Java常用包有那些?【重要】
Java . langJava . ioJava . sqlJava . utilJava . awtJava . netJava . math
Object类常用方法有那些?
Java中所有的类都有一个共同的祖先。这个祖先就是Object类
EqualsHashcodetoStringwaitnotifyclonegetClass
java中有没有指针?
有指针,但是隐藏了,开发人员无法直接操作指针,由jvm来操作指针
构造方法能不能显式调用?
内部类与静态内部类的区别?
定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明 为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现特定的接口。外部类按常规的类访问方式使用内部 类,唯一的差别是外部类可以访问内部类的所有方法与属性,包括私有方法与属性。
1.静态内部类可以有静态成员(方法,属性),而非静态内部类则不能有静态成员(方法,属性)。
* 2.静态内部类只能够访问外部类的静态成员,而非静态内部类则可以访问外部类的所有成员(方法,属性)。
Static关键字有什么作用?【****】
Static可以修饰内部类、方法、变量、代码块
Static修饰的类是静态内部类Static修饰的方法是静态方法,表示该方法属于当前类的,而不属于某个对象的,静态方法也不能被重写,可以直接使用类名来调用。在 static方法中不能使用this或者super关键字。Static修饰变量是静态变量或者叫类变量,静态变量被所有实例所共享,不会依赖于对象。静态变量在内存中只有一份拷贝,在JVM加载类 的时候,只为静态分配一次内存。Static 修饰的代码块叫静态代码块,通常用来做程序优化的。静态代码块中的代码在整个类加载的时候只会执行一次。静态代码块可以有多 个,如果有多个,按照先后顺序依次执行。
final在java中的作用,有哪些用法?【****】
final 也是很多面试喜欢问的地方 , 但我觉得这个问题很无聊 , 通常能回答下以下 5 点就不错了 :1. 被final修饰的类不可以被继承2. 被final修饰的方法不可以被重写3. 被final修饰的变量不可以被改变【常量】 . 如果修饰引用 , 那么表示引用不可变 , 引用指向的内容可变 .4. 被 final 修饰的方法 ,JVM 会尝试将其内联 , 以提高运行效率5. 被final修饰的常量,在编译阶段会存入常量池中 .除此之外 ,编译器对 final 域要遵守的两个重排序规则更好 :在构造函数内对一个 final 域的写入 , 与随后把这个被构造对象的引用赋值给一个引用变量 , 这两个操作之间不能重排序初次读一个包含 final 域的对象的引用 , 与随后初次读这个 final 域 , 这两个操作之间不能重排序
StringString StringBuffer 和 StringBuilder 的区别是什么?【重要】
String是字符串常量,用final修饰,不能继承(少量操作)
StringBuffer字符串变量(线程安全)(多线程大量操作) synchronized关键字
StringBuilder字符串变量(非线程安全)
讲下java中的math类有那些常用方法?
。。。。
String类的常用方法有那些?
什么是接口?为什么需要接口?接口特点?
接口就是某个事物对外提供的一些功能的声明,是一种特殊的java类,接口弥补了java单继承的缺点
接口中声明全是 public static fifinal 修饰的常量接口中所有方法都是抽象方法接口是没有构造方法的接口也不能直接实例化接口可以多继承
抽象类和接口的区别?【重要】
不断更新