java基础知识点总结(一)

java基础知识点总结(一)打算重新看看 java 基础 把开始学的时候模糊的概念理清楚 不定时更新 一 环境篇 1 JDK 和 JRE 三个概念 JDK javadevelopm java 开发工具 JRE javaruntimee java 运行时环境 JVM javaVirtualM java 虚拟机 a JDK JDK 就是我们开发人员使用的开发工具 它里面包含了 JRE JVM 和基础类库 所以编程的话只需要安装 JDK 配置环境变量 path 路径就可以了 b

打算重新看看java基础,把开始学的时候模糊的概念理清楚,尤其我的好闺蜜也开始学java了,整理一份给她~ (不定时更新)

java SE概览

其实就是javaSE必须要掌握的知识点,见目录

一、环境篇

1. JDK和JRE

a. JDK:
JDK就是我们开发人员使用的开发工具,它里面包含了JRE、JVM和基础类库。所以编程的话只需要安装JDK,配置环境变量,path路径就可以了。
b. JRE:
JRE是运行环境,如果说我们写完的java程序需要部署到客户的服务器上运行,当然客户是不需要开发的,那我们仅安装JRE就可以,当然JRE里包含JVM,运行环境嘛,肯定要运行到JVM虚拟机上。JRE的lib目录中放了一些java类库的class文件。
c. JVM:
JVM:java虚拟机,JVM上会运行java编译的class文件,当然它在运行解释class时会调用类库还完成运行,也是因为JVM,我们的java才能完美的跨平台,因为它让java程序只需要在JVM上运行而不是操作系统平台本身。










2. 为什么要配置PATH环境变量

答:为了在命令行窗口下编译和运行Java程序!

为什么说在命令行窗口下呢,因为比如近几年喜欢用的IDEA,我们可以不配置环境变量,仅仅在IDEA的settings里面配置好jdk的安装目录,就可以运行使用了。但是如果不配置环境变量,我们在命令行窗口下是无法编译运行我们写好的java源文件(不在编译程序的文件夹下),为什么呢?

开发人员编写的java文件是无法被计算机识别的,需要JDK中的编译程序javac.exe来进行编译,那么除非我们将我们的源码放到编译程序所在目录下,否则不配置环境变量的情况下,系统根本无法找到我们的源码位置,所以编译程序也就无法完成编译。javac是不是很熟悉,开始学java的时候,老师教我们的判断环境变量部署是否成功,就可以输入javac,如果配置错误,会出现以下:在这里插入图片描述
这个就是经典的jdk安装成功但路径配置错误。
经过以上解释,我们配置环境变量的原因就是能够让我们在任何文件夹下都能用执行java命令,包括编译程序以及其他可执行文件。




3. classpath环境变量是什么,为什么已经不需要配置了

以前配置变量时,一个要配置PATH变量(指定java位置),另一个要配置classpath环境变量。那么这个变量又是来做什么的呢?跟PATH变量有何区别?

但是很多人会发现,我们现在一般不会去配置classpath这个变量,这是因为JDK1.5版本之后,JRE可以自动检索当前文件夹下的class文件,并且自动加载上述两个工具类库,因此我们再也不需要配置classpath变量了。

4. %JAVA_HOME%是什么,必须设置吗?

二、java五大特点

  1. java概念简单,了解一些基本概念就可以编写应用程序。
  2. 面向对象,java是面向对象语言,万物皆对象,每个对象都有自己的类型,都可以实例化。
  3. 分布式,支持internet开发,提供用于网络应用编程的类库
  4. 安全,java提供安全机制以防恶意代码攻击。
  5. 健壮,java不支持指针,可以避免指针操作中的错误。还包括强类型和异常处理、废料自动回收等。

三、八大基础数据类型

四、继承、多态、封装

1. 继承

面向对象语言类和类关系的一种,继承就是子类继承父类的特征行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
简单来说就是为了避免重复代码,在父类定义一些方法,它的每个孩子都必须要继承的,但是子类自己的方法体内可以不同。

