Java基础知识点01-20(持续更新~)

简介: Java基础知识点01-20(持续更新~)

1、JDK与JRE

JDK

我们把Java编程语言、Java API类库和Java虚拟机三部分统称为JDK(Java Development Kit),JDK包括:JRE,Java基本类库,Java开发工具如编辑器、调试器等。JDK是用于支持Java程序开发的最小环境。


JRE

我们把Java API类库中的Java SE API 子集和Java虚拟机两部分统称为JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境。

二者区别与联系

JDK范围涵盖JRE,JRE是JDK的子集。如果仅仅是运行Java程序,用户计算机仅需配置JRE;如果用户想要自己开发Java程序,那么则需要安装配置JDK。

2、JVM

机器与编译程序之间一层抽象的虚拟机器,在任何平台上都提供给编译程序一个共同的接口,编译程序只需要面向虚拟机,由解释器将虚拟机代码转换为特定系统的机器码执行。


3、Java与C++的区别

  1. Java提供了对内存的自动垃圾回收,程序员无需在程序中进行分配、释放内存的操作;
  2. Java去除了指针,用诸如引用的方法来代替,避免了赋值语句与逻辑运算语句混淆;
  3. Java没有类的多重继承,但有接口的多重继承。


4、声明变量

  1. 指定在内存中分配空间的大小;
  2. 规定这个变量所能接受的运算。


5、Java中的数据类型

基本数据类型

数值型

整数类型(byte 8位,short 16位,int 32位,long 64位)

浮点类型(float 32位,double 64位)

字符型(char 16位)

布尔型(boolean 1位)

引用数据类型

类(class)

接口(interface)

数组(array)


6、Unicode编码

Java中默认采用的编码方式是Unicode编码,是一种十六进制编码,可以表示世界上任意一种文字信息。所以Java中的单个char可以保存中文字符(2字节),而在C/C++中,中文字符只能当作字符串处理。


7、短路逻辑运算

&&、|| ,先对左边的语句进行判断,符合运算符要求后再判断右边语句,否则直接退出运算。

8、null值

基本数据类型有默认值,无法将null赋值给基本数据类型变量。

9、封装、继承与多态

封装

