switch语句是在Java中实现运算符解释的最快方法
public boolean accept(final int op, int x, int val) {
switch (op) {
case OP_EQUAL:
return x == val;
case OP_BIGGER:
return x > val;
case OP_SMALLER:
return x < val;
default:
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
在这个简单的例子中,显然是的.现在想象你有1000个运营商.它还会比类层次更快吗?当类层次结构在速度上比switch语句更有效时,是否存在阈值?(在内存中显然不是)
abstract class Op {
abstract public boolean accept(int x, int val);
}
Run Code Online (Sandbox Code Playgroud)
然后每个操作员一个班级.
编辑:对不起,我应该通过答案的外观更具体.运营商是完全未知的,我正在使用JDk 1.4.没有选择.没有枚举.没有关闭.:(用户在许多选择中选择运算符.为简单起见,想象一下具有1000个操作的GUI列表,当用户选择一个时,选择switch语句的操作码.使用类层次结构,用户将选择一个我问这个问题是因为有人必须先测试过它.我不想创建1000个类和1000个虚假操作代码来测试它.如果没有人做过.我会测试它并报告结果,如果它们可能有任何意义.
使用Java中的GUI在屏幕上绘制Hello World 的最快方法是什么:
1-使用最少的班级数.
2-执行最少字节代码
3- JVM调整
因此,当我双击Windows中的Jar文件时,Hello World会立即出现(假设尚未加载运行时).
出于智力兴趣,你可以在手动调整大小时使Canvas不闪烁.
public class FlickerAWT extends Canvas {
public static void main(String[] args) {
Frame f = new Frame(str);
//this line change nothing
//JFrame f = new JFrame(str);
f.add(new FlickerAWT());
f.pack();
int frameWidth = f.getWidth();
int frameHeight = f.getHeight();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
f.setLocation(screenSize.width / 2 - frameWidth / 2, screenSize.height / 2 - frameHeight / 2);
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
public void windowDeiconified(WindowEvent e) {
}
public void windowIconified(WindowEvent e) {
}
}); …Run Code Online (Sandbox Code Playgroud)