java八股文笔记

文章目录

  • 零、java八股文指什么
  • 一、java基础
    • 1.1 java简介
    • 1.2 java语言有哪些特点
    • 1.3 关于JVM,JDK,JRE的解答
    • 1.4 java和C++的区别
    • 1.5 面向对象
    • 1.6 java中类、方法、对象的关系
    • 1.7 java基本数据类型
    • 1.8 final,finally,finalize的区别
    • 1.9 int和integer的区别
    • 1.10 重载和重写的区别
    • 1.11 抽象类和接口有什么区别
    • 1.12 ==和equals的区别
    • 1.23 两个对象的hashCode()相同,则equals()也一定为true,对么li>
    • 1.24 String属于基础数据类型么
    • 1.25 java中操作字符串有哪些类型之间有什么区别li>
    • 1.26 `String str = ‘i’`与String str = new String(“i”)一样吗li>
  • 容器
    • list、set、map之间的区别
    • 并发和并行

零、java八股文指什么

java八股文,是指(1)Java 基础知识,(2)java几何框架,(3)java多线程,(4)java虚拟机,(5)MySql,(6)Spring相关,(7)计算机 络;(8)MQ消息队列,(9)Redis,(10)Ngnix 等一系列相关知识。很多很杂。

一、java基础

1.1 java简介

java是什么:
? ?Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

java的创立者:
? ?任职于Sun公司(Stanford University Network斯坦福 络公司)的詹姆斯·高斯林和麦克·舍林丹等人于1990年代初开发Java语言的雏形,最初被命名为Oak,Oak的目标是作为家用电器等小型系统的编程语言,用于电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联 的发展,Sun公司发现Oak在互联 上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。伴随着互联 的迅猛发展,Java逐渐成为重要的 络编程语言。

java的三大版本:
Java SE(J2SE,Java 2 Platform Standard Edition,标准版)
? ?Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为Java EE和Java ME提供基础。

Java EE(J2EE,Java 2 Platform Enterprise Edition,企业版)
? ?Java EE 以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web2.0应用程序。2018年2月,Eclipse 宣布正式将 JavaEE 更名为 JakartaEE

Java ME(J2ME,Java 2 Platform Micro Edition,微型版)
? ?Java ME 以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的 络协议以及对可以动态下载的连 和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

语言特点与应用场景
? ?Java语言具有简单性、面向对象、分布式、健壮性、安全性、跨平台性、可移植性、多线程与动态性等特点。Java语言可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统等 。Java 快速、安全、可靠。从笔记本电脑到数据中心,从游戏控制台到超级计算机,从手机到互联 ,Java 无处不在。

1.2 java语言有哪些特点

(1)简单易学;
(2)面向对象(封装,继承,多态);
(3)平台无关性( Java 虚拟机实现平台无关性);
(4)可靠性;
(5)安全性;
(6)支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持);
(7)支持 络编程并且很方便( Java 语言诞生本身就是为简化 络编程设计的,因此 Java 语言不仅支持 络编程而且很方便);
编译与解释并存;

1.3 关于JVM,JDK,JRE的解答

JRE和JDK的区别

1.4 java和C++的区别

  • 都是面向对象的语言,都支持封装、继承和多态
  • Java 不提供指针来直接访问内存,程序内存更加安全
  • Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。
  • Java 有自动内存管理机制,不需要程序员手动释放无用内存

1.5 面向对象

(0)面向对象和面向过程。
面向过程的开发方法也称结构化开发方法,基本思想是软件功能的分解和抽象。把系统功能进一步分解为若干子模块,自顶向下地对系统进行分析和设计,逐步求精。

面向对象的开发方法是一种把面向对象的思想应用于软件开发过程中,代码和数据被合并成一个不可拆分的单元,也就是一个对象。

我的另一篇博客

面向对象技术包括面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP)三部分。面向对象方法有几个需要遵循的基本原则:即抽象、封装、继承和多态

(1)封装
封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。其目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。

在java中,有3种修饰符:public,private,protected,每一种修饰符给其他的位于同一个包或者不同包下面赋予了不同的访问权限。

封装的优点

  • 通过隐藏对象的属性来保护对象内部的状态。
  • 提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。
  • 禁止对象之间的不良交互提高模块化

(2)继承
子类继承父类,增强系统的可重用,减少重复。

(3)多态
同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。
多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次。

(4)抽象
抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。 Java 支持创建只暴漏接口而不包含方法实现的抽象的类。这种抽象技术的主要目的是把类的行为和实现细节分离开。

1.6 java中类、方法、对象的关系

类:一类事务的抽象,猫这类动物
对象:类产生的功能相似的实体,某一只猫
方法:对象的某一功能属性,猫会爬树
类:

1.7 java基本数据类型

整型:byte(8),short(16),int(32),long(64)
浮点型:float(32),double(64)
布尔型:boolean(8)
字符型:char(16)

1.8 final,finally,finalize的区别

(1)final
修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重写。

(2)finally
在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch 子句就会执行,然后控制就会进入 finally 块(如果有的)。

(3)finalize
方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

1.9 int和integer的区别

int 是基本数据类型
Integer是其包装类,注意是一个类。

这里是引用为什么要提供包装类呢
一是为了在各种类型间转化,通过各种方法的调用。否则你无法直接通过变量转化。
比如,现在int要转为String

1.10 重载和重写的区别

重载和重写的区别
重载(overload):发生在一个类中。

  1. 参数类型、个数、顺序至少有一个不相同。
  2. 不能重载只有返回值不同的方法名。
  3. 存在于父类和子类、同类中。
    重写(overwrite):针对继承的。子类对分类的方法进行重新编写,外壳不变,核心重写。
  4. 方法名、参数、返回值相同。
  5. 子类方法不能缩小父类方法的访问权限。
  6. 子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
  7. 存在于父类和子类之间。
  8. 并发和并行

    添加链接描述

    参考链接

    参考链接

    文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93767 人正在系统学习中

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月5日
下一篇 2021年10月5日

相关推荐