java-在这里调用实例方法或声明变量更好吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-在这里调用实例方法或声明变量更好吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1621字,纯文字阅读大概需要3分钟。
内容图文
这是一种将两种有序子扑克牌子合并到一个有序牌组中的方法的两种方法:
方法1:
public static Deck merge(Deck d1, Deck d2) {
Deck result = new Deck(d1.cards.length + d2.cards.length);
int i = 0;
int j = 0;
for (int k = 0; k < result.cards.length; k++) {
if (j >= d2.cards.length || i < d1.cards.length && d1.cards[i].compareTo(d2.cards[j]) <= 0) {
result.cards[k] = d1.cards[i];
i++;
} else {
result.cards[k] = d2.cards[j];
j++;
}
}
return result;
}
方法二:
public static Deck merge(Deck d1, Deck d2) {
Deck result = new Deck(l1+l2);
Card[] c1 = d1.getCards();
Card[] c2 = d2.getCards();
int l1 = c1.length;
int l2 = c2.length;
Card[] sorted = new Card[l1+l2];
int i = 0;
int j = 0;
for (int k = 0;k<sorted.length;k++){
if (j >= c2.length || i < c1.length && c1[i].compareTo(c2[j]) <= 0){
sorted[k] = c1[i];
i++;
}
else {
sorted[k] = c2[j];
j++;
}
}
}
result.cards = sorted;
return result;
}
哪种方法更有效?实际上有什么区别吗?
据我所知,第一种方法必须生成大量对象才能完成一个运行,比如说两个26张卡片副牌.但是,该方法本身将存储较少的信息,这使我怀疑哪种方法会更有效.
我知道在这种规模上可能并没有太大关系,但是作为Java的新手,我很好奇知道什么是最佳实践以及为什么.我尝试搜索类似的情况,但没有找到任何解决方案.如果有人能指出我正确的方向,将不胜感激.
解决方法:
您的第一种方法将创建两个对象-新的Deck对象,以及存储卡的数组(由Deck构造函数创建的数组).第二种方法将创建3个对象-新的Deck,Deck构造函数创建的数组以及名为sorted的数组.
但是,这并不重要,因为您根本没有创建Card对象.您只是将两个卡座中的Card对象的引用复制到新卡座!将卡分配给阵列不会创建新卡.就像以下内容不会创建两个对象:
Object obj = new Object();
Object obj2 = obj;
因此,实际上这两种方法是相同的.我建议您使用最容易阅读的一种.
内容总结
以上是互联网集市为您收集整理的java-在这里调用实例方法或声明变量更好吗?全部内容,希望文章能够帮你解决java-在这里调用实例方法或声明变量更好吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。