最近在学习伯克利 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 中的呈现,代码如下:

​​​​​​​

@Testpublic 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 开发人员提供了很大的便利,当然这也是因人而异的,有的人特别需要结合这种图示的方式来学习、工作或者解决问题,有的人不需要这些。大家按需所取吧,今天的分享就到这里。

分享一个宝藏级 Java 插件相关推荐

  1. 实用常识 | 分享一个好用的插件解决浏览器图片下载问题(老白嫖怪了)

    正值Yi情肆虐于我燕赵大地,时至年关Bing毒多处零散爆发.老弟今年12岁整,本命年,恰是小升初的关键时刻,学校见状提前开始了寒假生活,对他来说岂不快哉?可是于我而言假期多了一个辅导他功课的任务.这不 ...

  2. png 微软ppt 透明度_挖到一个宝藏级的PPT素材网站,哭着五星好评,免费又实用...

    今天分享一个超级实用的PPT素材网站,有了它,就再也不用去各大图片素材网站上费尽心机的找背景图了. 好了,不兜圈子了!直接上网址: Undraw 网址:https://undraw.co/illust ...

  3. 再见了Dubbo!正式拥抱下一个神级Java开发框架!

    都2021年了 还没用过微服务 吗?中台架构还只是听说过? 2020年的双十一,天猫订单处理峰值达到58.3万笔/秒,2020年的双十二,数据量高达1200万+.2021年的12306网站单日浏览峰值 ...

  4. KICAD | 分享一个必须安装的插件Interactive HTML BOM plugin for KiCad

    文章目录 一.前言 二.Interactive HTML BOM plugin for KiCad 2.1.下载 2.2.安装 2.3.使用 一.前言 PCBA设计完成后,必须花时间整理BOM.KIC ...

  5. mysql视频教程特密码_分享一个MySQL 密码增强插件

    介绍 以前没有太注意MySQL密码安全策略的配置方法,只是人为了将密码设为复杂密码,但是没有找到配置的方法,今天姜承尧的微信公众号正好发布了一篇关于这个的文章,所以在这里也顺便将方法写下来.首先该功能 ...

  6. python制作浏览器插件_分享一个火车浏览器脚本插件python中文分词

    最近在采集一批信息,发现火车浏览器的自带分词插件,分词效果不是很理想,在网上找了一个API分词接口:pullword 其实对于火车浏览器脚本插件用PHP和python都可以写,之前做了一个PHP分词插 ...

  7. 中望CAD的引线标注格式怎么改_分享一个CAD逆天神插件,记再多的快捷键,画图也不是我的对手...

    相信每位进入设计院的孩纸们,一定都经历过CAD的洗(cui)礼(can),一天到晚的画图,最惨的是还画的贼慢. 平时画图时,除了CAD的熟练使用之外,还要把快捷键记全,速度才能上来,会用快捷键是制图速 ...

  8. 一个简单的Java计时器项目,附源码

    学Java开发的小伙伴都会想着做一些项目来检验自己的学习成果,今天小千就来分享一个简单的Java计时器项目,源码也放在文中,大家可以参考一下. Java计时器项目 开发环境:win8+eclipse+ ...

  9. 堪比Topogun的神级拓扑插件RetopoFlow

    推荐:将  NSDT场景编辑器  加入你的3D开发工具链 以往我们需要拓扑时一般都是借助到Topogun这个软件,今天来介绍下Blender中一个神级拓扑插件RetopoFlow,如果使用Blende ...

最新文章

  1. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(输出多个分组、自定义颜色配置)实战
  2. c#导出包含图片的word文档
  3. CMakeLists.txt
  4. 学Python10大理由:功能多、资源多、挣钱多!
  5. spring的Bean属性
  6. arm B和BL指令浅析
  7. Linux内核编程广泛使用的前向声明(Forward Declaration)
  8. 常程加盟小米,“电磁炉”组合出道,网友喊话雷军也接收一下罗永浩!
  9. 开源网络数据平面生态:软件正在吞食整个世界
  10. 云服务器支持javascript,云服务器支持javascript
  11. iOS GBK转换为Utf8
  12. 168.Excel Sheet Column Title
  13. XShell安装配置教程
  14. 鸿蒙系统摩尔纹怎么去,PS摩尔纹如何消除?摩尔纹消除方法图文分享
  15. Detours内联HOOK
  16. web 系统发展历程
  17. Java耗时打印工具类
  18. 数据库之视图和触发器
  19. linux服务器新装hba卡,EmulexHBA卡在Linux下的安装方法
  20. 使用matlab分析一段声音信号的均方根

热门文章

  1. (原創) 如何使用ModelSim-Altera對Nios II仿真? (SOC) (Nios II) (SOPC Builder) (ModelSim) (DE2)...
  2. C++ MFC打开图片并进行简单算法处理
  3. 小灰,你出书花了多少钱?
  4. 机器学习相关学习视频
  5. 【游戏逆向】FPS网络游戏自动瞄准漏洞分析以及实现二
  6. 几种常用交叉验证(cross validation)方式的比较
  7. Rationla Rose
  8. Xshell和Xftp使用(非商业用途可以免费使用啦)
  9. .fire勒索病毒如何删除 .fire后缀文件恢复(Dharma)
  10. 知识图谱学习(笔记整理)