Java数据类型与常用数据结构

一. 数据类型

八种基础数据类型:
byte/8、char/16 、short/16、int/32、float/32、long/64、double/64、boolean

bonlean类型补充:

boolean 只有两个值:true、false,可以使用 1 bit 来存储,但是具体大小没有明确规定。JVM 会在编译时期将 boolean 类型的数据转换为 int,使用 1 来表示 true,0 表示 false。JVM 支持 boolean 数组,但是是通过读写 byte 数组来实现的。

缓冲池
new Integer(123) 与 Integer.valueOf(123) 的区别在于:
1、new Integer(123) 每次都会新建一个对象;
2、Integer.valueOf(123) 会使用缓存池中的对象,多次调用会取得同一个对象的引用。

1.String、StringBuffer、StringBuilder之间的关系

StringStringBufferStringBuffer
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量可变类,速度更快
不可变可变可变
线程安全线程安全
多线程操作字符串单线程操作字符串

线程安全
StringBuffer:线程安全,StringBuilder:线程不安全。

因为StringBuffer 的所有公开方法都是 synchronized 修饰的,而 StringBuilder 并没有 synchronized 修饰

缓冲区
StringBuffer 每次获取 toString 都会直接使用缓存区的 toStringCache 值来构造一个字符串。

StringBuilder 则每次都需要复制一次字符数组,再构造一个字符串。

所以, StringBuffer 对缓存区优化,不过 StringBuffer 的这个toString 方法仍然是同步的。

性能
既然 StringBuffer 是线程安全的,它的所有公开方法都是同步的,StringBuilder 是没有对方法加锁同步的,所以毫无疑问,StringBuilder 的性能要远大于 StringBuffer。

二、数据结构

在这里插入图片描述

数组:
数组长度固定,数组可以存储基本类型和引用类型
容器(集合):
容器主要包括 CollectionMap 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。
在这里插入图片描述
说明:Vector、HashTable均已被替换,


Collection

Collection是单列集合的顶层接口,定义了所有单列集合功能的行为声明,他的功能需要单列集合的实现类去实现,他功能通过实现类对象来使用。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值