java SE
for—each 不能操作元素本身
我的需求
将只包含 1和0 的二维数组的所有元素反置,即所有1变成0、0变成1。
原始数组:
我的做法
使用for—each操作数组:
public class test {
public static void main(String[] args) {
int[][] array = {{0,0,1,1},{1,0,1,0},{1,1,0,0}};
// for-each 操作
for(int[] arr : array) {
for(int k : arr) {
k ^= 1;
}
}
}
}
乍一看,没啥问题。
但是,我们来看看操作后的数组:
数组元素完全没有变化,和原始数组一模一样。
查了一下,for—each的底层实现是迭代器,就是在循环中拿到的是每一个元素的值(可以理解为拷贝其值),而不是每一个元素本身。
因此,我们并不能使用for—each来对数组元素本身进行操作,只能使用数组元素本身。
正确的做法
使用正常的for循环,来对数组元素本身进行操作:
public class test {
public static void main(String[] args) {
int[][] array = {{0,0,1,1},{1,0,1,0},{1,1,0,0}};
// for循环操作
for(int i=0; i<array.length; i++) {
for(int j=0; j<array[i].length; j++) {
array[i][j] ^= 1;
}
}
// 遍历
for(int[] arr : array) {
for(int k : arr) {
System.out.print(k + " ");
}
System.out.println();
}
}
}
运行结果:
结论
for—each的底层实现是迭代器,只适合拿到元素的值,然后进一步操作的情况,它并不能影响元素本身,不适合对元素本身进行操作的情况。
持续跟新中。。。
Maven
Plugins里面出现红线
错误样式:
出错原因:
插件没有下载完整 或 没有下载,需要下载完整依赖包。
解决方法:
进入 C:Usersxx.m2 epositoryorgapachemavenplugins目录下,如图:
哪个插件有红线,就去对应的文件夹下删除所有的文件,然后重新导入插件:
等待下载,完成之后就不会报红线了。
持续更新中。。。
Spring Boot
IDEA新建项目时,没有Spring Initializr选项
解决方法:
在settings -> Plugins 里面搜索spring boot,勾选上,然后再重启下idea,就可以了。
如果Plugins里面没有spring boot的话,先安装下,再勾选。
IDEA创建spring boot项目,没有src文件也没有依赖得标签
错误样式:
错误原因:
maven无法从互联网下载项目包,需要配置maven。
解决方法:
点击OK。
删除当前项目,重新创建,就会有src目录,如图所示:
打包错误:xxxxx-0.0.1-SNAPSHOT.jar中没有主清单属性
错误样式:
解决方法:
在pom.xml中添加如下配置,会自动检测主类。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
打包错误:Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0...
解决方法:
修改maven-resources-plugin的版本。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--在这里修改版本-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
</plugin>
<!---->
</plugins>
</build>
持续跟新中。。。