八股文整理

1.Java基础

1.1 Java语言有哪些特点

  • 1.==简单易学==(简化版C++)

  • 2.==面向对象==【封装(就是可以通过权限修饰符将属性设置权限,这样只能通过get/set方法获取),继承(父类和子类之间具有继承关系,子类可以继承父类的方法和属性,并且在此基础上进行修改),多态(编译看左边,运行看右边)】

  • 3.==平台无关性==(Java虚拟机实现平台无关性)

  • 4.==支持多线程==(Java支持多线程)

  • 5.==可靠性==(Java具备异常处理和自动内存管理机制)

  • 6.==安全性==(Java提供权限修饰符,限制程序直接访问操作系统资源)

  • 7.支持==网络编程==

  • 8.==跨平台性==:只要操作系统安装jvm就可以运行java程序 (一次编写,随处运行)

1.2 Java三个版本的比较

image-20240105211658267

  • ==Java SE(Java Platform,Standard Edition)==: Java 平台==标准版==,Java 编程语言的基础,它包含了支持 Java 应用程序开发和运行的核心类库以及虚拟机等核心组件。Java SE 可以用于构建==桌面应用程序== / ==简单的服务器应用程序==

  • ==Java EE(Java Platform, Enterprise Edition )==:Java 平台==企业版==,建立在 Java SE 的基础上,包含了支持==企业级应用程序开发==和部署的标准和规范(比如 Servlet、JSP、EJB、JDBC、JPA、JTA、JavaMail、JMS)。 Java EE 可以用于构建分布式、可移植、健壮、可伸缩和安全的服务端 Java 应用程序,例如 Web 应用程序

  • ==Java ME== 是 Java 的微型版本,主要用于开发==嵌入式消费电子设备的应用程序==,例如手机、PDA、机顶盒、冰箱、空调等。Java ME 无需重点关注,知道有这个东西就好了,现在已经用不上了。

简单来说,Java SE 是 Java 的基础版本,Java EE 是 Java 的高级版本。Java SE 更适合开发桌面应用程序或简单的服务器应用程序,Java EE 更适合开发复杂的企业级应用程序或 Web 应用程序

1.3 JVM & JDK & JRE 三者对比

image-20240105212044287
  • ==JDK==: Java程序开发工具包=jre+开发人员使用的工具(例如javac编译工具)
  • ==JRE==: Java程序运行时环境=jvm+运行时需要的核心类库 [有了jre其实就可以运行代码]
  • ==JVM==: 运行Java字节码的虚拟机,JVM针对不同系统有特定实现(使用相同的字节码.class,得出相同结果) –> 一次编译,随处可以运行

    image-20240105213023670

1.4 字节码(.class文件)

==字节码==:JVM可以理解的代码,不面向任何特定的处理器,只面向虚拟机JVM。

  • Java程序执行过程:
image-20240105213658490

引入==JIT编译器(运行时编译)==,完成第一次编译之后就会将字节码对应的机器码保存下来,下次可以直接使用。机器码效率 > java解释器,所以Java是编译和解释共存的语言

image-20240105213914539

HotSpot 采用了==惰性评估(Lazy Evaluation)==的做法,根据==二八定律==,消耗大部分系统资源的只有那一小部分的代码(热点代码),而这也就是 JIT 所需要编译的部分。JVM 会根据代码每次被执行的情况收集信息并相应地做出一些优化,因此执行的次数越多,它的速度就越快。

JDK、JRE、JVM、JIT 这四者的关系如下图所示

image-20240105214120303

1.5 Java语言是”编译和解释并存”

这是因为 Java 语言既具有编译型语言的特征,也具有解释型语言的特征。

因为 Java 程序要经过==先编译,后解释==两个步骤,Java 编写的程序需要先经过编译步骤,生成字节码(.class 文件),这种字节码必须由 Java 解释器来解释执行

1.6 Java和C++区别

Java 不提供指针来直接访问内存,程序内存更加安全

Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。

Java 有自动内存管理垃圾回收机制(GC),不需要程序员手动释放无用内存。

C ++同时支持方法重载和操作符重载,但是 Java 只支持方法重载(操作符重载增加了复杂性,这与 Java 最初的设计思想不符)。

1.7 Java三种注释

  • ==单行注释== 通常用于解释方法内某单行代码的作用
  • ==多行注释== 通常用于解释一段代码的作用
  • ==文档注释(Java特有)== 通常用于生成 Java 开发文档
