小编Wil*_*ood的帖子

Java中的新关键字9

Java 9最大的功能之一将是Project Jigsaw定义的模块系统.在阅读Project Jigsaw:在 JavaOne 2015 的Hood下阅读幻灯片时,我注意到以下源代码:

// src/java.sql/module-info.java
module java.sql {
   exports java.sql;
   exports javax.sql;
   exports javax.transaction.xa;
}
Run Code Online (Sandbox Code Playgroud)

这里有趣的是文件结尾.java并且似乎使用了两个新的关键字:module,和exports.Java 9中将引入哪些其他关键字?如何处理向后兼容性(即命名的函数或变量module)?

java syntax java-platform-module-system java-9

36
推荐指数
2
解决办法
5219
查看次数

为什么给非泛型方法或构造函数的显式类型参数编译?

在实例化ArrayLists时,我习惯于看到这样的代码

ArrayList<Type> arr = new ArrayList<Type>();
Run Code Online (Sandbox Code Playgroud)

要么

ArrayList<Type> arr = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

但是今天我遇到了一个如下所示的ArrayList实例:

ArrayList<Type> arr = new <Type>ArrayList();
Run Code Online (Sandbox Code Playgroud)

发生了什么,为什么会给出"不安全的操作"编译警告?

java generics syntax arraylist

28
推荐指数
2
解决办法
9629
查看次数

Java 8对静态方法与实例方法的引用

说我有以下代码

public class A {
    int x;
    public boolean is() {return x%2==0;}
    public static boolean is (A a) {return !a.is();}
}
Run Code Online (Sandbox Code Playgroud)

而在另一堂课......

List<A> a = ...
a.stream().filter(b->b.isCool());
a.stream().filter(A::is); 
//would be equivalent if the static method is(A a) did not exist
Run Code Online (Sandbox Code Playgroud)

问题是如何使用A :: is类型表示法引用实例方法版本?非常感谢

java java-8 java-stream method-reference

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

简化9变量布尔表达式

我正在尝试创建一个tic-tac-toe程序作为心理练习,我将董事会状态存储为booleans,如下所示:

http://i.imgur.com/xBiuoAO.png

我想简化这个布尔表达式......

(a&b&c) | (d&e&f) | (g&h&i) | (a&d&g) | (b&e&h) | (c&f&i) | (a&e&i) | (g&e&c)
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是使用卡诺图,但没有在线求解器支持9个变量.

并且还有一个问题:

首先,我如何知道布尔条件是否已经尽可能简单?

第二个:上面简化的布尔条件是什么?

logic boolean

8
推荐指数
2
解决办法
2478
查看次数

Wierd语法 - 数字之间的下划线

按照惯例,当我遇到这个问题时,我一直在研究更多的UIL Java练习表:

int _ = 8;
System.out.println(5_5);
Run Code Online (Sandbox Code Playgroud)

问题是"以下代码片段的输出是什么?"

我的第一个猜测是语法错误,但正确的响应实际上是55.

为什么是这样?

java syntax

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

奇怪的Java语法

当我遇到这个问题时,我正在做一个练习计算机科学UIL测试表:

什么是以下输出?

int a = 5;
int b = 7;
int c = 10;
c = b+++-c--+--a;
System.out.println(a + " " + b + " " + c);
Run Code Online (Sandbox Code Playgroud)

我回答"由于语法错误没有输出",但我弄错了.真正的答案是4 8 1!(我自己测试过)

有人可以向我解释第4行是如何工作的吗?
谢谢

java syntax

6
推荐指数
2
解决办法
878
查看次数

为什么我的应用程序在某些时候返回错误的输出?

我有以下代码:

public class Test1 {

private static long value = 0;

public static void main(String[] args) {
    Thread1 k = new Thread1();
    Thread1 t = new Thread1();
    k.start();
    t.start();
    while (k.isAlive() & t.isAlive());
    System.out.println(value);
}

public static void addOne() {
    long temp = value;
    temp = temp + 1;
    value = temp;
}
}

class Thread1 extends Thread {

public void run() {
    for (int i=0; i<100; i++)
        Test1.addOne();
}
Run Code Online (Sandbox Code Playgroud)

}

通常当我运行它时,我得到200的输出,但很少有我得到100和151的输出.是什么原因造成的?

java thread-safety

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