继承的特性:

  • 子类拥有父类非 private 的属性、方法。
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
  • 子类可以用自己的方式实现父类的方法。
  • Java 只能单继承,不能多继承,但是可以多重继承。
    在这里插入图片描述

2. 封装

3. 多态

  • 继承
  • 重写
  • 父类指向子类对象Parent p = new Child();

五、关键字

  1. extends:继承,单继承
  2. implements:实现,可以多实现
  3. super:引用当前对象的父类,实现对父类成员的访问
  4. this:指向自己的引用
  5. final:最终,final修饰的类不能被继承,修饰的方法不能被重写
  6. native:native充当JAVA语言与除JAVA之外的其他语言编写的代码块或库之间的链接,这可能取决于您操作的机器。如果将native关键字应用于一个方法,那么这意味着该方法将通过JNI(JAVA native interface)使用其他语言(如C或C++)编写的本机代码来实现。
  7. throw/throws:用于抛出异常,throw在方法体内使用,throws在方法末尾处使用
import java.io.*; public class aaa { 
     public void method1(String param) throws Exception { 
     // 方法体 } public void method2(String param) { 
     // 方法体 throw new RemoteException(); } } 
  1. abstract:抽象的 ,可以用来修饰的结构:类、方法。
  2. static:静态,静态对象不需要依赖任何对象就可以访问

六、抽象类和接口

抽象类的特点:

  1. abstract修饰类
  2. 不能被实例化
  3. 可以有抽象方法,也可以有普通方法,但是有抽象方法的类一定是抽象类,普通类不允许有抽象方法
  4. 如果非抽象类继承了抽象类,必须要实现抽象类内全部的抽象方法
  5. 抽象方法不能被static、final修饰

七、堆和栈

JVM在运行时会在内存中开辟一片内存区域

 JVM内存: 1. 寄存器 2. 本地方法区 3. 方法区 4. 栈内存 5. 堆内存。 

栈内存: 栈内存存储的都是局部变量,一般来说先加载函数才能进行局部变量的定义,所以方法先进栈,然后再定义变量,一旦离开变量作用域,就会被释放。

堆内存: 存储的是对象,凡是new建立的都是在堆中,堆中存放的都是实体(对象)。实体用于封装数据,对象内的成员变量也存储在堆中。如果一个数据消失,这个实体也没有消失,还可以用,所以堆是不会随时释放的,但是会被Java的垃圾回收机制不定时的回收。

八、拷贝

有时候需要对一个对象进行处理,但是又不想改变原有的对象,那么就要将对象拷贝成一个新的对象并操作新对象。

九、java常用类

十、异常

1. 什么是异常

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。

2. 异常类型

  • 检查性异常: 最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
  • 运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
  • 错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

3. 异常捕获

异常用 try catch来捕获
多重捕获:

try{ 
     // 程序代码 }catch(IOException e1){ 
     // 程序代码 }catch(NullPointerException e2){ 
     // 程序代码 }catch(异常类型3 异常的变量名3){ 
     // 程序代码 } 

4. Throwable类的主要方法:

在这里插入图片描述

5. 自定义异常

如果要写一个检查性异常类,需要继承 Exception 类。如果要写一个运行时异常类,需要继承 RuntimeException 类。

class MyException extends Exception{ 
     // 属性 // 方法体 } 

十一、集合

java的集合框架主要包括两种类型的容器,CollectionMap。Collection来存储元素集合,Map来存储键值对。简单来说集合就是长度可变的容器,用来存储对象的。
在这里插入图片描述
接口部分:




  • Iterator:集合的输出接口,用于遍历集合中的元素,也就是迭代器。
  • Collection:一般不直接用Collection,存储一组不唯一无序的对象。
  • List:最常用的接口,可以通过索引访问元素,存储一组不唯一有序的对象,类似数组。
  • Set:无序的Collection,存储唯一无序的对象。
  • Queue:队列,类似List
  • Map:存储键值对象,key->value形式存储

接口实现类部分:

  • ArrayList:最常用的list,查询快,插入删除慢,有序、非线程安全,支持序列化,底层实现数组
  • LinkedList:顺序访问速度快,但是随即访问速度慢,有序、非线程安全,底层实现链表,插入删除快,查询慢
  • vector:类似ArrayList,线程安全,底层数组,查询快,增删慢,效率低
  • HashMap:最常用的Map,用Hash算法存取对象,jdk1.8后底层是数组+链表+红黑树
  • TreeMap:可对对象排序,底层红黑树
  • Hashtable:同步,线程安全
  • HashSet:优化了查询速度,基于HashMap实现
  • TreeSet:是一个有序的Set,底层实现二叉树

十二、数据结构

集合里每个实现类底层都有自己实现的数据结构,这里简单介绍几种数据结构:

1. 栈:

先进后出,入口出口在同一侧,(像矿泉水瓶,只有一个口),入栈数据:123,出栈数据:321

2. 堆:

3. 数组:

数组地址是连续的,长度固定,通过数组的首地址找到对应的数组,然后用索引来查找数组中的元素,但是如果想对数组进行增/删操作,必须创建一个新的数组,把原来的数据复制过来,形成新数组后,销毁原数组,所以查询快,增删慢

4. 队列:

不同于栈,队列是先进先出,入口出口分布在集合的两侧,存储数据:123,取出数据:123,(类似排队安检)

5. 链表:

跟数组相反,链表中的地址不连续,每次查询元素都需要从头开始查询,但是增删对整体结构无影响,所以查询慢,增删快

6. 树:

树详解https://zhuanlan.zhihu.com/p/

7. 图:

8. 散列表(哈希表):

数据结构原理:https://www.cnblogs.com/javastack/p/13474377.html

下一博客:
java基础知识点总结(二)泛型、IO流、多线程


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228676.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午6:27
下一篇 2026年3月16日 下午6:27


相关推荐

  • 电容的分类及作用_热敏电阻的工作原理及作用

    电容的分类及作用_热敏电阻的工作原理及作用旁路旁路电容是为本地器件提供能量的储能器件,它能使稳压器的输出均匀化,降低负载需求。就像小型可充电电池一样,旁路电容能够被充电,并向器件进行放电。为尽量减少阻抗,旁路电容要尽量靠近负载器件的供电电源管脚和地管脚。这能够很好地防止输入值过大而导致的地电位抬高和噪声。地电位是地连接处在通过大电流毛刺时的电压降。去耦去耦,又称解耦。从电路来说,总是可以区分为驱动的源和被驱动的负载。如果

    2022年8月22日
    7
  • java stream toArray()

    java stream toArray()发现java使用stream时,经常会将map后的数据输入到数组中,这时一般在stream语句后面加上toArray().

    2022年5月15日
    39
  • C语言 文件读写的实现

    C语言 文件读写的实现关于C语言的文件读写,我将介绍下面这几种方式:字符的读写:使用fgetc()函数和fputc()函数;字符串的读写:使用fgets()函数和fputs()函数;格式化的读写(主要用于文本文件):使用fscanf()函数和fprintf()函数。字符读写:1.fputc()函数fputc(c,fp);//用于将一个字符写入文件其中,…

    2022年5月5日
    54
  • 消息总线VS消息队列

    消息总线VS消息队列将消息队列跟消息总线进行了对比 并说明了对于企业应用 封装消息总线的必要性

    2026年3月18日
    2
  • 效率狂飙:用十分钟时间,解锁 MCP+Cursor 开发姿势

    效率狂飙:用十分钟时间,解锁 MCP+Cursor 开发姿势

    2026年3月16日
    3
  • SQL datetime和smalldatetime区别

    SQL datetime和smalldatetime区别datetime存储大小8个字节,精确到分后的3为小数,日期范围从1753年1月1日到9999年12月31日;而smalldatetime存储大小为4个字节,精确到分,日期范围从1900年1月1日到2079年6月6日。参考http://msdn.microsoft.com/zh-cn/library/ms187819%28v=…

    2022年7月27日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号