博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917
Arrays.copyOf与System.arrayCopy
数组拷贝,有Arrays.copyOf与System.arrayCopy,区别是System.arraycopy要求你必须提供一个目标数组,而Arrays.copyOf不用你提提供目标数组,其内部实现就是用的 System.arrayCopy
另外,这个Arrays类有很多实用方法,比如Arrays.toString(int[] ints),可以直接把数组转成字符串,参数是8种基本数据类型数组和Object数组
自动装箱和拆箱
jdk1.5 新增加的技能,自动装箱允许我们将基本类型和装箱基本类型(Boxed Primitive Type)混用,按需自动装箱和拆箱
它们之间性能是有明显的差别的(基本类型更优),所以优先使用基本数据类型——第2章-创建和销毁对象
volatile不能保证原子性而Atomic可以
volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A) ,但是不能用其来进行多线程同步控制
AtomicInteger 是用原子方式更新的int值。主要用于在高并发环境下的高效程序处理。使用非阻塞算法来实现并发控制。
Java多线程深度探索
为什么volatile不能保证原子性而Atomic可以?
字节数组和ascii字符串的转换
1 | /** |
byte 数据和二进制字符串的转换
需求是这样的,有个字节数据 0x23(16进制), 获取该数据的每一位的值,也就是转化为二进制的字符串
我们都知道,java虚拟机中,byte 占 8 位数据, 0x23 也就是相当于二进制的数据 0010 0011
那么如何输出这个数据呢,方法有这么几种:
Integer.toBinaryString()
这个可以直接转化为二进制数据,但是前面是去除0的,也就是会输出:10 0011转化为字节数组,用 byte 保存每一位数据
1
2
3
4
5
6
7
8public static byte[] byteToByteArray(byte b) {
byte[] array = new byte[8];
for (int i = 7; i >= 0; i--) {
array[i] = (byte) (b & 1);
b = (byte) (b >> 1);
}
return array;
}移位运算
1
2
3
4
5
6
7
8
9
10/**
* 把byte转为字符串的bit
*/
public static String byteToBit(byte b) {
return ""
+ (byte) ((b >> 7) & 0x1) + (byte) ((b >> 6) & 0x1)
+ (byte) ((b >> 5) & 0x1) + (byte) ((b >> 4) & 0x1)
+ (byte) ((b >> 3) & 0x1) + (byte) ((b >> 2) & 0x1)
+ (byte) ((b >> 1) & 0x1) + (byte) ((b >> 0) & 0x1);
}
二进制字符串转化为字节数据
1 | public static byte binaryStringToByte(String byteStr) { |
安卓开源库收集整理中,欢迎 PR, star,地址:https://github.com/XXApple/AndroidLibs
分享是一种美德,更是一种生活方式!!
也许你会说我是一个梦想者,但我不是唯一的一个。
悦分享,越快乐^_^
欢迎交流,转载请注明出处,谢谢!