java知识点

Java面试必备知识点大全 本文还有配套的精品资源,点击获取 简介:Java面试题是程序员求职中的重要环节,旨在评估应聘者在基础知识、编程能力、并发处理等多方面技能。本文列举了Java面试中常见的核心知识点,包括Java基础、数据类型与集合框架、多线程编程、IO流与NIO、反射机制、设计模式、JVM原理、并发工具类、Spring框架以及数据库连接等方面。求职者应深入理解每个知识点,并结合实战经验,以展... 阅读详情

异常

写法

编译器并不会特别地为InputStream加上自动关闭。编译器只看try(resource = …)中的对象是否实现了java.lang.AutoCloseable接口,如果实现了,就自动加上finally语句并调用close()方法

try(resource..){
}catch(){
}

JVM加载

JVM在执行Java程序的时候,并不是一次性把所有用到的class全部加载到内存,而是第一次需要用到class时才加载

反射

访问private

setAccessible(true)可以获取private
setAccessible(true)可能会失败。如果JVM运行期存在SecurityManager,那么它会根据规则进行检查,有可能阻止setAccessible(true)

调用方法

注意null和有参数
静态:Integer n = (Integer) m.invoke(null, “123”);
非静态:String r = (String) m.invoke(s, 6);
为了调用非public方法,可以通过Method.setAccessible(true)允许其调用,也可能会失败
遵循多态原则:调用实际类型的覆写方法

动态代理

动态代理(Dynamic Proxy):可以在运行期动态创建某个interface的实例,而不用实现某个实例。
动态代理实际上是JVM在运行期动态创建class字节码并加载的过程

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class ReflexTest {
    public static void main(String[] args){
        InvocationHandler ih = new InvocationHandler() {
            @Override
            public Object invoke(Object proxy,Method method,Object args[])throws Throwable{
                System.out.println(method.getName());
                System.out.println(proxy.getClass().getName());
                System.out.println(args[0]);

                return null;
            }
        };
        play p =(play)Proxy.newProxyInstance(play.class.getClassLoader(), new Class[]{play.class}, ih);
        p.catPlay();
    }
    
}
interface play{
     void catPlay();
}

注解

注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释”
注解则可以被编译器打包进入class文件,因此,注解是一种用作标注的“元数据”

元数据:

元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能

@Target

类或接口:ElementType.TYPE;
字段:ElementType.FIELD;
方法:ElementType.METHOD;
构造方法:ElementType.CONSTRUCTOR;
方法参数:ElementType.PARAMETER。

@Retention

仅编译期:RetentionPolicy.SOURCE;
仅class文件:RetentionPolicy.CLASS;
运行期:RetentionPolicy.RUNTIME。

元注解

有一些注解可以修饰其他注解,这些注解就称为元注解(meta annotation)

泛型

编写泛型

注意: 编写静态方法和普通方法时要使用不同的类型,普通有T,静态就用k,区分类型。

擦拭法

定义: 虚拟机对泛型其实一无所知,所有的工作都是编译器做的
Java的泛型是由编译器在编译时实行的,编译器内部永远把所有类型T视为Object处理,但是,在需要转型的时候,编译器会根据T的类型自动为我们实行安全地强制转型。

局限

获取类的Class在转型之前,所以获取泛型的Class都是一样的Object

 MyPara<Integer> m1 = new MyPara<Integer>(23);
    MyPara<String> m2 = new MyPara<String>("ss");
    Class s1 = m1.getClass();
    Class s2 = m2.getClass();
    //MyPara<Integer>与MyPara<String> 是两个不同的类
    //等于是因为他们都变成了<MyPara<Object>
    System.out.println(s1==s2);

不能判断类型
在这里插入图片描述

通配符

