1.將按位運算操做,尤爲是左移和右移(有無符號)整理到本身的博客中。java
重點說明清晰負數的運算過程。數組
2.byte數到十六進制字符串表現形式程序設計原理和實現方式整理到博客中。ide
3.定義函數,計算一位整型數組全部元素的和。函數
4.數組的拷貝。spa
5.堆內存默認是1/4,設計
----------------------------------------orm
java -Xmx//設置堆內存最大值內存
-Xms//設置堆內存初始值字符串
className//類名博客
---------------------------------------------------------------------
/**
* 運算符演示,重點位運算
*/
class CalcDemo {
public static void main(String[] args) {
// 位運算符
System.out.println("****** 邏輯運算符 *********");
int a = -7;//先轉換爲二進制再運算.看到-7,先算7(先用byte簡化來代int 0000 0111),而後再算-7(1111 1001)的補碼顯示
int b = 3;//0000 0011
System.out.println("a << 2 = " + (a << 2));// -28--- -7*2^2=-28 被移除的高位丟棄,空位補0
//-7(1111 1001) 向左移動2位數 1110 0100----一看是負數,算對應整數0001 1100=28 對應-28
System.out.println("a >> 2 = " + (a >> 2));// -2 被移位的二進制最高位是0的話,右移後,空缺位補0----是1的話空缺位就補1.
//-7(1111 1001) 向右邊移動二位, 移位後【11】11 1110 最高位符號位是1是負數,對應整數0000 0010=2,因此值是 -2
System.out.println("a >>> 2 = " + (a >>> 2));// 1073741822 無符號位移,被移位二進制最高位不管是0或1,空缺位都是補0
//-7整型( 11111111 11111111 11111111 1111 1001) 向右邊移動二位, 移位後【00】111111 11111111 11111111 1111 1110最高位符號位是0,是整數,直接算對應的二進制的值
System.out.println("a | b = " + (a | b));// -5 有一個位真1,就爲1 真 1111 1001 | 0000 0011 ----1111 1011----對應的整數0000 0101=5,因此-5
System.out.println("a & b = " + (a & b));// 1 有一個位0假就爲0假 1111 1001 & 0000 0011 ----0000 0001---對應的整數1
System.out.println("a ^ b = " + (a ^ b));// -6 異或運算(異或( ^ )與或( | )的不一樣之處是:當左右都爲true時,結果爲false。只有不同的時候纔是真)
//1111 1001 ^ 0000 0011 ----異或運算後1111 1010----對應的整數0000 0110=6,因此-6
System.out.println("~a = " + (~a));// 6 按位取反
//-7(1111 1001) 按位取反後0000 0110 對應的是整數6
System.out.println("~b = " + (~b));//-4
//3(0000 0011) 按位取反後 1111 1100 ----對應正數 0000 0100=4,因此是值 -4
// 邏輯運算符
boolean b1 = false;
boolean b2 = true;
System.out.println("****** 邏輯運算符 *********");
System.out.println("b1 | b2 = " + (b1 | b2));// true
System.out.println("b1 & b2 = " + (b1 & b2));// false
System.out.println("b1 ^ b2 = " + (b1 ^ b2));// true
System.out.println("!b1 = " + !b1);// true
System.out.println("b1 || b2 = " + (b1 || b2));// true
System.out.println("b1 && b2 = " + (b1 && b2));// false
// +-符號
System.out.println("****** 正負號 *********");
System.out.println("+a = " + (+a));
System.out.println("-a = " + (-a));
// 算術運算符 + - * / %
System.out.println("****** 算術運算符 *********");
System.out.println("a + b = " + (a + b));//
System.out.println("a - b = " + (a - b));//
System.out.println("a * b = " + (a * b));//
System.out.println("a / b = " + (a / b));
System.out.println("a % b = " + (a % b));
// 賦值運算符 a += b ==> a = a + b
System.out.println("****** 賦值運算符 *********");
System.out.println("a += b = " + (a += b));//
System.out.println("a -= b = " + (a -= b));//
System.out.println("a *= b = " + (a *= b));//
System.out.println("a /= b = " + (a /= b));//
System.out.println("a %= b = " + (a %= b));//
// 比較運算符
System.out.println("****** 比較運算符 *********");
System.out.println("a == b = " + (a = b));//
System.out.println("a != b = " + (a != b));//
System.out.println("a > b = " + (a > b));//
System.out.println("a >= b = " + (a >= b));//
System.out.println("a < b = " + (a < b));//
System.out.println("a <= b = " + (a <= b));//
}
}
---------------------------------------------------------------------
//2.byte數到十六進制字符串表現形式程序設計原理和實現方式整理到博客中。一個byte有8位
/**
* 將字節類型數組轉換成十六進制的字符串表現形式,好比(二進制的1111 到十進制的15 再到16進制F), 如 1111 1111 表示成16進制0x FF
*/
class Byte2Hex {
public static void main(String[] args) {
byte b = 108;//0110 1100
System.out.println(convert(b));
}
// 轉換函數
public static String convert(byte b) {
//15的值二進制0000 1111
// 1.取出字節b的低四位的數值
int low = b & 0x0F; // 低四位0-15 b是108 -----0110 1100 &0000 1111 完後大位數的四位無論是什麼都是0,就看前面小4位數,1100=12,是c
// 2.取出高四位的值,先將b向右移動4位
int high = (b >> 4) & 0x0F; // 高四位0-15 0000 0110 & 0000 1111 這裏關鍵是和0000 1111&運算完後大位數的四位無論是什麼都是0,
// 定義字符數組
char[] arr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };//這裏是從0開始,arr[0]就是0
// 拼接串
return "" + arr[high] + arr[low];
}
}
---------------------------------------------------------------------
//3.定義函數,計算一位整型數組全部元素的和。
/**
* 計算全部元素的總和
*/
class SumDemo {
public static void main(String[] args) {
int result = sum(new int[]{1,2,4,5,6});
System.out.println(result);//計算數組總和
System.out.println(multi(4));//計算數的階乘
}
// 計算數組的總和
public static int sum(int[] arr) {
int sum = 0;
// 循環數組
for (int i = 0; i < arr.length; i++) {
// 開始累加
sum = sum + arr[i];
}
return sum;
}
// 計算數的階乘
public static int multi(int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result = result * i;
}
return result;
}
}
---------------------------------------------------------------------
//4.數組的拷貝。
class ArrayCopyDemo {
/**
* @param args
*/
public static void main(String[] args) {
int[] arr1 = {2, 3, 4, 5};
int[] arr2 = new int[arr1.length];//建立一個和arr1長度相同的數組arr2
copy(arr1, arr2);
out(arr2);
}
//數組每個值的複製
private static void copy(int[] arr1, int[] arr2) {//私有方法,本類訪問
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
}
private static void out(int[] arr) {//打印一位數組
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
---------------------------------------------------------------------
5.堆內存的默認最大空間是物理內存的1/4,在運行java程序時,能夠經過 -Xms初始堆內存的大小,-Xmx設置最大堆內存的大小;