小编Kis*_*ine的帖子

节省时间以保存字符串变量与硬编码

我已经尝试搜索web/stackoverflow但是找不到答案.我不确定是不是因为它是如此明显或如此微不足道的差异.

我的基本问题是......哪个表现更好/多少?

String attacker = pairs.getKey();
mobInstanceMap.replace(attacker, 0);
Run Code Online (Sandbox Code Playgroud)

VS:

mobInstanceMap.replace(pairs.getKey(), 0);
Run Code Online (Sandbox Code Playgroud)

我喜欢第一个可读性,但我一直在开发一个MMORPG,我需要非常小心它的性能.我试着在下面做一个实验,但想到我会问大师,因为我很难推断出来.我翻了哪一个运行,因为我发现当运行两个(一个接一个)时,第二个运行得更好(可能是由于JVM优化).

对不起,如果有人问过并回答了......或者是显而易见的,但是我搜索过并没有找到任何东西(也许我不知道该搜索什么).我不仅想知道'拯救'字符串,还有其他变量.

public static void main(String[] args){
    long hardcodeTotal = 0;
    long saveTotal = 0;

//      for (int i = 0; i < 10000; i++){
//          saveTotal += checkRunTimeSaveString();
//      }

    for (int i = 0; i < 10000; i++){
        hardcodeTotal += checkRunTimeHardcodeString();
    }

    System.out.println("hardcodeTotal: " + hardcodeTotal/100.0 + "\t" + "saveTotal: " + saveTotal/100.0);

}

private static long checkRunTimeSaveString(){
    long StartTime = System.nanoTime();

    Iterator<Entry<String, Integer>> it = mobInstanceMap.entrySet().iterator(); …
Run Code Online (Sandbox Code Playgroud)

java string optimization execution-time

1
推荐指数
1
解决办法
118
查看次数

在悬停/点击时使JButton变暗

ImageIcon backpackImageIcon = new ImageIcon("images/gui/button_backpack.png");
JButton backpackButton = new JButton();
backpackButton.setBounds(660,686,33,33);
backpackButton.setBorderPainted(false);
backpackButton.setFocusPainted(false);
backpackButton.setVisible(true);
backpackButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("B"), "backpackButtonPress");
backpackButton.getActionMap().put("backpackButtonPress", ClassBackpackButton);
backpackButton.setAction(ClassBackpackButton);
backpackButton.setIcon(backpackImageIcon);
backpackButton.setToolTipText("Backpack[B]");
panel.add(backpackButton);      
Run Code Online (Sandbox Code Playgroud)

我有多个按钮设置这个确切的方式.我希望能够做的是让它们在悬停时变暗10%,在点击时变暗20%.我试着四处寻找如何做到这一点,但没有运气(只找到javascript的东西).对不起,如果之前已经询问过这个问题并感谢您的帮助.

**编辑**

我试过这样做,但它只是将图像变成空白:

BufferedImage bufferedImage = null;
try {
    bufferedImage = ImageIO.read(new File("images/gui/button_backpack.png"));
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
BufferedImage darkerBackpackBufferedImage = new BufferedImage(32, 32, BufferedImage.TYPE_BYTE_INDEXED);
RescaleOp op = new RescaleOp(1.3f, 0, null);
darkerBackpackBufferedImage = op.filter(bufferedImage, null);
ImageIcon darkerBackpackImageIcon = new ImageIcon((Image) darkerBackpackBufferedImage);
backpackButton.setRolloverIcon((ImageIcon) darkerBackpackImageIcon);
Run Code Online (Sandbox Code Playgroud)

**编辑**与解决方案

这是修改后的shiftColor函数,我跟上面读过这个的人一起去...祝你好运:)

public …
Run Code Online (Sandbox Code Playgroud)

java swing mouseover jbutton imageicon

0
推荐指数
1
解决办法
3060
查看次数

不应发生的NullPointerException

我很抱歉发布,以防万一我只是做了一些愚蠢的事情,但我希望有一些奇怪的Java事情导致我不知道这可以帮助别人.我在这里俯瞰什么吗?为何选择NPE?

这是我的代码:

SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
        int itemSoldCount = Integer.parseInt(afterAt[1]);
        System.out.println("itemSoldCount: " + itemSoldCount);
        ShopJInternalFrame.shopHolderWAIType = new JLabel[itemSoldCount];

        int i = 2;
        for (int k = 0; k < itemSoldCount; k++){
            String waiType = afterAt[i];
            System.out.println("ShopJInternalFrame.shopHolderWAIType.length: " + ShopJInternalFrame.shopHolderWAIType.length);
            System.out.println("waiType: " + waiType);
            System.out.println("k: " + k);
            ShopJInternalFrame.shopHolderWAIType[k].setText(waiType);  //line 530
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

itemSoldCount: 2
ShopJInternalFrame.shopHolderWAIType.length: 2
waiType: A
k: 0
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at com.jayavon.game.client.MyCommandReceiver$8.run(MyCommandReceiver.java:530)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at …
Run Code Online (Sandbox Code Playgroud)

java nullpointerexception

0
推荐指数
1
解决办法
73
查看次数

1不是== 1,布尔问题

我是疯了还是什么的,或者我需要更多的睡眠...可以留下第二眼吗?

boolean slotTypeMatch = false;
System.out.println("waiType: " + waiType);
if (waiType.equals("W")){

} else if(waiType.equals("A")){
    itemFilename = MyServer.armorMap.get(waiId).getFilename();
    System.out.println("endContainerSlot: " + endContainerSlot + ", getSlot: " + MyServer.weaponMap.get(waiId).getSlot());
    if (endContainerSlot == MyServer.armorMap.get(waiId).getSlot()){
        System.out.println("WHY DONT I MAKE IT HERE!!!!");
        slotTypeMatch = true;
    }
}
System.out.println("itemFilename: " + itemFilename);
System.out.println("slotTypeMatch: " + slotTypeMatch);
if (slotTypeMatch){
    //not making it here, I must be going insane
Run Code Online (Sandbox Code Playgroud)

这是我的控制台输出......我无法想象我的生活......

waiType: A 
endContainerSlot: 1, getSlot: 1
itemFilename: images/armor/armor_tunic.png 
slotTypeMatch: false
Run Code Online (Sandbox Code Playgroud)

编辑它们都是int

int endContainerSlot - com.jayavon.game.server.MyCommandHandler.run()
int com.jayavon.game.actualgame.Armor.getSlot()
Run Code Online (Sandbox Code Playgroud)

java boolean

-2
推荐指数
1
解决办法
94
查看次数