image-20240105215518448

注释并不会执行(编译器在编译代码之前会把代码中的所有注释抹掉,字节码(.class)中不保留注释)

代码的注释不是越详细越好。实际上好的代码本身就是注释,我们要尽量规范和美化自己的代码来减少不必要的注释。

若编程语言足够有表达力,就不需要注释,尽量通过代码来阐述

1.8 Java结构和格式

  • Java结构和语法格式
1
2
3
4
5
6
7
8
9
10
权限修饰符 class 类名{
权限修饰符 方法1(){ //每一级都需要缩进 每一级都需要{}配对
语法1;
语法2;
}
权限修饰符 方法2(){
语法1;
语法2;
}
}
  • Java程序入口 –main方法
1
2
3
4
5
6
7
8
9
public static void main(String[] args){
//解释说明:
public:公共的,用它修饰的类或成员在任意位置可见 [权限修饰符]
static:静态的,用它修饰的方法,可以不用创建对象就可以调用 [标识了静态就可以调用静态和非静态的,但是非静态的只能调用非静态的]
void:表示该方法没有返回值 [return;即可]
main:Java的主方法名,JavaSE的程序入口
String[]:字符串数组,这是main方法的形参类型,可以通过命令行参数传值
args:这是main方法的形参名,如果要在main中使用命令行参数,可以遍历该args数组。
}
  • Java程序输出
1
2
3
4
5
6
//有两种情况
//1.换行 --输出内容(可以忽略)
System.out.println(输出内容);

//2.不换行 --输出内容(不可以忽略)
System.out.print(输出内容);
  • 源文件名和类名

    • ==一致性==:

      如果一个类写了很多类,==源文件名(.java)必须和public的class类名一致==(不一致会编译报错),可以和其他类不一致(不便于代码维护)

    • ==多样性==:

      一个源文件可以有多个类,但是一个源文件只有一个public类

1.9 标识符和关键字

  • ==标识符==:只要你自己要定义的都可以叫做标识符
    • 区别大小写
    • 长度无限制
    • 只能由这四种组成:
      • ①26个英文字母 (可以当做开头)
      • ②数字0-9 【如果可做开头的话就不知道指代数字本身还是变量所对应的值 int 123L=12; long l=123L; 这样的话l最后是123还是12】
      • ③ 下划线_ (可以当做开头)
      • ④ 美元符号$ (可以当做开头)
    • 可以包含关键字和保留字,但是不可以使用
    • 四种情况的命名规范:
      • ①包名 —所有的字母都小写 — java.lang com.at.bean
      • ②类名/接口名 —所有的单词首字母大写 —ShopController
      • ③变量名/方法名 —第一个单词的首字母小写,后面的单词首字母都大写 —getById()
      • ④常量名 —所有的字母大写,中间用下划线连接 — MAX_SHOP_VALUES
  • ==关键字==: 专门用途的字符串/单词
    • 全部为小写,一共有50个(const和goto是保留字,true和false和null是字面量)
image-20240105221810897

其中,default可以在程序控制,可以当做修饰符,还可以设置为访问权限

在程序控制中,当在 switch 中匹配不到任何情况时,可以使用 default 来编写默认匹配的情况。

在类,方法和变量修饰符中,从 JDK8 开始引入了默认方法,可以使用 default 关键字来定义一个方法的默认实现。

在访问控制中,如果一个方法前没有任何修饰符,则默认会有一个修饰符 default,但是这个修饰符加上了就会报错。

1.10 自增自减运算符

1.11 移位运算符

1.12 阿松大

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 1.Java基础
    1. 1.1. 1.1 Java语言有哪些特点
    2. 1.2. 1.2 Java三个版本的比较
    3. 1.3. 1.3 JVM & JDK & JRE 三者对比
    4. 1.4. 1.4 字节码(.class文件)
    5. 1.5. 1.5 Java语言是”编译和解释并存”
    6. 1.6. 1.6 Java和C++区别
    7. 1.7. 1.7 Java三种注释
    8. 1.8. 1.8 Java结构和格式
    9. 1.9. 1.9 标识符和关键字
    10. 1.10. 1.10 自增自减运算符
    11. 1.11. 1.11 移位运算符
    12. 1.12. 1.12 阿松大
,