封装是一种信息隐蔽技术,使数据和加工该数据的方法封装为一个整体,以实现独立性很强的模块,使用户只能看到对象的外特性(对象能接收哪些消息,具有哪些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者与对象的使用者分开,使用者不必知晓其行为实现的细节,只需使用设计者提供的消息来访问对象。

良好的封装可以提高代码的模块化程度,防止对象之间的不良的相互影响,使程序达到高内聚(许多功能尽量在类内部独立完成,不让外部干预),低耦合(提供给外部尽量少的方法调用)的终极目标。


继承

子类共享其父类数据和方法的机制,可以对父类进行扩展,是我们非常方便地复用以前的代码。

多态

对象根据所接收的消息而做出动作,不同的对象接收相同的消息会做出不同的动作。

在Java中,分为方法的多态性与对象的多态性。


方法的多态性

重载与重写

重载是指两个方法具有相同的方法名,但是入参的个数或类型或顺序不同,那么传入参数时会调用相应的方法;

重写是指子类继承父类时,拥有与父类方法的入参及返回值类型完全相同的方法,但子类的该方法接收消息时会执行子类的方法;


对象的多态性

对象的多态性主要体现在父子类对象之间的相互转型。

10、栈内存与堆内存

在Java中,栈是由编译器自动分配和释放的一块内存区域,主要用于存放一些基本数据类型的变量,指令代码,常量及对象句柄(对象的引用地址)。


栈内存的操作方式类似于数据结构中的栈,优势在于它的存取速度较快,仅次于寄存器,栈中的数据还可以共享。缺点表现在栈中的数据大小与生存期必须是确定的,缺乏灵活性。


堆是一个程序运行动态分配的内存区域,在Java中,构建对象所需要的内存从堆中分配,放弃分配方式类似于链表。堆内存在使用完毕后,由垃圾回收器隐式回收。这一点上与C++不同,C++中堆内存的分配和回收都是显式的,由用户负责,如果用户申请了堆内存而在使用后忘记释放,则会产生“内存溢出”问题–可用内存存在,而其他用户无法使用。堆的优势在于动态分配内存大小,按需分配,其生存期也不必事先告诉编译器。在使用完毕后,Java的垃圾收集器会自动收走这些不再使用的内存块。其缺点为,由于要在运行时动态分配,相比于栈内存,存取速度较慢。


由于栈内存较小,如果不慎耗尽,则产生堆栈溢出 Stack Overflow问题。


堆内存使用不当则会产生内存碎片。回收堆内存时可能产生一些小块但不连续的内存,从而导致用户申请一块较大的堆内存时,虽然可用内存总和够大,但由于不连续导致申请失败。


11、final关键字的使用

  1. 使用final修饰的类无法被继承;
  2. 使用final修饰的ff无法被子类重写;
  3. 使用final修饰的变量无法被修改,即为常量。


12、使用final关键字的好处

  1. 使用final可以提升性能,JVM和Java应用都会缓存final变量;
  2. final变量可以安全地在多线程环境下共享,不需要额外的同步开销;
  3. 使用final关键字,JVM会对方法、变量及类进行优化;
  4. 可以创建不可变类(如String)。


13、抽象类

1.抽象类和抽象方法都必须用abstract关键字修饰;

2.抽象类不能实例化,不能直接用new关键字去产生对象;

3.抽象类定义抽象方法时只需声明,不需实现;

4.含有抽象方法的类必须被声明为抽象类,抽象类的子类必须重写抽象类中的所有抽象方法才能够实例化,否则这个子类仍然是抽象类。

5.抽象类中可以有构造方法,但只能在子类中调用,子类实例化对象时首先默认调用父类的构造方法,再调用子类的构造方法;

6.抽象类不能被final修饰;

7.外部抽象类不能使用static关键字修饰,但内部抽象类可以被static关键字修饰,使用static关键字修饰的内部抽象类表示一个外部类。


14、接口

  1. 接口中的数据成员必须初始化,且均为常量,常见的是全局变量;

2.接口中不能像抽象类一样定义普通方法,所有方法必须全为抽象方法;

3.接口中允许定义default方法;

4.接口必须有子类,子类可以同时实现多个接口;

5.接口的子类(如果不是抽象类)必须重写接口中的全部抽象方法;

6.接口与一般类一样,本身也具有数据成员(final可省略)与方法(abstrat可省略)


15、static关键字的使用

1.使用static关键字修饰属性:静态属性,类的公共属性,可直接用类名访问;

2.使用static关键字修饰方法:静态方法,可由类名直接调用;

注意:静态方法与非静态方法都可以使用static属性,但静态方法不能调用非静态属性!

3.static 主方法:Java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public,又因Java虚拟机在执行main()方法时不必创建对象,因此该方法必须是static的。该方法接受一个String类型的数组参数,该数组中保存了执行Java命令时传递给所运行的类的参数。


16、内部类

  1. 提供了更好的封装,把内部类隐藏在外部类之内,不允许同一个包中的其他类访问内部类;
  2. 内部类成员可以直接访问外部类的私有数据,但外部类不能访问内部类的实现细节,如成员变量;
  3. 匿名内部类适合用于创建那些仅需要创建一次的类;
  4. 使用static关键字修饰的内部类属于外部类本身,也就是外部类;


17、匿名对象

匿名对象使用一次后,就会被Java的垃圾回收器回收。

18、System类

Java不支持全局方法和全局变量,Java设计者将一些系统相关的重要方法和变量收集到了一个统一的类中,这就是System类。


System类中所有的成员都是静态的。


exit(int status)方法,提前终止JVM的运行;

currentTimeMillis方法,返回自1970年1月1日0时0分0秒起至今以ms为单位的时间,这是一个long类型的大数值;

getProperties方法获得当前虚拟机的环境属性。


19、RunTime类

程序运行时,在每一个JVM进程之中都会存在唯一一个Runtime类的实例化对象。这是一个明显的单例设计模式,将构造方法私有化了。在类内部存在一个static定义的方法,用于取得本类的实例化对象。

public static Runtime getRuntime();

取得Runtime类的实例化对象后,可以获得一些内存信息:


最大可用内存数:public long maxMemory();

总共可用内存数:public long totalMemory();

空闲内存数:public long freeMemory();

如果程序之中出现过多垃圾,则会影响性能,此时可以清除垃圾:


public void gc()。


20、正则表达式

public boolean matches(String regex) 将字符串与正则表达式匹配验证;

public String replaceAll(String regex, String replacement) 按正则全部替换;

public String replaceFirst(String regex, String replacement) 按正则替换首个;

public String[] split(String regex) 按指定正则拆分;

public String[] split(String regex, int limit) 按指定正则拆分为指定长度的字符串数组;

目录
相关文章
|
5月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
258 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
5月前
|
存储 Java 程序员
Java 基础知识点全面梳理包含核心要点及难点解析 Java 基础知识点
本文档系统梳理了Java基础知识点,涵盖核心特性、语法基础、面向对象编程、数组字符串、集合框架、异常处理及应用实例,帮助初学者全面掌握Java入门知识,提升编程实践能力。附示例代码下载链接。
225 0
|
5月前
|
Java 编译器 数据安全/隐私保护
Java 大学期末考试真题与答案 含知识点总结 重难点归纳及题库汇总 Java 期末备考资料
本文汇总了Java大学期末考试相关资料,包含真题与答案、知识点总结、重难点归纳及题库,涵盖Java基础、面向对象编程、异常处理、IO流等内容,并提供完整代码示例与技术方案,助你高效复习备考。
312 3
|
5月前
|
存储 缓存 安全
Java基础 - 知识点
Java基础知识点涵盖语言特性、面向对象与基本数据类型、缓存池机制、String类特性、参数传递、类型转换、继承、抽象类与接口区别、重写与重载、Object通用方法及关键字使用等核心内容,是掌握Java编程的重要基石。
104 0
|
6月前
|
存储 安全 Java
2025 年最新 40 个 Java 基础核心知识点全面梳理一文掌握 Java 基础关键概念
本文系统梳理了Java编程的40个核心知识点,涵盖基础语法、面向对象、集合框架、异常处理、多线程、IO流、反射机制等关键领域。重点包括:JVM运行原理、基本数据类型、封装/继承/多态三大特性、集合类对比(ArrayList vs LinkedList、HashMap vs TreeMap)、异常分类及处理方式、线程创建与同步机制、IO流体系结构以及反射的应用场景。这些基础知识是Java开发的根基,掌握后能为后续框架学习和项目开发奠定坚实基础。文中还提供了代码资源获取方式,方便读者进一步实践学习。
1795 2
|
6月前
|
并行计算 Java API
Java 入门循环结构基础知识点详解
摘要:本文介绍了Java现代循环技术的进阶应用,包括Stream API、响应式编程和模式匹配,展示了如何用Stream API替代传统循环进行声明式集合处理(如过滤、映射和并行计算),以及响应式编程在异步非阻塞场景下的优势。文章还通过电商订单处理系统的案例演示了这些技术的综合应用,并提供了性能优化建议,如合理使用并行处理和避免循环内对象创建。这些现代特性使Java代码更简洁、高效,更适合高并发和I/O密集型场景。
91 1
|
6月前
|
缓存 算法 NoSQL
校招 Java 面试高频常见知识点深度解析与实战案例详细分享
《2025校招Java面试核心指南》总结了Java技术栈的最新考点,涵盖基础语法、并发编程和云原生技术三大维度: 现代Java特性:重点解析Java 17密封类、Record类型及响应式Stream API,通过电商案例演示函数式数据处理 并发革命:对比传统线程池与Java 21虚拟线程,详解Reactor模式在秒杀系统中的应用及背压机制 云原生实践:提供Spring Boot容器化部署方案,分析Spring WebFlux响应式编程和Redis Cluster缓存策略。
167 0
|
5月前
|
缓存 安全 前端开发
Java 核心知识点与实战应用解析
我梳理的这些内容涵盖了 Java 众多核心知识点。包括 final 关键字的作用(修饰类、方法、变量的特性);重载与重写的区别;反射机制的定义、优缺点及项目中的应用(如结合自定义注解处理数据、框架底层实现)。 还涉及 String、StringBuffer、StringBuilder 的差异;常见集合类及线程安全类,ArrayList 与 LinkedList 的区别;HashMap 的实现原理、put 流程、扩容机制,以及 ConcurrentHashMap 的底层实现。 线程相关知识中,创建线程的四种方式,Runnable 与 Callable 的区别,加锁方式(synchronize
124 0
|
6月前
|
存储 设计模式 Java
Java 期末考试不挂科必背基础知识点复习笔记整理
这是一份全面的Java基础知识点复习笔记,涵盖核心特性、数据类型、流程控制、数组、异常处理、JVM原理、多线程、设计模式及Java 8+新特性等内容。结合买飞机票、验证码生成和评委打分等应用实例,助你掌握考试重点,轻松应对Java期末考试,避免挂科!附带代码资源,供深入学习使用。链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)
229 0