1.将按位运算操作,尤其是左移和右移(有无符号)整理到自己的博客中。
重点说明清晰负数的运算过程。
2.byte数到十六进制字符串表现形式程序设计原理和实现方式整理到博客中。
3.定义函数,计算一位整型数组所有元素的和。
4.数组的拷贝。
5.堆内存默认是1/4,
----------------------------------------
java -Xmx//设置堆内存最大值
-Xms//设置堆内存初始值
className//类名
----------------------
1,答:
位运算符主要有<<,>>,>>>,&,|,^,在运算时主要以二进制形式运算。
其中
<< : 左移,空位补0,正数左移对应的是乘以2的过程,
但是移动过程中如果符号位被1填补,则正数会变成负数。
负数在左移过程中可能为负可能为正,取决于二进制形式
>> : 带符号右移,最高位是1,则空位补1,最高位是0,则空位补0,
正数右移还是正数,对应的是除以2的幂的过程。负数带符号右移仍然是负数。
>>> : 无符号右移,无论最高位是0或者1,空位都拿0补,正数无符号右移还是正数,
对应除以2的过程,负数无符号右移会变成正数。
& : 同一个位上的两个二进制数,同为1时,结果为1,有一个为0,结果为0
| : 同一个位上的两个二进制数,任意一者为1,结果为1,两者都为0时,结果为0
^ : 同一位上的两个二进制数,互不相同时,结果为1,相同则结果为0,
此外^还有一个性质 n^m^m=n,比如 1101 ^ 1000 = 0101,0101 ^ 1000 = 1101
负数的运算方式为:对应正数取反再加一得到,也就是正数的补码形式。
2,byte数到十六进制字符串表现形式程序设计原理
/*
byte类型占8个二进制位,十六进制每位有4个二进制位组成。所以byte类型数据转变为十六进制,最多两位。
要想取出byte数的低四位,只需要与 1111进行&运算即可,获取到低四位后,通过查表法转换成十六进制
之后再取byte数的高四位,先将该数右移4位后,再与1111进行&运算,获取高四位后,通过查表法转成十六进制
*/
class ByteToHex
{
public static void main(String[] args)
{
byte num = 127;
System.out.println("byte类型的num的十六进制为 :"+byteToHex(num));
}
public static String byteToHex(byte num)
{
char[] chs = new char[]{'0','1','2',
'3','4','5','6','7','8','9',
'a','b','c','d','e','f'};
//记录byte类型变量num的低四位
int low = num & 0x0f;
//记录byte类型变量num的高四位
num = (byte)(num >> 4);
int high = num &0x0f;
//int high = (num >> 4) & 0x0f;
return ""+chs[high]+chs[low];
}
}
3,定义函数,计算一位整型数组所有元素的和。
class SumArray
{
public static void main(String[] args)
{
int[] arr = new int[]{1,3,4,5,2,9};
System.out.println("数组中所有元素的和为 : "+getSumArray(arr));
}
public static int getSumArray(int[] arr)
{
int sum=arr[0];
for(int i=1;i<arr.length;i++)
{
sum = sum +arr[i];
}
return sum;
}
}
4,数组的拷贝。
class CopyArray
{
public static void main(String[] args)
{
int[] arr1 = new int[]{1,3,4,5,8};
int[] arr2 = new int[arr1.length];
printArray(arr2);
System.out.println("-------------");
printArray(copyArray(arr1,arr2));
}
public static int[] copyArray(int[] arr1, int[] arr2)
{
for(int i=0; i<arr1.length; i++)
{
arr2[i]=arr1[i];
}
return arr2;
}
public static void printArray(int[] arr)
{
for(int i=0; i<arr.length; i++)
{
System.out.print(arr[i]+"\t");
}
System.out.println();
}
}
5,
通过java -Xmx<size>设置对内存最大值
通过java -Xms<size>设置堆内存初始值
通过java -Xss<size>设置栈内存大小