小编Hag*_*gra的帖子

比较两个通用数字的值

我想比较两种类型的变量T extends Number.现在我想知道这两个变量中哪一个大于另一个或相等.不幸的是我还不知道确切的类型,我只知道它将是一个子类型java.lang.Number.我怎样才能做到这一点?

编辑:我试图用另一种解决方法TreeSets,这实际上自然排序工作(当然它的工作原理,所有的子类Number实现Comparable除的AtomicInteger和AtomicLong的).因此,我将丢失重复值.使用Lists时,Collection.sort()由于绑定不匹配,不接受我的列表.非常不满意.

java generics numbers comparable

55
推荐指数
5
解决办法
4万
查看次数

在Java中重新声明循环内的变量

在Java中,我们不能在具有相同名称的另一个变量的同一范围内声明变量:

int someInteger = 3;

...

int someInteger = 13;
Run Code Online (Sandbox Code Playgroud)

语法错误,不编译.但是,如果我们把它放在一个循环中:

for (int i = 0; i < 10; i++) {
   int someInteger = 3;
}
Run Code Online (Sandbox Code Playgroud)

生成没有错误,效果很好.我们基本上声明了相同的变量.是什么原因?在这背后我不了解/理解的逻辑是什么?

java variables loops

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

String类中的Substring方法到达它不应该的索引

如果标题不清楚,我道歉.

现在,在字符串索引从0开始.例如:

Index    0   1   2   3   4
String   H   E   L   L   O
Run Code Online (Sandbox Code Playgroud)

在这种情况下,最后一个索引是4.

如果我想尝试做这样的事情:

System.out.println("hello".charAt(5));
Run Code Online (Sandbox Code Playgroud)

它应该抛出一个"超出界限的索引".

但是,如果我尝试运行以下代码:

System.out.println("hello".substring(5));
Run Code Online (Sandbox Code Playgroud)

它确实运行!我写了类似的代码,后来注意到了,无法弄明白.

最终,问题是我们不应该达到这个指数的可能性如何?它允许我们写:

stringObj.substring(stringObj.length());
Run Code Online (Sandbox Code Playgroud)

而且它看起来不太安全,因为stringObj.length()返回一个比最后一个索引多一个的整数.

它是故意制造的,这是否有目的?如果是这样,这个目的是什么,它带来了什么好处?

java string indexing substring

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

为什么数组不引用与字符串相同的对象?

如果在不使用"new"关键字的情况下声明它们,则对同一对象的字符串引用,如下所示:

String s1 = "Some string";
String s2 = "Some string";

System.out.println(s1 == s2); 
//prints true because 
//they reference to the same object
Run Code Online (Sandbox Code Playgroud)

但是,与我的预期相反,这与数组不起作用:

char[] anArray = {'A', 'r', 'r', 'a', 'y'};
char[] oneArray = {'A', 'r', 'r', 'a', 'y'};
System.out.println("anArray == oneArray : " + (anArray == oneArray));
//prints false
Run Code Online (Sandbox Code Playgroud)

我们没有明确提到它们是"新"数组,为什么它们不引用堆上的同一个对象呢?

java arrays reference

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

在字符串中使用'=='?(JAVA)

String str1 = new String("I love programming");
String str2 = new String("I love programming");
boolean boo = str1 == str2; // evaluates to false

String str1 = "I love programming";
String str2 = "I love programming";
boolean boo = str1 == str2; // evaluates to true
Run Code Online (Sandbox Code Playgroud)

为什么第一个评估为假,第二个评估为真?

在这里你可以找到更多:什么是Java字符串池以及"s"与新String("s")有何不同?

java string equality sign equals

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

编译代码真的比解释代码快吗?

首先,我希望您在这里查看最佳答案。

编译语言与解释语言

正如你所看到的,它说,编译语言更快。但是,我理所当然地知道编译器会获取整个源代码,将其编译为机器代码,然后执行它。解释器一次接受一个语句,将其翻译成机器代码或虚拟机代码,然后立即执行。所以我们在运行时即时获得输出。

那么解释型语言不是比编译型语言快吗?

interpreter interpreted-language compilation

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

Java中的这些多行注释有什么区别吗?

我只是想知道这些类型的评论之间是否存在任何差异.

/* 
...    
Content of the comment
...    
*/
Run Code Online (Sandbox Code Playgroud)

/* 
* ...    
* Content of the comment
* ...    
*/
Run Code Online (Sandbox Code Playgroud)

java comments

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