当前位置: 首页 > article >正文

每日学习Java之一万个为什么?

  1. @Override 注解的使用

    • 当你想要重写(覆盖)一个父类的方法时,可以使用 @Override 注解。这不仅提高了代码的可读性,还允许编译器检查你是否正确地重写了方法。如果方法签名不匹配,编译器会报错。
  2. 数组与集合属性的不同

    • 数组大小固定,一旦创建就不能改变其大小;而集合(如ArrayList, HashSet等)提供了动态调整大小的功能。
    • 数组可以直接通过索引访问元素,效率高;集合提供更丰富的操作接口,比如添加、删除元素等。
    • 数组可以存储基本数据类型和对象引用;集合只能存储对象引用。
  3. 限制多个线程对资源的访问

    • 可以使用同步机制(如synchronized关键字),确保同一时刻只有一个线程能够访问特定的资源或代码块。
    • 使用显式锁(Lock接口及其子类,如ReentrantLock),提供了比synchronized更灵活的锁定操作。
  4. static 的用法

    • 用于定义静态变量、静态方法和静态块。静态成员属于类本身而不是类的对象,所有实例共享同一个静态成员。
    • 静态方法可以直接通过类名调用,不需要创建类的实例。
  5. final 的用法

    • 当应用于变量时,表示该变量一旦赋值就不可更改;对于基本类型,值不能变;对于引用类型,引用指向的对象不能变。
    • 应用于方法,表示该方法不能被子类重写。
    • 应用于类,表示该类不能被继承。
  6. Thread 和 Runnable 的区别

    • 实现Runnable接口并通过Thread的构造函数传递给Thread的方式更为灵活,因为Java只支持单继承,但是可以实现多个接口。
    • Thread类本身实现了Runnable接口,直接继承Thread类则无法再继承其他类。
  7. synchronized 的使用

    • 可以用来修饰方法或者代码块,保证在同一时刻只能有一个线程执行这段代码,防止多个线程同时访问共享资源导致的数据不一致问题。
  8. 基本类型和封装类型的转换

    • 基本类型可以直接赋值给对应的封装类型(自动装箱),例如:Integer i = 10;
    • 封装类型可以通过调用相应的方法(如intValue(), doubleValue()等)转换为基本类型(自动拆箱),例如:int a = new Integer(10).intValue();

http://www.kler.cn/a/555381.html

相关文章:

  • vue打包
  • Ubuntu编译ZLMediaKit
  • 数据结构——模拟栈例题B3619
  • 使用 Docker 部署 Spark 集群
  • LeetCode热题100——滑动窗口/子串
  • 板块一 Servlet编程:第十节 监听器全解 来自【汤米尼克的JAVAEE全套教程专栏】
  • Go学习-入门
  • 常用电脑,护眼软件推荐 f.lux 3400K | 撰写论文 paper
  • 服务器数据迁移某个目录下的所有文件到另一台服务器
  • Ubuntu上查看端口被哪个进程占用了
  • 如何才能写出好的prompt?
  • 如何使用springboot项目如何实现小程序里面商品的浏览记录功能案例
  • Qt5 C++ TcpSocket 如何判断是服务主动断开tcp socket连接?
  • QPainter绘制3D 饼状图
  • 前端开发中的贪心算法实践:以最小成本解决实际问题
  • 自由学习记录(36)
  • C语言之typedef
  • MySQL分库分表之ShardingSphere实战
  • 【Spring详解四】自定义标签的解析
  • EasyExcel的简单使用