Java语言之数组_Java 语言基础之数组应用

什么时候使用数组呢?

如果数据出现了对应关系, 而且对应关系的一方是有序的数字编号, 并作为角标使用.

这时,就必须要想到数组的使用. 也就是将这些数据存储到数组中, 根据运算的结果作为角标,

直接去查数组中对应的元素即可.

这种方式称为 查表法 .

ff57c5666fe2fe872fc113ac0bd23c0a.png

需求: 获取一个整数的十六进制表现形式

public static void toHex(int num)

{

// 健壮性判断

if(num==0)

{

System.out.print("0");

return; //函数执行结束

}

// 定义一个对应关系表

char[] chs = {'0','1','2','3',

'4','5','6','7',

'8','9','A','B',

'C','D','E','F'

};

/*

一会查表会查到比较多的数据,数据一多, 就先存储起来, 在进行操作.

所以定义一个数组, 当作临时容器.

而 int 类型, 四个字节,占32个二进制位, 四个二进制位代表一个十六进制位,

所以临时容器长度为 8

*/

char[] arr = new char[8];

int pos = 0;

while(num!=0)

{

int temp = num&15;

arr[pos++] = chs[temp];

num = num >>> 4; // 使用无符号右移

}

// 将结果打印

System.out.println("pos="+pos);

for(int x = pos-1; x>=0; x--)

{

System.out.print(arr[x]);

}

}

代码改进为任意进制:

// 十进制 --\> 十六进制

public static void toHex(int num)

{

trans(num, 15, 4);

}

// 十进制 --\> 二进制

public static void toBinary(int num)

{

trans(num, 1, 1);

}

// 十进制 --\> 八进制

public static void toOctal(int num)

{

trans(num, 7, 3);

}

public static void trans(int num, int base, int offset)

{

if(num == 0)

{

System.out.println("0");

return;

}

char[] chs = {

'0','1','2','3','4','5',

'6','7','8','9','A','B',

'C','D','E'

};

char[] arr = new char[32]; // 二进制最长

int pos = 0;

while(num != 0)

{

int temp = num & base; // 二进制与 1,八进制与 7,

arr[post++] = chs[temp];

num = num >>> offset; // 二进制右移 1 位, 八进制右移 3 位

}

// 输出结果

for(int x = pos - 1; x>=0; x--)

{

System.out.print(arr[x]);

}

System.out.println(); // 输出完成后,换行

}

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值