下面大家跟着我的问题,可以跟着我一起向 chatgpt老师学习,相信我的问题可能你也会感兴趣。
在Java中,boolean类型的数组默认初始化为false。也就是说,如果你创建了一个boolean类型的数组,但是没有初始化它,那么它的每个元素都将被初始化为false。
例如,下面这段代码创建了一个长度为3的布尔类型数组arr,由于没有对数组进行显式初始化,所以数组的每个元素都被初始化为false:
boolean[] arr = new boolean[3];
System.out.println(Arrays.toString(arr)); // 输出 [false, false, false]
(立马就可以简单语句来向你验证它说的正确性)
如果需要对boolean类型的数组进行初始化,可以使用循环或Arrays.fill()方法来实现,例如:
boolean[] arr = new boolean[3];
for (int i = 0; i < arr.length; i++) {arr[i] = true; // 所有元素都设置为 true
}
System.out.println(Arrays.toString(arr)); // 输出 [true, true, true]boolean[] arr2 = new boolean[3];
Arrays.fill(arr2, true); // 所有元素都设置为 true
System.out.println(Arrays.toString(arr2)); // 输出 [true, true, true]
Arrays.fill
学习到了新的技巧可以使用到arrays.fill
(真的像是大师一样,你有什么问题,包括修改代码的问题,你都可以向他提问,他能回答得八九不离十)
!vis[i]表示vis[i]的逻辑取反,即如果vis[i]的值为true,则!vis[i]的值为false;如果vis[i]的值为false,则!vis[i]的值为true。
在这个代码中,vis是一个boolean类型的数组,vis[i]表示数组中第i个元素的值,如果该元素为false,则表示该元素还没有被访问过,因此执行if(! vis[i])语句块中的代码,将vis[i]设置为true,表示该元素已经被访问过了。这通常是在进行深度优先搜索(DFS)等算法时,用来标记哪些元素已经被访问过的一种常见方法。
通过Java编写的程序,可以打印出二进制数000~111:
public class BinaryPrinter {public static void main(String[] args) {for (int i = 0; i <= 7; i++) {String binary = Integer.toBinaryString(i);String paddedBinary = String.format("%3s", binary).replace(' ', '0');System.out.println(paddedBinary);}}
}
程序使用了Java内置的Integer.toBinaryString方法将整数转换成二进制字符串,然后用String.format方法添加前导零以保证输出的字符串长度为3,最后使用System.out.println方法将二进制字符串打印到控制台上。
Integer.toBinaryString使用了integer.tobinarystring 添加前导0,保证输出字符串长度为3
public class BinaryPrinterDFS {public static void main(String[] args) {dfs("", 3);}public static void dfs(String current, int depth) {if (depth == 0) {System.out.println(current);return;}dfs(current + "0", depth - 1);dfs(current + "1", depth - 1);}
}
在这个程序中,return语句的作用是终止当前方法的执行并返回调用者。当程序执行到return语句时,它会立即退出方法,并将控制权返回给调用该方法的代码。在这个程序中,return语句用于终止递归并回溯到调用者。
具体来说,当dfs方法递归调用自身时,每个递归实例都会有自己的current和depth变量。当depth变量为0时,表示我们已经生成了完整的二进制字符串,并且可以将其打印到控制台上。此时,我们需要终止递归并回溯到调用者,而return语句正是用于完成这个任务的。
在这个程序中,我们没有指定return语句返回的值,因为我们不需要返回任何值。我们只需要使用return语句来终止方法并返回到调用者即可。