惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
S
Secure Thoughts
aimingoo的专栏
aimingoo的专栏
量子位
F
Full Disclosure
云风的 BLOG
云风的 BLOG
D
Docker
Stack Overflow Blog
Stack Overflow Blog
Last Week in AI
Last Week in AI
Security Latest
Security Latest
Project Zero
Project Zero
Cyberwarzone
Cyberwarzone
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
AWS News Blog
AWS News Blog
G
GRAHAM CLULEY
T
Threat Research - Cisco Blogs
The Hacker News
The Hacker News
The Register - Security
The Register - Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
MyScale Blog
MyScale Blog
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
P
Privacy & Cybersecurity Law Blog
V
Visual Studio Blog
A
Arctic Wolf
L
LINUX DO - 热门话题
W
WeLiveSecurity
Google DeepMind News
Google DeepMind News
TaoSecurity Blog
TaoSecurity Blog
Recorded Future
Recorded Future
K
Kaspersky official blog
L
Lohrmann on Cybersecurity
V
V2EX
Recent Announcements
Recent Announcements
N
News and Events Feed by Topic
MongoDB | Blog
MongoDB | Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Securelist
S
Security Affairs
Forbes - Security
Forbes - Security
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
C
Cisco Blogs
AI
AI
Vercel News
Vercel News
博客园 - 三生石上(FineUI控件)
Cisco Talos Blog
Cisco Talos Blog
T
Tor Project blog
Scott Helme
Scott Helme
Spread Privacy
Spread Privacy

博客园 - y丶innocence

临时111 RecyclerView 数据多时无法滑动:ConstraintLayout 约束高度修复笔记 Android Kotlin OkHttp3 WebSocket 长连接与 Gson 数据解析系统笔记 Android + Kotlin + OkHttp WebSocket 相关概念与使用流程笔记(TLS/证书 + 鉴权/会话) AI对话导出markdown格式流程 代理转发 分享文件 面向全球的app的excel导出和kotlin IO原理 安卓导出笔记(未整理) java&kotlin listener 0.7 动画 0.4 View 工作流程 0.3 view 滑动冲突 13. Jetpack 0. 安卓开发艺术探索参考资料 12. Material Design 7. 持久化技术 5. Fragment 4. UI 开发 3. Activity 2.2 Kotlin 面向对象 2.3 Kotlin高级 2.1 Kotlin基础 1. Android简介 [OpenJudge] 反正切函数的应用 (枚举)(数学) [OpenJudge] 摘花生 (模拟)
java 基础
y丶innocence · 2026-01-14 · via 博客园 - y丶innocence

Java 基础

1. 继承和多态

类的划分

  • 普通类:使用 class 定义且不含有抽象方法
  • 抽象类:使用 abstract class 定义,它可以含有具体方法和抽象方法
  • 接口:使用 interface 定义,只有抽象方法

继承规则

  • 之间可以互相继承,使用 extends 关键字
  • 可以继承接口,使用 implements 关键字
  • 接口只能继承接口,使用 extends 关键字
  • 一个类只能继承一个类,但可以继承多个接口
  • 继承关系具有传递性
    • private 变量和方法不会被继承

多态

  • 实现多态的必要条件
    • 继承
    • 重写方法
    • 向上转型父类引用指向子类对象
  • 重写的返回类型必须是父类返回值的派生类

2. 值传递和引用传递

  • 在 java 中,默认只有值传递
  • 只有明确使用地址并修改对应地址的值之后才是引用传递

结果分析:

  • 对于数组而言,当我们创建一个数组之后,jvm为数组分配了三个连续的内存空间,这个 arr 就指向这片内存空间。方法 func 得到的是数组的引用/地址的一个拷贝
    • 情况1:修改了第一个空间块中的内容,故输出的是修改后的内容
    • 情况2:只是将arr的引用指向了另一片内存空间,原本的那片内存空间并未发生变化。

【下面代码对比JAVA和C++】

public void func1(int[] arr){
    arr[0] = 1
}

public void func2(int[] arr){
    int[] arr2 = {1, 2, 3}
    arr = arr2
}

int[] arr1 = {3, 4, 5};
func1(arr1); // {1, 4, 5} 传的引用/地址的副本,因此能改变
// c++ 值传递 {3, 4, 5}   c++ 引用传递 {1, 4, 5} 
print(arr1[0]);


int[] arr2 = {3, 4, 5};
func2(arr2); // {3, 4, 5}  传进去的引用/地址的副本,只修改了副本的地址指向
// 
print(arr2[0]);

3. 异常

  • Throwable
    • Error:错误无法恢复和预防,建议终止
      • IOError
      • VirtualMachineError
        • StackOverflowError
        • OutOfMemoryError
    • Exception:发生异常但通常可以恢复
      • RuntimeException
        • IllegalArgumentException
        • NullPointerException
      • SQLException
      • IOException
public static void main(String[] args) {
    try {
        int a = 5 / 0;
    } catch (ArithmeticException e) {
        e.printStackTrace();
    }
    System.out.println("Hello World!");
}

4. 其他

  • 集合
    • List
    • Set
    • Queue
    • Map
  • 正则表达式
  • 注解
  • 序列化和反序列化
    • 用于对象与字节流的转换
    • 用于跨进程数据交换