0
点赞
收藏
分享

微信扫一扫

05-java基础-Debug、进制(API)、数组基础练习


文章目录

  • ​​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介绍与操作流程

  • 加断点
    选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可
  • 05-java基础-Debug、进制(API)、数组基础练习_二维数组

  • 运行加了断点的程序
    在代码区域右键Debug执行 或者 点击工具栏小虫子 或者点击下方的小虫子
  • 05-java基础-Debug、进制(API)、数组基础练习_二维数组_02

  • 或者
  • 05-java基础-Debug、进制(API)、数组基础练习_二维数组_03

  • 或者
  • 05-java基础-Debug、进制(API)、数组基础练习_二维数组_04

  • 看哪里
    看Debugger窗口
    看Console窗口
  • 05-java基础-Debug、进制(API)、数组基础练习_二维数组_05

  • 点哪里
    点Step Into (F5)这个箭头,也可以直接按F5 (eclipse格式快捷键是F5 默认F7)
  • 05-java基础-Debug、进制(API)、数组基础练习_十进制_06

  • 如何删除断点
    选择要删除的断点,单击鼠标左键即可
    如果是多个断点,可以每一个再点击一次。也可以一次性全部删除
  • 05-java基础-Debug、进制(API)、数组基础练习_进制_07

  • 执行到下一个断点和终止按纽
  • 05-java基础-Debug、进制(API)、数组基础练习_进制_08

  • 小技巧1: debug模式下遇到if 光标点逻辑表达式 自动显示true/false
  • 05-java基础-Debug、进制(API)、数组基础练习_二维数组_09

  • 注意:如果数据来源于键盘输入,一定要录入,否则卡在数据输入处,所有的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
}

05-java基础-Debug、进制(API)、数组基础练习_java_10

2.2 任意进制到十进制的转换

每位乘以权值即可(计组基础知识)

2.3 进制转换-十进制到任意进制转换

eg: 十进制到十六进制的转换

2.4 位运算-位移运算符

05-java基础-Debug、进制(API)、数组基础练习_十进制_13


没有 <<<

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
}

05-java基础-Debug、进制(API)、数组基础练习_java_14

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));//输出机器数补码

05-java基础-Debug、进制(API)、数组基础练习_java_15

2.5.2 十进制转八进制

public static String toOctalString(int i)
i为负数时也是对应二进制的补码转八进制的形式

System.out.println(Integer.toOctalString(20));
System.out.println(Integer.toOctalString(-20));

05-java基础-Debug、进制(API)、数组基础练习_java_16

2.5.2 十进制转十六进制

public static String toHexString(int i)
i为负数时依然是补码形式 毕竟补码才是机器数嘛

System.out.println(Integer.toHexString(15));
System.out.println(Integer.toHexString(-15));//补码

05-java基础-Debug、进制(API)、数组基础练习_进制_17


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+" ");
}

05-java基础-Debug、进制(API)、数组基础练习_二维数组_18

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了
}

05-java基础-Debug、进制(API)、数组基础练习_进制_19

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();
}
}

05-java基础-Debug、进制(API)、数组基础练习_java_20


举报

相关推荐

0 条评论