java踩雷日记--new
JAVA -- New 日记
2023-09-11 14:15:01 时间
java踩雷日记--new
觉得有用的话,欢迎一起讨论相互学习~
1.数组元素中元素没有new导致数组为空
SolutionSet[] Donminant_pop;
Donminant_pop = new SolutionSet[NUMTASK];
Solution newSolution = new Solution(problemSet_);
B_pop[taskID].add(newSolution);
- 错在B_pop[taskID]应该是一个SolutionSet,但是我没有new,所以导致数组中元素为空
B_pop[taskID] = new SolutionSet(ND_eachtask);
2.要用的对象要一次性new完,最好不要在调用的过程中或者循环的工程中重复new出新的对象
- new一个对象时,传给一个变量名时,其中的数据会初始化,因此原先的元素都不保留了。对于List类型的元素来说有clear元素的效果
// Create the initial solutionSet B0
for (int taskID = 0; taskID < NUMTASK; taskID++) {
//初始化所有pop
for (int popindex = 0; popindex < ND_eachtask; popindex++) {
Solution newSolution = new Solution(problemSet_);
problemSet_.get(taskID).evaluate(newSolution);
problemSet_.get(taskID).evaluateConstraints(newSolution);
evaluations++;
// 初始建立种群时,为每个个体随机分配一个合适的任务即SkillFactor
newSolution.setSkillFactor(taskID);
B_pop[taskID] = new SolutionSet(ND_eachtask);
B_pop[taskID].add(newSolution);
}
}
- 例如此处就写错了,此处B_pop中只有一个元素,即B_pop[0],而且B_pop[0]中只有一个元素,就是newSolution,因为内层循环时,每次都会更新B_pop中的元素,所以B_pop中的元素没有保留。而且每次都在这个基础上添加一个元素,然后又重置了。
- 只有将B_pop的new函数写在循环的外部才是正确的。
// Create the initial solutionSet B0
for (int taskID = 0; taskID < NUMTASK; taskID++) {
//初始化所有pop
B_pop[taskID] = new SolutionSet(ND_eachtask);
for (int popindex = 0; popindex < ND_eachtask; popindex++) {
Solution newSolution = new Solution(problemSet_);
problemSet_.get(taskID).evaluate(newSolution);
problemSet_.get(taskID).evaluateConstraints(newSolution);
evaluations++;
// 初始建立种群时,为每个个体随机分配一个合适的任务即SkillFactor
newSolution.setSkillFactor(taskID);
B_pop[taskID].add(newSolution);
}
}
- 这样B_pop中有NUMTASK个维度,而每个维度中又有ND_eachtask个元素。
3.要注意new对象的生命周期
- 对于类型的属性的来说,其生命周期存在于该类型变量的所有函数,但是局部变量只存在于变量域中。
相关文章
- CSDN日报191016:Java纯干货分享:史上最全的JAVA工程师面试题汇总
- JavaDemo——java嵌入Sqlite数据库
- Java--static interface
- Java经典实例:实现一个简单堆栈
- java object为空判断null
- 浅析Java对集合进行操作时报java.util.ConcurrentModificationException并发修改异常问题:产生原因、单线程/多线程环境解决、CopyOnWriteArrayList线程安全的ArrayList、fail-fast快速失败机制防止多线程修改集合造成并发问题
- 『Java练习生的自我修养』java-se进阶⁵ • 常用IO流
- 【Java】【Javaweb】不用点技术活能找到npy?❤️来看这篇邮件发送❤️(1024属于程序员的节日)
- java模式:建造者模式
- java--css+js做的树形菜单(完整版)
- 《Java并发编程实战》第十二章 测试并发程序 读书笔记
- Java Simon--性能瓶颈分析工具
- Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍--转载
- Garbage Collection Optimization for High-Throughput and Low-Latency Java Applications--转载
- 一个Web Project引用多个Java Project在Eclipse下的配置--转载
- 也谈BIO | NIO | AIO (Java版--转)
- Java小白入门200例67之选择排序
- java中一个简单的下载示例