此代码将字符串分隔为标记并将它们存储在字符串数组中,然后将变量与第一个主页进行比较...为什么它不起作用?
public static void main(String...aArguments) throws IOException {
String usuario = "Jorman";
String password = "14988611";
String strDatos = "Jorman 14988611";
StringTokenizer tokens = new StringTokenizer(strDatos, " ");
int nDatos = tokens.countTokens();
String[] datos = new String[nDatos];
int i = 0;
while (tokens.hasMoreTokens()) {
String str = tokens.nextToken();
datos[i] = str;
i++;
}
//System.out.println (usuario);
if ((datos[0] == usuario)) {
System.out.println("WORKING");
}
}
Run Code Online (Sandbox Code Playgroud) 我知道,如果你将盒装原始Integer与常量进行比较,例如:
Integer a = 4;
if (a < 5)
Run Code Online (Sandbox Code Playgroud)
a 将自动取消装箱,比较将起作用.
但是,当您比较两个盒装Integers并希望比较相等或小于/大于?时会发生什么?
Integer a = 4;
Integer b = 5;
if (a == b)
Run Code Online (Sandbox Code Playgroud)
以上代码是否会导致检查它们是否是同一个对象,还是会在这种情况下自动取消装箱?
关于什么:
Integer a = 4;
Integer b = 5;
if (a < b)
Run Code Online (Sandbox Code Playgroud)
?
为什么在Java中,当String是一个类时,你能用+运算符添加字符串?在String.java代码中我没有找到该运算符的任何实现.这个概念是否违反了面向对象?
请考虑以下代码段:
int i = 99999999;
byte b = 99;
short s = 9999;
Integer ii = Integer.valueOf(9); // should be within cache
System.out.println(new Integer(i) == i); // "true"
System.out.println(new Integer(b) == b); // "true"
System.out.println(new Integer(s) == s); // "true"
System.out.println(new Integer(ii) == ii); // "false"
Run Code Online (Sandbox Code Playgroud)
很明显为什么最后一行总是打印出来"false":我们正在使用==引用标识比较,而new对象永远不会是==已经存在的对象.
问题是前三行:那些比较保证在原语上int,Integer自动取消装箱?是否存在基元将被自动装箱的情况,并且执行参考标识比较?(那就是全部false!)
我正在做java分配,我遇到了这个代码.
int x=3, y=5;
System.out.println(x + y + " = " + y + x);
Run Code Online (Sandbox Code Playgroud)
输出为"8 = 53".为什么要评估第一个x + y并打印最后一个y和x表达式?让我疑惑.Thanx提前的家伙.
这是代码片段:
public static void main (String[]arg)
{
char ca = 'a' ;
char cb = 'b' ;
System.out.println (ca + cb) ;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
195
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我认为'a' + 'b'是,要么"ab","12"或3.
这里发生了什么?