• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
K6-X4黑骑士君
博客园    首页    新随笔    联系   管理    订阅  订阅

随笔分类 -  Java笔记

1 2 下一页
HashMap 和 ConcurrentHashMap 的区别

摘要:线程安全性不同, HashMap 是线程不安全的, ConcurrentHashMap 是线程安全的. ConcurrentHashMap 采用锁分段技术, 将整个 Hash 桶进行了分段 segment, 也就是将这个大的数组分成了几个小的片段 segment, 而且每个 segment 片段上面 阅读全文
posted @ 2020-07-07 23:06 K6-X4黑骑士君 阅读(407) 评论(0) 推荐(0)
HashMap 和 HashTable 的区别

摘要:继承的父类不同, 但都实现了 Map 接口. 线程安全性不同, HashMap 线程不安全, HashTable 线程安全. key 和 value 是否能存 null, 虽然这两个在设计上都不允许存空值, 但 HashTable 编译时期就会报错, 而 HashMap 则在运行时才会抛出异常 Nu 阅读全文
posted @ 2020-07-07 22:52 K6-X4黑骑士君 阅读(130) 评论(0) 推荐(0)
ArrayList 和 LinkedList 的区别

摘要:线程安全: ArrayList 和 LinkedList 都是线程不安全的, 它们的方法之间都是不同步的. 底层数据结构: ArrayList 底层是使用 Object 数组; LinkedList 底层是使用双向链表数据结构. 快速访问随机元素: ArrayList 支持高效的快速访问随机元素, 阅读全文
posted @ 2020-07-05 23:36 K6-X4黑骑士君 阅读(125) 评论(0) 推荐(0)
ArrayList 和 Vector 的区别

摘要:这两个类都继承了 List 接口(List 继承了 Collection接口), 它们都是有序集合, 存储的元素可以重复. 安全性: ArrayList 是线程不安全的, 它的方法之间是线程不同步的, 但效率较高. Vector 是线程安全的, 它的方法之间是线程同步的. 扩容机制: ArrayLi 阅读全文
posted @ 2020-07-05 23:15 K6-X4黑骑士君 阅读(103) 评论(0) 推荐(0)
List, Set, Map 的区别

摘要:List: list 接口存储一组不唯一的, 有序的对象. Set: 不允许有重复元素的集合, 是无序的. Map: 使用键值对存储数据, key 是唯一的, 而 value 可以重复, 使用 key 来搜索效率极高. 阅读全文
posted @ 2020-07-05 22:48 K6-X4黑骑士君 阅读(120) 评论(0) 推荐(0)
sleep() 和 wait() 的共同点和区别

摘要:#####共同点: 两者都可以暂停线程的执行. ####区别: 最主要的区别是 sleep() 没有释放锁, 而 wait() 释放了锁. wait() 常被用于线程间的交互和通讯, 而 sleep() 则通常被用于暂停执行. wait() 被调用后, 线程不会自动苏醒, 需要其他线程调用同一对象上 阅读全文
posted @ 2020-07-05 22:25 K6-X4黑骑士君 阅读(239) 评论(0) 推荐(0)
什么是线程死锁?如何避免线程死锁?

摘要:####线程死锁 多个线程同时被阻塞, 它们中的一个或全部都在等待某个资源被释放. 由于线程被无限期的阻塞, 导致程序不可能被正常终止. 就像上图一样, 线程A持有资源2, 线程B持有资源1, 它们同时都想申请对方的资源, 所以这两个线程就会互相等待而进入死锁状态. 产生死锁必须具备四个条件: 互斥 阅读全文
posted @ 2020-07-04 22:38 K6-X4黑骑士君 阅读(555) 评论(0) 推荐(0)
&和&&, |和||的区别

摘要:&和&&的含义一样, 表示逻辑与(and), 只有第一个表达式和第二个表达式都为 true 时, 整个运算结果才为 true. |和||的含义一样, 表示逻辑或(or), 当第一个表达式和第二个表达式其中有一个为 true 时, 整个运算结果就为 true. &&和||还具备短路功能, 就是当第一个 阅读全文
posted @ 2020-07-04 21:18 K6-X4黑骑士君 阅读(140) 评论(0) 推荐(0)
Java 深拷贝和浅拷贝

摘要:###浅拷贝 对于基本数据类型的成员对象, 浅拷贝是将属性值赋值给新的对象, 所以其中一个修改, 不会影响另外一个. 对于引用数据类型的成员对象, 浅拷贝只是将成员对象的内存地址指向了同一个, 这时改变其中一个的属性值, 另外一个也会跟着改变. ###深拷贝 在拷贝引用数据类型的成员对象时, 会开辟 阅读全文
posted @ 2020-07-04 20:50 K6-X4黑骑士君 阅读(136) 评论(0) 推荐(0)
final 关键字修饰类,方法,变量有什么作用?

摘要:类 被 final 修饰的类不能被继承, final 类中的所有成员方法都会被隐式的指定为 final 方法. 方法 把方法锁定, 不让子类去修改方法的实现. 提高效率, 早期的 Java 实现版本中会将 final 方法转为内嵌调用, 而现在的 Java 版本已经不需要使用 final 进行优化了 阅读全文
posted @ 2020-07-04 20:02 K6-X4黑骑士君 阅读(384) 评论(0) 推荐(0)
线程有哪些基本状态,每种状态都代表什么

