Tag: java

Java的+ =, – =,* =,/ =复合赋值运算符

直到今天,我认为,例如: i += j; 只是一个捷径: i = i + j; 但是,如果我们尝试这样做: int i = 5; long j = 8; 那么i = i + j; 不会编译,但i += j; 将编译好。 这是否意味着其实i += j; 是这样一个快捷方式i = (type of i) (i + j) ?

Java 7中的钻石操作符有什么意义?

Java 7中的钻石操作符允许如下代码: List<String> list = new LinkedList<>(); 但是在Java 5/6中,我可以简单地写出: List<String> list = new LinkedList(); 我对types擦除的理解是这些完全一样。 (无论如何,这个generics在运行时会被删除)。 为什么要钻石呢? 它允许什么新的function/types安全? 如果它不产生任何新的function,为什么他们提到它作为一个function? 我对这个概念的理解是否有缺陷?

为什么是1/3 == 0的结果?

我正在写这个代码: public static void main(String[] args) { double g = 1 / 3; System.out.printf("%.2f", g); } 结果是0.为什么这个,我该如何解决这个问题?

Java 256位AES基于密码的encryption

我需要实现256位AESencryption,但是我在网上find的所有例子都使用“KeyGenerator”生成一个256位的密钥,但是我想用我自己的密码。 我如何创build自己的密钥? 我已经尝试填充到256位,但后来我得到一个错误说,关键是太长了。 我有无限的pipe辖区的补丁安装,所以这不是问题:) IE浏览器。 KeyGenerator看起来像这样… // Get the KeyGenerator KeyGenerator kgen = KeyGenerator.getInstance("AES"); kgen.init(128); // 192 and 256 bits may not be available // Generate the secret key specs. SecretKey skey = kgen.generateKey(); byte[] raw = skey.getEncoded(); 代码取自这里 编辑 我实际上是把密码填充到256字节,而不是比特,这太长了。 以下是我现在使用的一些代码,我有更多的经验。 byte[] key = null; // TODO byte[] input = null; // TODO byte[] […]

无法对非静态方法进行静态引用

用Java构build多语言应用程序 从R.string资源XML文件插入String值时出现错误: public static final String TTT = (String) getText(R.string.TTT); 这是错误信息: 错误:无法从types上下文中对非静态方法getText(int)进行静态引用 这是如何造成的,我该如何解决?

如何更好地定位Swing GUI?

在另一个线程中,我表示我喜欢通过做这样的事情来集中我的GUI: JFrame frame = new JFrame("Foo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new HexagonGrid()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); 但是,安德鲁·汤普森有不同的意见,而不是打电话 frame.pack(); frame.setLocationByPlatform(true); 并询问头脑想知道为什么?

为什么在Swing中使用空布局不好意思?

最近,我开始为我工作的公司创build一个程序。 就像背景信息一样,我仍然是一名学生和初学者程序员,所以我的解决scheme可能不被推荐,我不知道如何去做,但它的工作原理,我不会因为它而被评判,因为这是一个与编程完全无关的学生工作。 该程序的事情是,它将在不同的屏幕尺寸和分辨率(800×600及以上)的多台不同的计算机上运行。 为了确保尽可能多的屏幕不丢失程序的任何部分,我将布局设置为空,并使用相对值硬编码所有内容。 该程序是自助服务terminal式的,我首先得到屏幕大小的值,然后从那里(例如,离开我的头顶,左边的菜单占了屏幕的八分之一,顶部的酒吧2%等) 。 我也使用字体指标来确保组件的尺寸正确,并且一切都很好地显示出来。 我的问题是:为什么它让布局变成空而不是使用布局pipe理器呢? (我在一些论坛上被告知,这是一种可怕的做事方式)我知道布局pipe理器是如何工作的,知道如何使用不同的布局,但是对于这个程序的要求(多种不同的分辨率,自定义的button形状和布局,当你改变语言时,组件上的文本改变等等),我看不到自己使用布局pipe理器来完成这一切。 在这样的情况下,更有经验的程序员如何使用布局pipe理器? 当你想要一个button到某个特定的地方,而另一个特定的其他组件与别的预定义的布局不匹配时,你会怎么做?

如何在Java中复制对象?

考虑下面的代码: DummyBean dum = new DummyBean(); dum.setDummy("foo"); System.out.println(dum.getDummy()); // prints 'foo' DummyBean dumtwo = dum; System.out.println(dumtwo.getDummy()); // prints 'foo' dum.setDummy("bar"); System.out.println(dumtwo.getDummy()); // prints 'bar' but it should print 'foo' 所以,我想把'dum'复制到'dumtwo',我想改变'dum'而不影响'dumtwo'。 但是上面的代码没有这样做。 当我改变'dum'中的某些东西时,'dumtwo'也发生了同样的变化。 我想,当我说dumtwo = dum ,Java 只复制参考 。 那么,有什么办法可以创build“dum”的新副本并将其分配给“dumtwo”?

使用Java读/写Windowsregistry

如何使用Java读取/写入Windowsregistry?

如何获得正在运行的JAR文件的path?

我的代码运行在一个JAR文件中,比如说foo.jar,我需要知道在代码中运行foo.jar的文件夹。 所以,如果foo.jar在C:\FOO\ ,无论我当前的工作目录是什么,我都想得到这个path。