Java中的数据类型

Java中的数据类型

基本类型有以下四种:

  1. int数据类型有:byte(8bit , -128~127)、short(16bit)、int(32bit)、long(64bit)
  2. float数据类型有:单精度(32bit float)、双精度(64bit double)
  3. boolean类型变量的取值有:true、false
  4. char数据类型有:unicode字符、16位
    对应的类类型:

int类型(Integer)、float类型(Float)、boolean类型(Boolean)、char类型(Character)、doublet类型(Double)、short类型(Short)、byte类型(Byte)、long类型(Long)

一:数据类型 转化 字节

//例:
8143(0000 0000 0000 0000 0001 1111 1100 1111)=>byte[] b=[-49,31,0,0];
//第一个(低端)字节:
8143>>0*8 & 0xff=(1100111)=207(或有符号-49);
//第二个(低端)字节:
8143>>1*8 & 0xff=(00011111)=31;
//第三个(低端)字节:
8143>>2*8 & 0xff=(00000000)=0;
//第四个(低端)字节:
8143>>3*8 & 0xff=(00000000)=0;

二:低端其实也叫小端法(Little-Endian):

低位字节排放在内存的低地址端即该值得起始地址,高位字节排放在内存的高地址端.

三:高端其实也叫大端法(Big-Endian):

高位字节排放在内存的低地址端即该值得起始地址,低位字节排放在内存的高地址端.

例:32bit宽的数 0x12 34 56 78
在Little-endian模式CPU内存中存放方式(假设从地址0x4000开始存放)为:

内存地址存放内容
0x400000x78
0x400010x56
0x400020x34
0x400030x12

而在Big-endian模式中CPU内存中存放方式则为:

内存地址存放内容
0x400000x12
0x400010x34
0x400020x56
0x400030x78

四:字符串与字节间的相互转换

字符串->字节数组:
String s;
byte[] bs=s.getBytes();

字节数组->字符串:

byte[] bs=new byte[int];
String s=new String(bs);
//或
String s=new String(bs,encode);
//encode指编码方式 "gb2312,utf-8"

具体分析:
int转换为byte[]:

public static byte[] intToByte(int id){
	byte[] arr=new byte[4];
	arr[0]=(byte)((int)(id >> 0*8) & 0xff);
	arr[1]=(byte)((int)(id >> 1*8) & 0xff);
	arr[2]=(byte)((int)(id >> 2*8) & 0xff);
	arr[3]=(byte)((int)(id >> 3*8) & 0xff);
	return arr;
/*或	
for(int i=0;i<arr.length;i++){
		arr[i]=(byte)((int)(id >>i*8) & 0xff);
	}
	return arr;
*/
}

byte[]转换为int:

public static int byteToInt(byte[] arr){
	int rs0=(int)((arr[0] & 0xff) << 0*8);
	int rs1=(int)((arr[0] & 0xff) << 1*8);
	int rs2=(int)((arr[0] & 0xff) << 2*8);
	int rs3=(int)((arr[0] & 0xff) << 3*8);
	return rs0+rs1+rs2+rs3;
/*或	
int result=0;
	for(int i=0;i<arr.length;i++){
		result+=(int)((arr[i] & 0xff) << i*8);
	}
	return result;
*/
}

long转换为byte[]:

public static byte[] longToByte(int id){
	byte[] arr=new byte[8];
for(int i=0;i<arr.length;i++){
		arr[i]=(byte)((int)(id >>i*8) & 0xff);
	}
	return arr;
}

byte[]转换为long:

public static int byteToLong(byte[] arr){
	int result=0;
	for(int i=0;i<arr.length;i++){
		result+=(long)((arr[i] & 0xff) << i*8);
	}
	return result;
}

字符串转换为字节:

public static byte[] stringToByte(String str){
		//把字符串转换成一个字节数组
		byte[] arr=str.getBytes();
		return arr;
}

字节转换为字符串:

public static String byteToString(byte[] arr){
	String des=new String(arr);
	return des;
}

参考文章转载:
位运算的威力
大小端详情

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值