文章目录
- 1.Debug模式
- 1.1 什么是Debug模式
- 1.2 Debug介绍与操作流程
- 2. 进制的介绍与书写格式
- 2.1 进制的介绍与书写格式
- 2.2 任意进制到十进制的转换
- 2.3 进制转换-十进制到任意进制转换
- eg: 十进制到十六进制的转换
- 2.4 位运算-位移运算符
- 2.5 进制转换API
- 2.5.1 任意进制转10进制
- 2.5.2 十进制转二进制
- 2.5.2 十进制转八进制
- 2.5.2 十进制转十六进制
- 3.基础练习
- 3.1 数据反转
- 3.2 二维数组动态初始化
- 3.3 二维数组 存入 [提前创建好的一维数组] 有点vector的意思了
- 3.4 二维数组静态初始化
1.Debug模式
1.1 什么是Debug模式
是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。
1.2 Debug介绍与操作流程
- 加断点
选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可 - 运行加了断点的程序
在代码区域右键Debug执行 或者 点击工具栏小虫子 或者点击下方的小虫子 - 或者
- 或者
- 看哪里
看Debugger窗口
看Console窗口 - 点哪里
点Step Into (F5)这个箭头,也可以直接按F5 (eclipse格式快捷键是F5 默认F7) - 如何删除断点
选择要删除的断点,单击鼠标左键即可
如果是多个断点,可以每一个再点击一次。也可以一次性全部删除 - 执行到下一个断点和终止按纽
- 小技巧1: debug模式下遇到if 光标点逻辑表达式 自动显示true/false
- 注意:如果数据来源于键盘输入,一定要录入,否则卡在数据输入处,所有的debug按钮变灰,无法点击了,无法向下查看了
2. 进制的介绍与书写格式
2.1 进制的介绍与书写格式
十进制:Java中,数值默认都是10进制,不需要加任何修饰。
二进制:数值前面以0b开头,b大小写都可以。
八进制:数值前面以0开头。
十六进制:数值前面以0x开头,x大小写都可以。
注意: 书写的时候, 虽然加入了进制的标识, 但打印在控制台展示的都是十进制数据.
public static void main(String[] args) {
System.out.println("十进制:"+123);//123
System.out.println("二进制:"+0b101);//5
System.out.println("二进制:"+0B101);//5
System.out.println("八进制:"+012);//10
System.out.println("十六进制:"+0x12);//18
System.out.println("十六进制:"+0X12);//18
}
2.2 任意进制到十进制的转换
每位乘以权值即可(计组基础知识)
2.3 进制转换-十进制到任意进制转换
eg: 十进制到十六进制的转换
2.4 位运算-位移运算符
没有 <<<
public static void main(String[] args) {
System.out.println(12 << 1);//24
System.out.println(12 << 2);//48
System.out.println(-12 >>> 1);//无符号数处理 最高位添0 变成一个很大的数字
System.out.println(-12 >> 1);//-6
System.out.println( ~(byte)128 );//1000 0000 => 0111 1111 也即是 127
}
2.5 进制转换API
2.5.1 任意进制转10进制
public static int parseInt(String s,int radix)
public static long parseLong(String s,int radix)
数字为String形式,将其作为 radix 进制数解读 转换为10进制 以int/long返回
正负显然都行
radix不仅可以是 2 8 16 还可以是任意合法进制 3 4 5 6 7 …
public static void main(String[] args) {
System.out.println(Integer.parseInt("1111",2));//15
System.out.println(Integer.parseInt("-1111",2));//-15
System.out.println(Integer.parseInt("24",8));//20
System.out.println(Integer.parseInt("-24",8));//-20
System.out.println(Integer.parseInt("1A",16));//26
System.out.println(Integer.parseInt("-1A",16));//-26
System.out.println();
System.out.println(Integer.parseInt("120",3));//1*9+2*3=15 任意进制包括3进制
//System.out.println(Integer.parseInt("-0x1A",16));//-26 不能加0x前缀
//System.out.println(Integer.parseInt("0x1A"));//-26 也不行
}
2.5.2 十进制转二进制
public static String toBinaryString(int i)
i为负数时输出补码
System.out.println(Integer.toBinaryString(127));
System.out.println(Integer.toBinaryString(-127));//输出机器数补码
2.5.2 十进制转八进制
public static String toOctalString(int i)
i为负数时也是对应二进制的补码转八进制的形式
System.out.println(Integer.toOctalString(20));
System.out.println(Integer.toOctalString(-20));
2.5.2 十进制转十六进制
public static String toHexString(int i)
i为负数时依然是补码形式 毕竟补码才是机器数嘛
System.out.println(Integer.toHexString(15));
System.out.println(Integer.toHexString(-15));//补码
Float,Double 类似使用吧,不能转的形式直接报错提示咯
3.基础练习
3.1 数据反转
案例需求 :
已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换,
交换后的数组 arr = {50, 46, 37, 28, 19}; 并在控制台输出交换后的数组元素
public static void main(String[] args) {
int[] arr = { 19, 28, 37, 46, 50 };
System.out.print("反转前:");
for(int i : arr) System.out.print(i+" ");
int k=0,j=arr.length-1;
while(k<j){
int t=arr[k];
arr[k]=arr[j];
arr[j]=t;
k++;j--;
}
System.out.print("\n反转后:");
for(int i : arr) System.out.print(i+" ");
}
3.2 二维数组动态初始化
概述 : 二维数组也是一种容器,不同于一维数组,该容器存储的都是一维数组容器
动态初始化格式:
数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组,可以存放多少个一维数组
n表示每一个一维数组,可以存放多少个元素
public static void main(String[] args) {
int[][] arr = new int[3][3];
System.out.println(arr); //[[I@1b6d3586 两个[开头 二维数组
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);//全部输出一维数组的地址
System.out.println(arr[0][0]);
System.out.println(arr[1][1]);
System.out.println(arr[2][2]);//单个元素 发现默认值是0 帮你初始化了
arr[0][0] = 11;
arr[0][1] = 22;//复制后输出
System.out.println(arr[0][0]);
System.out.println(arr[0][1]);
}
3.3 二维数组 存入 [提前创建好的一维数组] 有点vector的意思了
普通数组似乎可以当作c++的vector用了
但是长度一旦定死,数组应该不能改了,仅仅初始化时不定长
public static void main(String[] args) {
int[] arr1 = {11,12,13};
int[] arr2 = {21,22,23};
int[] arr3 = {31,32,33,999};//多了一个元素 无妨
int[][] arr = new int[3][3];
arr[2][1] = 100;
arr[0]=arr1;
arr[1]=arr2;
arr[2]=arr3;//竟然可以直接这么赋值 真容器啊 不错
System.out.println(arr[1][2]);//23
System.out.println(arr[2][1]);//32(100被直接覆盖了)
System.out.println(arr[2][3]);//甚至可以正常输出 普通数组俨然成了vector了
}
3.4 二维数组静态初始化
完整格式 : 数据类型[][] 变量名 = new 数据类型[][]{ {元素1, 元素2…} , {元素1, 元素2…}
简化格式 : 数据类型[][] 变量名 = { {元素1, 元素2…} , {元素1, 元素2…} …};
public static void main(String[] args) {
int[] arr1={11,22,33};
int[] arr2={44,55,66,77};
int[][] arr={{11,22,33},{44,55,66,77}};//★ 静态初始化 自动定义为 不定长数组
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++) System.out.print(arr[i][j]+" ");
System.out.println();
}
//System.out.println(arr[0][3]);//报错没有
// //java数组初始化很灵活 但毕竟是数组,初始化后就定死了
System.out.println();
int[][] arr0={arr1,arr2};//★ 静态初始化
for(int i=0;i<arr0.length;i++){
for(int j=0;j<arr[i].length;j++) System.out.print(arr0[i][j]+" ");
System.out.println();
}
}