<? extends T>允许调用读方法T get()获取T的引用,但不允许调用写方法set(T)传入T的引用(传入null除外);
<? super T>允许调用写方法set(T)传入T的引用,但不允许调用读方法T get()获取T的引用(获取Object除外

extends 表示T的子类,而super表示T的父类
我的理解:
extends只读(null除外):因为转入一个类型时,会因为擦拭法,变成Object然后,Object是所有的父类,不是任何的子类。
super只写(Object除外):因为擦拭法会变成Object,是所有类的父类,所以可以写,返回时只能用Object接受。
可以用PECS(生产者和消费者)原则去理解何时用extends,何时用super

无限定通配符(<?>)

它不能读也不能写,一般只用来判断是否为Null
类名<?>时所有类名的超类,都可以向上转型为类名<?>

集合

只要实现了Iterable接口的集合类都可以直接用for each循环来遍历。

重写方法和实现类

equals: List中 index(),contains()这些类型的方法要重写
equals和hashcode: Map要重写
实现Comparable:只要需要排序的,加入的类都要实现
Collections创建的集合是不可变集合,无法向其中添加或删除元素。
unmodifiableList(List) 返回的List不可变
希望把一个可变List封装成不可变List,那么,返回不可变List后,最好立刻扔掉可变List的引用(把null赋值给它既可),这样可以保证后续操作不会意外改变原始对象,从而造成“不可变”List变化了

IO流

读:从外部读进内存操作
写:从内存写入外部
File 可以表示一个目录和文件,
Out/InputStream 读取文件字节
Writer/Reader 读取字符串
几乎所有new的子类都是input和output超类
File传入inputStream再传入Buffer再传入GZIinput 这种叫做Filter模式(或者装饰器模式:Decorator)

字节与字符转换

Reader是带编码转换器的InputStream,它把byte转换为char,而Writer就是带编码转换器的OutputStream,它把char转换为byte并输出。

InputStream input = new FileInputStream("src/readme.txt");
// 变换为Reader:
Reader reader = new InputStreamReader(input, "UTF-8");

Reader需要从InputStream中读入字节流(byte),然后,根据编码设置,再转换为char就可以实现字符流。如果我们查看FileReader的源码,它在内部实际上持有一个FileInputStream。

同步和异步

同步IO是指,读写IO时代码必须等待数据返回后才继续执行后续代码,它的优点是代码编写简单,缺点是CPU执行效率低。

而异步IO是指,读写IO时仅发出请求,然后立刻执行后续代码,它的优点是CPU执行效率高,缺点是代码编写复杂。

Java标准库的包java.io提供了同步IO,而java.nio则是异步IO

可以设置编码的类

FileReader(‘路径’,StandardCharsets.UTF_8)

Print*类

System.out是标准输出;
System.err是标准错误输出。

我们经常使用的System.out.println()实际上就是使用PrintStream打印各种数据。其中,System.out是系统默认提供的PrintStream,表示标准输出:

Files

从Java 7开始,提供了Files和Paths这两个工具类,能极大地方便我们读写文件。
缺点:
Files提供的读写方法,受内存限制,只能读写小文件,例如配置文件等,不可一次读入几个G的大文件。读写大型文件仍然要使用文件流,每次只读写一部分文件内容。

时间与日期

时区

一种

是以GMT或者UTC加时区偏移表示,例如:GMT+08:00或者UTC+08:00表示东八区

二种

另一种是缩写,例如,CST表示China Standard Time,也就是中国标准时间。但是CST也可以表示美国中部时间Central Standard Time USA,因此,缩写容易产生混淆,我们尽量不要使用缩写。

三种

最后一种是以洲/城市表示,例如,Asia/Shanghai,表示上海所在地的时区。特别注意城市名称不是任意的城市,而是由国际标准组织规定的城市

卷王问卷考试系统——测试报告 本问卷考试系统是一款在线平台,支持用户发布和完成调查问卷,并进行考试管理,核心功能在于简化问卷创建发布、数据收集及考试组织流程。此次测试将围绕其关键模块展开,涵盖用户注册登录、项目列表、我的练习以及我的题库等核心部分。问卷考试系统(一)硬件环境普通办公电脑(CPU:Intel i5 、内存:16GB 、硬盘:512GB )(二)软件环境操作系统:Windows 11 ;浏览器:Chrome(版本 120+)、Firefox(版本 115+)、Edge(版本 120+)验证界面信息在完整性、一致性、准确性和用 阅读详情

相关推荐

MDK开发篇:基于立创逻辑派FPGA-G1与Cortex-M1软核的按键控制LED实战

本文详细介绍了基于立创逻辑派FPGA-G1开发板与高云Cortex-M1软核的完整开发流程。通过Gowin云源软件配置软核系统与GPIO外设,并在Keil MDK环境中编写按键控制LED的C程序,最终实现程序固化与上电自启动。教程涵盖硬件配置、软件开发、在线调试与固化部署全步骤,帮助STM32开发者快速上手FPGA软核开发。

weixin_42103128的博客 149

Java基础知识点及框架知识点

我的好朋友 @今晚熬夜吗 整理的一些知识点: 个人整理的一些知识点(个人参考)

weixin_43781108的博客 296

保姆级教程:用Wireshark抓包分析10M汽车以太网PLCA轮询机制(附pcap文件)

本文详细介绍了10M汽车以太网PLCA轮询机制的抓包分析与性能优化方法。通过Wireshark实战教程,解析PLCA协议的时分多址特性、总线型拓扑结构及带宽优化策略,帮助工程师提升车内网络的可靠性和实时性。附赠pcap文件供实践参考。

wdx01234567的博客 240

java服务端知识点总结

临近年尾了,很多人也计划着跳槽了,在跳槽之前多准备些东西总是没有坏处的。其实面试的过程不仅仅是一次技能的考核,我们也可以在里面学到很多的东西,让我们不断的进步。这里我总结了java服务端的基础知识点,Xmind文件我已经上传到了github上了,地址是:https://github.com/Ninghan/java-,欢迎大家在评论区补充。

疯狂的猫 1264

[Dify实战] 招聘筛简历机器人:自动筛选、排序、生成面试要点-带绑定资源

摘要:本文介绍了如何利用Dify优化简历筛选流程,解决人工筛选耗时、标准不统一等问题。通过结构化输出"评分+亮点+风险+面试关注点",将主观判断转化为规则化流程。关键步骤包括:设计标准化Prompt、配置权重排序策略、确保公平合规性、与ATS系统对接,以及持续优化评估指标。该方法能显著提升筛选效率(缩短招聘周期)、增强一致性(避免主观偏差),并为面试官提供结构化参考信息,最终实现更高效精准的人才筛选。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 581

AI原生应用中的数据治理:从采集到应用的完整方案

当AI从"辅助工具"进化为"应用核心"(如ChatGPT、智能驾驶系统),传统数据管理方式已无法满足需求:模型需要更精准的训练数据、业务需要更实时的决策支持、法规需要更严格的隐私保护。本文聚焦AI原生应用的数据全生命周期治理(从采集→清洗→标注→存储→应用→归档的完整链路),覆盖技术方案、工具选择和实践要点。本文将按"场景引入→核心概念→技术方案→实战案例→未来趋势"的逻辑展开,重点通过"奶茶店原料管理"类比,解释数据治理的关键环节;结合Python代码演示核心技术(如异常值检测、主动学习标注);

SuperAGI2025 883

java的知识点总结_java知识点总结

java知识点总结java都有哪些知识点?下面是小编整理总结的一些java知识点,希望对你有帮助。java知识点总结1. 基本数据类型整形:byte 1 个字节short 2 个字节int 4个字节long 8个字节字符:char 2个字节浮点数:float 4个字节double 8个字节布尔:boolean 1个字节2.java 7 新增二进制整数,以0b或者0B开头3.java中字符时16位的...

weixin_33377602的博客 255

戴尔PowerEdge R740服务器安装Debian系统后无法显示磁盘阵列

【代码】戴尔PowerEdge R740服务器安装Debian系统后无法显示磁盘阵列。

路~可以走过 1900

Java知识点总结

主要是自己学习过程中总结的一些知识点的连接,方便查找 没啥技术性的东西,有看到的小伙伴们可以批评指正

yu的博客 2328

23、OpenMP常见用例与标准循环级示例详解

本文详细介绍了OpenMP的三种典型用例:循环级OpenMP、高级OpenMP和MPI+OpenMP,适用于不同层次的并行需求。重点讲解了循环级OpenMP在向量加法、流三元组和模板计算中的应用示例,并探讨了首次触摸优化、线程绑定、NUMA架构影响等关键性能优化策略。通过实际代码演示和性能分析,帮助开发者快速掌握OpenMP的基础并行化方法,并为后续高性能优化提供指导。

fanta的博客 87

工业4.0必备:C#上位机+数字孪生 生产线实时监控与智能预警系统(工业级实战)

数据割裂:PLC、传感器、工业相机的数据散落在不同系统,想看全局生产状态要切换N个软件,“数据孤岛”导致决策滞后;故障难预判:设备突发故障时,只能停机排查,平均故障响应时间超30分钟,一条生产线停工1小时损失超10万;可视化差:传统监控只有冰冷的数字和2D图表,设备运行状态、生产流程、物料流转无法直观感知,新人上手需3个月才能熟悉产线。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 660

【Java知识点大全】

Java相关知识点,针对面试,全文二十五万字。

我是Java程序员廖志伟,感谢朋友们的支持! 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java基础知识点整理

关于Java基础部分比较重要的知识点我整理了如下内容,后续关于类似于这样的知识点脑图整理将集中在一个模块进行管理。 后续当知识储备完善之后会将脑图中的知识点细节进行分析分享

lewismago的博客 258

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java学习知识点总结

java学习知识点总结

qq_39922867的博客 333

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【Java】面试必考知识点五分钟过完

反射是通过获取类的class对象,然后动态的获取到这个类的内部结构,动态的去操作类的属性和方法。应用场景有:要操作权限不够的类属性和方法时、实现自定义注解时、动态加载第三方jar包时、按需加载类,节省编译和初始化时间;获取class对象的方法有:class.forName(类路径),类.class(),对象的getClass()

2401_89664701的博客 2474

JAVA知识点总结

JAVA知识点 JAVA WEB知识点

yangsuhe的博客 210

JAVA核心知识点整理.pdf

点击下方链接免费下载! https://cisco-huang.oss-cn-beijing.aliyuncs.com/文档/JAVA核心知识点整理.pdf

cisco_huang的博客 8836

java学习知识点

一些java学习的基础知识点。

weixin_39282476的博客 330

java 的知识点_java知识点梳理

网络搜索结果,出处不详,仅供参考对于刚刚接触Java的人,java基础知识技术点繁多,那么gkstk小编为大家汇总最全java知识点如下,仅供大家参考学习!1. JVM相关(包括了各个版本的特性)对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资深开发者来说,不会JVM几乎是不可接受的。JVM作为java运...

weixin_35917339的博客 189

JAVA核心知识点整理

JAVA核心知识点整理见PDF: 链接: https://pan.baidu.com/s/1J9cx_27qH_7IOmnvLs7A5g 提取码: tija 复制这段内容后打开百度网盘手机App,操作更方便哦

赱乂的博客 1658

java的知识点总结_Java基础知识点总结

Java基础知识点总结Java基础是编程类专业要学的第一步,那么Java基础知识点又有什么呢?下面Java基础知识点总结是小编为大家带来的,希望对大家有所帮助。Java基础知识点总结1. JAVA简介1.1 java体系结构:j2se,javaweb,j2ee1.2 java特点:平台无关(虚拟机),垃圾回收(使得java更加稳定)1.3 JDK与JRE,JDK:java开发环境,JRE:java...

weixin_39779975的博客 112

JAVA知识点总结(精华)

JAVA知识点总结精华(总结的非常全面)(转自洪宇峰老师的博客)

Mr_HaiDong的博客 415

Java知识点梳理

从毕业到现在也有好几年了,从刚开始的Java开发到现在的Android开发,基本上用到的都是Java语言,最近回想了一下,好像自己从来没有认真总结过Java里面的一些知识点,因此就有了这篇博客,打算将Java里面比较常用的一些知识点梳理一下。 String、StringBuffer与StringBuilder 强引用、软引用、弱引用、虚引用 Exception与Error final、fina...

老胡 590

java面试知识点——基础

java面试知识点——基础 java面试知识点解析(一)——基础知识篇

qq_40996030的博客 7336

java基础知识点总结_Java基础知识点总结

Java基础是编程类专业要学的第一步,那么Java基础知识点又有什么呢?下面Java基础知识点总结是小编为大家带来的,希望对大家有所帮助。Java基础知识点总结1. JAVA简介1.1 java体系结构:j2se,javaweb,j2ee1.2 java特点:平台无关(虚拟机),垃圾回收(使得java更加稳定)1.3 JDK与JRE,JDK:java开发环境,JRE:java运行环境1.4 第一个...

weixin_29587015的博客 498

JAVA基础知识点回顾

做个笔记,整理下java基础方面的知识点,其中也有很多是面试常问到的。

黄勇的博客 675
上一篇: c语言fopen报错
下一篇: redis的window安装及使用
~insn~
博客等级 码龄6年 5粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值