我导入了这个kernel32
库.所以,我有createMutex
可用的功能,但我不太确定各种参数和返回值.
这是经典的Visual Basic,而不是Visual Basic.NET,但我可能会以答案的形式使用这两种语言.
看到这段代码的输出我感到很惊讶:
public class File
{
public static void main(String[] args)
{
movie();
}
static void movie(double... x)
{
System.out.println("No varargs");
}
static void movie(int... x)
{
System.out.println("One argument");
}
}
Run Code Online (Sandbox Code Playgroud)
它输出,
One argument
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我认为这段代码不能编译,因为调用movie()
是模糊的,但运行正常并输出One argument
.
如果我将代码修改为:
public class File
{
public static void main(String[] args)
{
movie();
}
static void movie(boolean... x) //Changed the parameter type to boolean from double
{
System.out.println("No varargs");
}
static void movie(int... x)
{
System.out.println("One argument");
}
} …
Run Code Online (Sandbox Code Playgroud) 我对以下代码块(Sample)的执行存在基本疑问:
String version = computer.getSoundcard().getUSB().getVersion();
Run Code Online (Sandbox Code Playgroud)
NullPointerException
如果Soundcard
不存在,可能会抛出
所以我有 ,
选项1 :
if(computer!=null &&
computer.getSoundCard() !=null &&
computer.getSoundCard().getUSB()!=null) {
version = computer.getSoundcard().getUSB().getVersion();
}
Run Code Online (Sandbox Code Playgroud)
选项2:
if(computer !=null){
SoundCard sc = computer.getSoundCard();
if(sc!=null){
USB usb = sc.getUSB();
if(usb!=null){
version = usb.getVersion();
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,选项1将有额外的开销,因为它必须多次评估相同的表达式,如computer.getSoundCard()
3次,computer.getSoundCard().getUSB()
2次.
我的理解是否正确?
编辑1:更改了选项2
version = computer.getSoundcard().getUSB().getVersion();
Run Code Online (Sandbox Code Playgroud) 我在谷歌搜索的东西,我得到了一个类似的代码
public static abstract class LocationResult{
public abstract void gotLocation(Location location);
}
Run Code Online (Sandbox Code Playgroud)
这是一个嵌套类,但想知道它是如何可访问的?
如何从String中删除无效字符,以便它可以用作文件名?
无效字符包括 ("\\/:*?\"<>|")
.
我正在深入探讨 Java 8
Lambda和方法参考等功能.玩了一下让我看到以下示例:
public class ConsumerTest {
private static final String[] NAMES = {"Tony", "Bruce", "Steve", "Thor"};
public static void main(String[] args) {
Arrays.asList(NAMES).forEach(Objects::requireNonNull);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
为什么main方法中的行会编译?
如果我理解正确的话,引用的方法的签名必须对应于功能接口的SAM签名.在这种情况下,消费者需要以下签名:
void accept(T t);
Run Code Online (Sandbox Code Playgroud)
但是,该requireNonNull
方法返回T
而不是void:
public static <T> T requireNonNull(T obj)
Run Code Online (Sandbox Code Playgroud) 我注意到调用equals("");
类的方法不会产生任何错误Eclipse
.我从来没有见过.equals没有像string1.equals(string2);
.
package voodoo;
public class Equals {
public void method(){
equals("");
}
}
Run Code Online (Sandbox Code Playgroud)
这里发生了什么,什么时候会equals()
自己调用?
如果我把它放入JUnit
测试中,它会运行并通过.
是否存在定义和使用泛型定义的简写方法,而不必继续重复特定的通用描述,以便如果有更改,我不必更改所有定义/用法,尽管代码库可能是这样的:
Typedef myGenDef = < Object1, Object2 >;
HashMap< myGenDef > hm = new HashMap< myGenDef >();
for (Entry< myGenDef > ent : hm..entrySet())
{
.
.
.
}
Run Code Online (Sandbox Code Playgroud) 在我的实际项目中,这是偶然发生的,这是我修改过的小程序.
我无法弄清楚它为什么输出10?
public class Int
{
public static void main(String args[])
{
int j=012;//accidentaly i put zero
System.out.println(j);// prints 10??
}
}
Run Code Online (Sandbox Code Playgroud)
在那之后,我把两个零仍然给出输出10.
然后我将012更改为0123,现在它输出83?
有谁能解释为什么?
我想比较两个数组,如果在两个数组上都可以找到至少一个值.
场景#1: 2
在两个阵列中都找到,因此结果是true
.
String[] x = {"1","2","3"};
String[] y = {"2","5","6"};
Run Code Online (Sandbox Code Playgroud)
场景#2:没有匹配的值,所以结果是false
.
String[] x = {"1","2","3"};
String[] y = {"4","5","6"};
Run Code Online (Sandbox Code Playgroud)
Java中是否有任何内置方法,或任何可以处理此要求的库?
我想强调一下,我正在寻找一个Java库或任何可以开箱即用的Java方法.
这Collection.contains
不是一个选项,因为两个数组中的所有值都应该相同才能返回true.(如果两个数组中至少有一个值相似,我需要返回true)
java ×9
compare ×1
comparison ×1
equals ×1
generics ×1
if-statement ×1
integer ×1
java-8 ×1
literals ×1
numbers ×1
overloading ×1
string ×1
vb6 ×1