java - Android开发中比Switch更有效的方法(Java)

标签 java android performance switch-statement

我正在 Android Studio (Java) 中开发游戏。在我的项目中,有一个方法用于生成对象的实例并将它们填充到 ArrayList 中。基本上它的作用就是让“敌方 spaceship ”“随机”向玩家射击。换句话说,在每一帧之后,该方法都会生成一个随机数,如果该数字为 1,则 ArrayList 中将填充一个“激光爆炸”对象实例,该实例使敌方 spaceship 进行射击。

我的问题是:是否有更好且成本更低的方法来模拟此类事件?或者也许有一种方法可以使现有的方法更有效且成本更低?

方法如下:

public static void generateRandomNumber(ArrayList<EnemyShipLaserBlast> listOfLaserBlasts, int x, int y) 
{
    Random random = new Random();
    int number = random.nextInt(50);
    switch (number) {
        case 1:
            listOfLaserBlasts.add(new EnemyShipLaserBlast(x, y));
            break;
        default:
            //do nothing
    }
 }

最佳答案

正如其他人提到的,由于您只有一种情况,您可能应该使用“if”语句而不是“switch” - 可能不会有性能提升,但代码会更容易阅读。

我认为对性能影响最大的更改是使随机成为静态(我会将其设为静态最终)。这样,您将为整个应用程序构建一次 Random,而不是每次调用该方法时。这节省了对象构造和垃圾收集的时间。

关于java - Android开发中比Switch更有效的方法(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40705565/

相关文章:

java - 在 Java 中执行符号数学

java - 在 JAVA 中打印 3D 数组时出现 ArrayIndexOutOfBoundsException

java - 从 BroadcastReceiver 调用 MainApplication 方法

java - 调试 AsyncTask - 奇怪的行为,调试跳转到代码中

java - Android 的 Calendar.Day_Of_Month 是基于零的吗?

android - 如何在 android 中运行 adb 命令,我运行 sendevent 失败

performance - 检查 Chrome 扩展程序的性能

python - 比较两个numpy数组的最快方法

Javascript - 更好地替代递归调用

Java 文件 I/O 问题