最近在学习伯克利 CS 61b 公开课时候,发现了一个 Java 插件 Java Visualizer,主要用于观察程序执行时的变量和方法的变化情况,可以在Debug 模式下一步一步的观察到程序变化的可视化状态图,配合代码调试。
什么是 Java Visualizer
是一个Java 的可视化工具,它有一个浏览器内的交互式开发环境,可以直接浏览器上执行代码,并观察代码每一步的变化。
这是它的网站地址:
https://cscircles.cemc.uwaterloo.ca//java_visualize/#
同时它也提供了一个 IDEA 插件,可以直接从 Marketplace 里面搜索这个插件 安装即可,下面着重介绍在 IDEA 里面的使用
使用 Java Visualizer 来探索代码
我们平时在进行 debug 的时候 可能存在一些“只缘身在此山中”的感觉,一步一步的代码走下去,有的时候并不是很好的定位问题,尤其是一些复杂情况下更是如此。有的人属于视觉型选手,看着代码一步一步走 可能真的找不到问题所在,要是把这部分代码的结构和脉络呈现出来 可能一眼就找到问题了。话不多说,下面几个例子来认识一下 Java Visualizer
示例1:数组赋值
定义一个数组,然后通过 for 循环给每一个元素赋值
public class ArrayExample {
public static void main(String[] args) {
int [] input = new int[5];
for(int i = 0; i < 5; i++){
input[i] = i + 1;
}
}
}
然后我们可以通过 debug 模式下来观察这个数组的情况,断点设置第三行处定义数组 Java Visualizer 呈现的页面如下图所示:
在执行 for 循环时,可以清晰地看到数组中元素的每个值的赋值的变化,在 Java Visualizer 呈现如下图所示:
示例2:计算二维 int 数组的行和
这是CS 61B 课程里的一个二维 int 数组计算每个行元素和的方法,写了一个测试方法来测试,用这个来展现一下二维数组以及调用方法在Java Visualizer 中的呈现,代码如下:
@Test
public void testAllRowSums() {
int[][] input = { {1, 3, 4}, {1}, {5, 6, 7, 8}, {7, 9} };
int[] actual = allRowSums(input);
int[] expected = { 8, 1, 26, 16 };
for (int i=0;i<actual.length;i++) {
assertEquals(expected[i], actual[i]);
}
}
public static int[] allRowSums(int[][] arr) {
int[] sum = new int[arr.length];
for (int i=0;i<arr.length;i++) {
for (int j=0;j<arr[i].length;j++) {
sum[i] += arr[i][j];
}
}
return sum;
}
同样是通过 debug 模式进入,首先是定义二维数组,断点设置在第三行
然后依次往下进行,下面是调用计算和方法,返回一个int 类型数组存储每一行的和
测试方法完整过程如下所示,可以清晰看到每个变量所对应的值
以上两个示例带你认识 Java Visualizer ,它为我们 Java 开发人员提供了很大的便利,当然这也是因人而异的,有的人特别需要结合这种图示的方式来学习、工作或者解决问题,有的人不需要这些。大家按需所取吧,今天的分享就到这里。