【java】数据类型

基本数据类型

byte

byte 是一种基本数据类型,用于表示字节(byte)数据。byte 类型占用 8 位(1 字节)内存空间,取值范围是 -128 到 127。它通常用于存储小整数值或者表示二进制数据

整数Int

缓存的范围,默认情况下,Java 缓存了 -128 到 127 之间的整数对象

Integer类

short

long

You can always assign a value of int type to a variable of long type without loss of information.

您总是可以将int类型的值赋给long类型的变量,而不会丢失信息。

Long requires the most amount of memory.

Long需要最多的内存。

单精度浮点数Float

双精度浮点数Double

布尔值Boolean

In Java, the word true is a Boolean literal.

在Java中,true这个词是一个布尔字面值。

You can't cast a Boolean value to an int, or an int to Boolean.

不能将布尔值转换为int,也不能将int转换为布尔值。

The relational operator can be used to compare two values.

关系运算符可用于比较两个值。

字符char

方法描述
isDigit(ch)如果是数字返回true
isLetter(ch)如果是字母返回true
isLetterorDigit(ch)如果是字母或数字,返回true
isLowerCase(ch)如果是小写字母,返回true
isUpperCase(ch)如果是大写字母,返回true
toLowerCase(ch)变成小写
toUpperCase(ch)变成大写

引用数据类型

字符串String

方法

string.charAt(index)返回指定位置的字符
string.toUpperCase()返回一个新的字符串,所有字母大写
string.equalsIgnoreCase(s1)
string.toLowerCase()返回一个新的字符串,所有字母小写
string.concat(s1)与s1链接,返回一个新的字符串
string.trim()返回一个新的字符串,去掉两边的空白字符

string.equals(s1)

string.compareToIgnoreCase
string.compareTo
string.length()返回字符数长度

String(不变) vs StringBuffer(多线程) vs StringBuilder(单线程)

String是不可变的,如果尝试去修改,会新生成一个字符串对象,StringBuffer和StringBuilder是可变的

StringBuffer是线程安全的,StringBuilder是线程不安全的,所以在单线程环境下StringBuilder效率会更高

如果你的字符串不需要改变,用String会比StringBuffer更能提高性能。If your string does not require any changes, you should use String rather than StringBuffer to improve performance.

数组Array

 二级array:

int[][] m=new int[row][col]
m.length=row
m[0].length=col

赋值方式: 

int[][] result={{1,2,3,4},{5,6,7,8}}

array拷贝

list1=list2浅拷贝:仅仅改变地址,并未改变内容
arraycopy方法深度拷贝:创造一个新的数组

ArrayList vs LInkedList(双端队列)vs Vector

ArayList和LinkedList都实现了List接口,LinkedList还实现了Deque接口

查询速度

小结论:arraylist更加快,vector最慢

ArrayList是基于索引的数据接口,它的底层是数组。它可以以0(1)时间复杂度对元素进行随机访问。

LinkedList是以元素列表(链表)的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)。

操作

相对于ArayList, LinkedList的插入、添加、删除操作速度更快,因为当元素被添加到集合任意位置的时候,不需要像数组那样重新计算大小或者是更新索引。

vector操作也非常复杂

内存

LinkedListL更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素。

什么场景下更适宜使用LinkedList

1)你的应用不会随机访问数据

2)你的应用更多的插入和删除元素,更少的读取数据

什么场景使用vector

需要线程安全,但不要求速度

CopyOnWriteArrayList

特点:

1. 添加元素时枷锁

2. 读取时不加锁

底层原理

1.用过数组来实现的,在向CopyOnWriteArrayList添加元素时,会复制一个新的数组,写操作在新数组上进行,读操作在原数组上进行

2.写操作会加锁,防止出现并发写入丢失数据的问题

3. 写操作结束之后会把原数组指向新数组

4.CopyOnWriteArrayList允许在写操作时来读取数据,大大提高了读的性能,因此适合读多写少的应用场景,但是CopyOnWriteArrayList会比较占内存,同时可能读到的数据不是实时最新的数据,所以不适合实时性要求很高的场景

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岩塘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值