相关疑难解决方法(0)

如何比较Java中的字符串?

==到目前为止,我一直在我的程序中使用运算符来比较我的所有字符串.但是,我遇到了一个错误,将其中一个更改为了.equals(),并修复了该错误.

==坏?什么时候应该不应该使用它?有什么不同?

java string equality

726
推荐指数
23
解决办法
376万
查看次数

String.equals与==

此代码将字符串分隔为标记并将它们存储在字符串数组中,然后将变量与第一个主页进行比较...为什么它不起作用?

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)

java string

515
推荐指数
16
解决办法
80万
查看次数

当""== s为假但"".equals(s)为真时

编辑 感谢您的快速回复.请看看真正的问题是什么.这次我大胆了.

我理解==和.equals之间的区别.所以,这不是我的问题(我实际上添加了一些上下文)


我正在为空字符串执行以下验证:

if( "" == value ) { 
    // is empty string 
} 
Run Code Online (Sandbox Code Playgroud)

过去从db中获取值或从另一个节点反序列化对象时,此测试失败,因为两个字符串实例确实是不同的对象引用,尽管它们包含相同的数据.

所以这些情况的解决方案是

if( "".equals( value ) ) {
   // which returns true for all the empty strings
}
Run Code Online (Sandbox Code Playgroud)

我很好.这很清楚.

今天这又发生了一次,但它让我感到困惑,因为这次应用程序是一个非常小的独立应用程序,根本不使用网络,所以没有从数据库中提取新字符串,也不从另一个节点去激活.

所以问题是:


其他情况下:

"" == value // yields false 
Run Code Online (Sandbox Code Playgroud)

"".equals( value ) // yields true
Run Code Online (Sandbox Code Playgroud)

对于本地独立应用程序?

我很确定代码中没有使用新的String().

并且字符串引用可以是""的唯一方法是因为它直接在代码中分配""(或者我认为的那样),如:

String a = "";
String b = a;

assert "" == b ; // this …
Run Code Online (Sandbox Code Playgroud)

java comparison equality equals

33
推荐指数
4
解决办法
2万
查看次数

Java和.NET字符串文字在哪里?

关于 .NET中字符串文字的最新问题引起了我的注意.我知道字符串文字被实习,因此具有相同值的不同字符串引用同一个对象.我也知道字符串可以在运行时实现:

string now = DateTime.Now.ToString().Intern(); 
Run Code Online (Sandbox Code Playgroud)

显然,在运行时实例化的字符串驻留在堆上,但我假设文字放在程序的数据段中(并且在我对所述问题的回答中这样说).但是我不记得在任何地方看到这个.我认为这是这种情况,因为我是如何做到这一点以及ldstrIL指令用于获取文字并且似乎没有进行分配的事实似乎支持我.

简而言之,字符串文字在哪里?它是在堆上,数据段还是我没想过的某个地方?


编辑:如果字符串文字确实驻留在堆上,它们何时分配?

.net java string-literals string-table

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

格式化具有相同填充量的数字

我想在Java中格式化3位浮点数,以便它们垂直排列,使得它们看起来像:

123.45
 99
 23.2
 45
Run Code Online (Sandbox Code Playgroud)

当我使用DecimalFormat类时,我接近,但是当项目有1或2位数时我想插入空格.

我的代码:

DecimalFormat formatter = new java.text.DecimalFormat("####.##");
float [] floats = [123.45, 99.0, 23.2, 45.0];

for(int i=0; i<floats.length; i++)
{
    float value = floats[i];

    println(formatter.format(value));
}
Run Code Online (Sandbox Code Playgroud)

它产生:

123.45
99
23.2
45
Run Code Online (Sandbox Code Playgroud)

如何打印它以使除第一行以外的所有行都移过1个空格?

java

14
推荐指数
3
解决办法
2万
查看次数

拆分文本时遇到问题

这是我正在使用的代码:

public class splitText {
public static void main(String[] args) {
    String x = "I lost my Phone. I shouldn't drive home alone";
    String[] result = x.split(".");
    for (String i : result) {
        System.out.println(i);
    }
}
}
Run Code Online (Sandbox Code Playgroud)

编译完美,但在运行时没有任何反应.我究竟做错了什么?

java split

5
推荐指数
2
解决办法
285
查看次数

如何用单斜杠替换特殊字符

我对Java中的字符串有疑问.比方说,我有一个像这样的字符串:

String str = "The . startup trace ?state is info?";
Run Code Online (Sandbox Code Playgroud)

因为字符串包含特殊字符,"?"所以我需要"\?"根据我的要求替换字符串.如何用特殊字符替换"\"?我尝试了以下方式.

str.replace("?","\?"); 
Run Code Online (Sandbox Code Playgroud)

但它给出了编译错误.然后我尝试了以下内容:

str.replace("?","\\?");
Run Code Online (Sandbox Code Playgroud)

当我这样做时,它取代了特殊字符 "\\".但是当我打印字符串时,它会打印出单斜杠.我认为它只采用单斜杠,但是当我调试时,我发现该变量正在进行中"\\".

任何人都可以建议如何用单斜杠("\")替换特殊字符?

java

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