最近我正在阅读一个教程,因为我发现了一个声明说...
"Java语言规范保证读取或写入变量是一个原子操作(除非变量是类型long或者double).类型的操作变量long或double只有在用volatile关键字声明时才是原子的."
AtomicInteger或AtomicLong提供类似的方法getAndDecrement(),getAndIncrement()以及getAndSet()哪些是原子方法.
我对上述陈述感到困惑.你能澄清何时使用 AtomicInteger或AtomicLong上课.
当我们有equals(),compareTo()方法为什么hashcode()在Java中有一个方法?
如果我们使用 HashTable我们必须覆盖hashcode()方法,除快速访问随机密钥有什么特殊原因吗?如果我们覆盖该hashcode()方法,可能的实现是什么?
Java如何确保内存中的对象唯一性?
Hashcodes are typically used to enhance the performance of large collections of data.
在hashing我们计算hash code.这是一项额外的任务.当我们为添加到集合的每个对象执行其他操作时.性能如何提高?
我对变量名和方法名中使用下划线(命名约定)_作为起始字母感到困惑.例如_sampleVariable和_getUserContext().任何人都可以澄清何时使用它?
当我们知道循环的确切数量时,使用byte/short作为计数器变量是一个好习惯吗?例如
for (byte i = 1; i <= 26; i++)
Run Code Online (Sandbox Code Playgroud)
VS
for (short i = 1; i <= 26; i++)
Run Code Online (Sandbox Code Playgroud)
VS
for (int i = 1; i <=26; i++)
Run Code Online (Sandbox Code Playgroud) 我有以下代码
public class Test {
static String mountain = "Everest";
static Test favorite() {
System.out.print("Mount ");
return null;
}
public static void main(String[] args) {
System.out.println(favorite().mountain);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为它会提高一个NPE但是它是在给出Mount Everest输出可以任何人澄清?
为什么以下是有效的
byte i=0;
i++;
Run Code Online (Sandbox Code Playgroud)
其中以下内容无效
byte i=0;
i=i+1;
Run Code Online (Sandbox Code Playgroud)
会是什么原因?
我知道在i+1整个值明确增加1(这将是int值)的情况下,i++因此将发生编译问题,但是如果它做同样但没有得到任何错误.
我有一个带有a的swing应用程序JPanel,它充当我的应用程序的视图端口.我希望我的应用程序在用户单击菜单项或按钮时删除视图端口内的所有组件,并在其中创建新组件.我知道如何从容器中删除组件,目前尚不清楚哪个组件在视口内,所以我想我不能使用下面的代码:
viewport.remove(component);
viewport.revalidate();
viewport.repaint();
Run Code Online (Sandbox Code Playgroud)
我的问题:
如何在不知道要删除哪个组件的情况下删除容器内的所有组件?
这种方法是删除所有组件并创建其他组件并将它们插入视图端口是否正确?
根据Eclipse常见问题解答.我看了
Eclipse DOES NOT consult the JAVA_HOME environment variable.
我怀疑eclipse是如何初始化的Virtual Machine.它不知道的位置Java.我的eclipse.ini文件没有-vm配置.我仍然可以运行eclipse.
UPDATE
根据Eclipse 安装指南.Eclipse does not write entries to the Windows registry.
我正在使用iText来阅读pdf文件.我的pdf中有20个Acro文本字段,具有不同的fillColor属性.我试图阅读属性,但无法阅读.有没有什么办法可以让我们在java中获得具有特定颜色的字段作为fillcolor属性?
编辑: 我使用以下Adobe Javascript在pdf中创建了acro字段
var oFld = this.addField("nameOfField", "button", 0, fldRect);
if (oFld != null) {
oFld.buttonSetCaption("");
oFld.borderStyle = border.s;
oFld.fillColor = color.gray;
oFld.textColor = color.white;
oFld.lineWidth = 1;
}
Run Code Online (Sandbox Code Playgroud)
更新:
现在我能够读取颜色属性.
我不确定这是否是正确的做法?
if(dict.getAsDict(PdfName.MK).get(PdfName.BG) !=null){
if(dict.getAsDict(PdfName.MK).get(PdfName.BG).toString().trim().equals("
[0.0, 1.0, 0.0]")){
System.out.println(entry.getKey());
System.out.println("Green");
}
if(dict.getAsDict(PdfName.MK).get(PdfName.BG).toString().trim().equals("
[1.0, 0.0, 0.0]")){
System.out.println(entry.getKey());
System.out.println("Red");
}
}
Run Code Online (Sandbox Code Playgroud) 这可能是如此简单的问题,
我知道这byte是一种原始类型java,属于integer家庭,需要1 byte内存中的空间.当我们处理二进制数据时(例如,当我们读/写文件时),我们将数据存储到byte array我们的操作中,我怀疑的是,当我们有其他原语时,我们short,int为什么喜欢byte[]?任何人都可以澄清
提前致谢.