分享一个宝藏级 Java 插件
最近在学习伯克利 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 开发人员提供了很大的便利,当然这也是因人而异的,有的人特别需要结合这种图示的方式来学习、工作或者解决问题,有的人不需要这些。大家按需所取吧,今天的分享就到这里。
分享一个宝藏级 Java 插件相关推荐
- 实用常识 | 分享一个好用的插件解决浏览器图片下载问题(老白嫖怪了)
正值Yi情肆虐于我燕赵大地,时至年关Bing毒多处零散爆发.老弟今年12岁整,本命年,恰是小升初的关键时刻,学校见状提前开始了寒假生活,对他来说岂不快哉?可是于我而言假期多了一个辅导他功课的任务.这不 ...
- png 微软ppt 透明度_挖到一个宝藏级的PPT素材网站,哭着五星好评,免费又实用...
今天分享一个超级实用的PPT素材网站,有了它,就再也不用去各大图片素材网站上费尽心机的找背景图了. 好了,不兜圈子了!直接上网址: Undraw 网址:https://undraw.co/illust ...
- 再见了Dubbo!正式拥抱下一个神级Java开发框架!
都2021年了 还没用过微服务 吗?中台架构还只是听说过? 2020年的双十一,天猫订单处理峰值达到58.3万笔/秒,2020年的双十二,数据量高达1200万+.2021年的12306网站单日浏览峰值 ...
- KICAD | 分享一个必须安装的插件Interactive HTML BOM plugin for KiCad
文章目录 一.前言 二.Interactive HTML BOM plugin for KiCad 2.1.下载 2.2.安装 2.3.使用 一.前言 PCBA设计完成后,必须花时间整理BOM.KIC ...
- mysql视频教程特密码_分享一个MySQL 密码增强插件
介绍 以前没有太注意MySQL密码安全策略的配置方法,只是人为了将密码设为复杂密码,但是没有找到配置的方法,今天姜承尧的微信公众号正好发布了一篇关于这个的文章,所以在这里也顺便将方法写下来.首先该功能 ...
- python制作浏览器插件_分享一个火车浏览器脚本插件python中文分词
最近在采集一批信息,发现火车浏览器的自带分词插件,分词效果不是很理想,在网上找了一个API分词接口:pullword 其实对于火车浏览器脚本插件用PHP和python都可以写,之前做了一个PHP分词插 ...
- 中望CAD的引线标注格式怎么改_分享一个CAD逆天神插件,记再多的快捷键,画图也不是我的对手...
相信每位进入设计院的孩纸们,一定都经历过CAD的洗(cui)礼(can),一天到晚的画图,最惨的是还画的贼慢. 平时画图时,除了CAD的熟练使用之外,还要把快捷键记全,速度才能上来,会用快捷键是制图速 ...
- 一个简单的Java计时器项目,附源码
学Java开发的小伙伴都会想着做一些项目来检验自己的学习成果,今天小千就来分享一个简单的Java计时器项目,源码也放在文中,大家可以参考一下. Java计时器项目 开发环境:win8+eclipse+ ...
- 堪比Topogun的神级拓扑插件RetopoFlow
推荐:将 NSDT场景编辑器 加入你的3D开发工具链 以往我们需要拓扑时一般都是借助到Topogun这个软件,今天来介绍下Blender中一个神级拓扑插件RetopoFlow,如果使用Blende ...
最新文章
- R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(输出多个分组、自定义颜色配置)实战
- c#导出包含图片的word文档
- CMakeLists.txt
- 学Python10大理由:功能多、资源多、挣钱多!
- spring的Bean属性
- arm B和BL指令浅析
- Linux内核编程广泛使用的前向声明(Forward Declaration)
- 常程加盟小米,“电磁炉”组合出道,网友喊话雷军也接收一下罗永浩!
- 开源网络数据平面生态:软件正在吞食整个世界
- 云服务器支持javascript,云服务器支持javascript
- iOS GBK转换为Utf8
- 168.Excel Sheet Column Title
- XShell安装配置教程
- 鸿蒙系统摩尔纹怎么去,PS摩尔纹如何消除?摩尔纹消除方法图文分享
- Detours内联HOOK
- web 系统发展历程
- Java耗时打印工具类
- 数据库之视图和触发器
- linux服务器新装hba卡,EmulexHBA卡在Linux下的安装方法
- 使用matlab分析一段声音信号的均方根
热门文章
- (原創) 如何使用ModelSim-Altera對Nios II仿真? (SOC) (Nios II) (SOPC Builder) (ModelSim) (DE2)...
- C++ MFC打开图片并进行简单算法处理
- 小灰,你出书花了多少钱?
- 机器学习相关学习视频
- 【游戏逆向】FPS网络游戏自动瞄准漏洞分析以及实现二
- 几种常用交叉验证(cross validation)方式的比较
- Rationla Rose
- Xshell和Xftp使用(非商业用途可以免费使用啦)
- .fire勒索病毒如何删除 .fire后缀文件恢复(Dharma)
- 知识图谱学习(笔记整理)