摘要:new(新建): 当程序使用 new 创建一个线程后, 该线程处于新建状态, 此时它和其它 java 对象一样, 仅仅由 JVM 为其分配内存并初始化成员变量值. runnable(可运行状态): 实际上可以细分成两种状态: ready(就绪) 和 running(运行) 状态. ready(就绪) 阅读全文
posted @ 2020-06-28 22:35 K6-X4黑骑士君 阅读(969) 评论(0) 推荐(0)
hashcode() 和 equals() 的作用 区别 联系

摘要:hashCode() 和 equals() 方法的作用其实一样, 都是用来对比两个对象是否相等, 都需要自己去覆写来提高对比效率和准确度, 在向 hashSet, hashMap 等底层用 hash值 判断的集合中存值时, 被存储的对象都需要覆写这两个方法. hashCode() 方法返回一个哈希值 阅读全文
posted @ 2020-06-28 21:48 K6-X4黑骑士君 阅读(143) 评论(0) 推荐(0)
== 与 equals 的区别

摘要:==: 它的作用是判断两个对象的地址是不是相等. 就是判断两个对象是不是同一个对象(基本数据类型中就是比较值, 而引用数据类型就是比较内存地址). equals: 它的作用也是判断两个对象是否相等. 但它一般有两种使用情况: 类没有覆盖 equals() 方法: 跟==比较没有区别. 类覆盖了 eq 阅读全文
posted @ 2020-06-28 18:11 K6-X4黑骑士君 阅读(115) 评论(0) 推荐(0)
为什么在调用子类构造函数之前会调用父类无参构造函数?

摘要:为了实现对象的实例化. 子类中所有的构造函数都会默认调用父类中的无参构造函数, 因为每一个子类构造函数内第一行都有隐式的 super(); 若父类中没有无参构造函数, 那么子类的构造函数内必须通过 super 语句指定要调用的父类中的构造函数. 若子类构造函数中用 this 来指定调用子类自己的构造 阅读全文
posted @ 2020-06-28 18:02 K6-X4黑骑士君 阅读(1002) 评论(0) 推荐(1)
构造函数有那些特性?

摘要:名字与类名相同. 没有返回值, 但不能用 void 声明构造函数. 生成类的对象时自动执行, 无需调用. 无法被子类继承. 可以重载. 如果定义了有参构造函数, 则无参构造函数将不再自动创建. 阅读全文
posted @ 2020-06-28 17:18 K6-X4黑骑士君 阅读(193) 评论(0) 推荐(0)
接口和抽象类的区别是什么?

摘要:接口的方法默认时 public, 所有方法在接口中不能有实现(Java 8开始接口方法可以有默认实现), 而抽象类可以有非抽象方法. 接口中除了 static, final 变量, 不能有其他表变量, 而抽象类中则不一定. 一个类可以实现多个接口, 但只能实现一个抽象类. 接口自己本身可以通过继承拓 阅读全文
posted @ 2020-06-28 16:58 K6-X4黑骑士君 阅读(108) 评论(0) 推荐(0)
String为什么是不可变的? String、StringBuffer 和 StringBuilder 的区别是什么?

摘要:###String为什么是不可变的? String 类中使用 final 关键字修饰字符数组来保存字符串, private final char value[], 所以String对象是不可变的. ###String、StringBuffer 和 StringBuilder 的区别是什么? 可变性 阅读全文
posted @ 2020-06-28 16:07 K6-X4黑骑士君 阅读(196) 评论(0) 推荐(0)
Java 面向对象的三大特性

摘要:##封装 在定义类的时候, 如果可以直接修改类中的字段, 那么就可能会出现 age 可以设置为1000这种不合理的情况. 而封装, 就可以将类的某些信息隐藏在类内部, 不允许外部程序直接访问, 而是通过该类提供的方法来实现对隐藏信息的操作和访问, 从而可以限制对信息的不合理访问和修改. 封装的特点: 阅读全文
posted @ 2020-06-23 19:38 K6-X4黑骑士君 阅读(78) 评论(0) 推荐(0)
构造器 Constructor 是否可被 override (重写)?

摘要:Constructor 不能被 override, 但是可以 overload (重载), 所以在一个类中可以有多个构造函数的情况. Constructor 不能被继承, 所以不能被 override. 每一个类必须有自己的构造函数, 负责构造自己这部分的构造. 子类不会覆盖父类的构造函数, 相反必 阅读全文
posted @ 2020-06-23 19:36 K6-X4黑骑士君 阅读(566) 评论(0) 推荐(0)
overload 重载和 override 重写的区别

摘要:重载 发生在同一个类中, 方法名必须相同, 参数类型不同, 个数不同, 顺序不同, 方法返回值和访问修饰符可以不同. 重写 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 发生在子类中, 方法名, 参数列表必须相同, 返回值范围小于等于父类, 抛出的异常范围小于等于父类, 访问修饰符的范围 阅读全文
posted @ 2020-06-23 19:34 K6-X4黑骑士君 阅读(105) 评论(0) 推荐(0)

1 2 下一页
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3