我已经尝试搜索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) 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事情导致我不知道这可以帮助别人.我在这里俯瞰什么吗?为何选择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) 我是疯了还是什么的,或者我需要更多的睡眠...可以留下第二眼吗?
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)