相关疑难解决方法(0)

当string是不可变的时候,怎么来System.out.println(s.concat("some string")); 返回更改的值

我写了以下代码:

public static void main(String[] args) {
    // TODO Auto-generated method stub
    String s = new String("abc");
    System.out.println(s.concat("def"));
}
Run Code Online (Sandbox Code Playgroud)

它正在返回输出:"abcdef"

如果字符串是不可变的,这怎么可能.

java string immutability

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

了解java.lang.String s = new String(“ hello”)和String hold =“ hello”之间的区别

我碰到了这段代码,有些困惑

java.lang.String s = new String("hello");
Run Code Online (Sandbox Code Playgroud)

我不确定将哪个变量s初始化为java.lang.String,以及此vs String hold =“ hello”的目的是什么。我试图浏览一些文档,但找不到任何东西。

java android

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

Java中的字符串何时是不同的对象?

我最近在Java中了解到:==比较对象引用,而不是内容,这就是为什么:

String str1 = "hell";
String str2 = "o";
String str3 = str1 + str2;
String str4 = "hello";

str3 == str4; // False
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是,当我执行以下操作时:

String str5 = "hello";
str5 == str4; // True
Run Code Online (Sandbox Code Playgroud)

这是否意味着str5和str4引用相同的内存对象?这是如何运作的?

java string memory-management string-comparison

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

字符串是不可变的,然后replace()如何工作?

我试图用它的最后一个替换字符串的第一个字母/字符,并且它是第一个字符串.例如abcd => dbca.字符串在Java中是不可变的,那么我们如何解释这个程序的行为呢?请看一下最终输出.str1没有char'a',但在最终输出中它出乎意料地......怎么样?// frontBack()的参数是String"abcd".

 public static void frontBack(String str) {
   String first= ""+str.charAt(0);
   System.out.println("first char is "+first);
   String last = ""+str.charAt(str.length()-1);
   System.out.println("last char is "+last);
   String str1;
   str1 = str.replace(""+str.charAt(0),last);
   System.out.println("String str1 is => "+str1);
   String str2 ;
   str2 = str1.replace(""+str1.charAt(str1.length()-1),first);
   System.out.println("String str2 is derived from str1(dbcd) which has no 'a' but o/p is =>  "+str2);    
  }
 /* Have a look at output:
                        first char is a
                        last char is d
                        String str1 is => dbcd
                        String str2 is derived …
Run Code Online (Sandbox Code Playgroud)

java string

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

Trim and Lowercase

Every time I try doing the trim method and the lowercase method it doesn't show the way I want it.

sentence.trim();
sentence.toLowerCase();
System.out.println("\"" + sentence + "\"" + " ---> ");
Run Code Online (Sandbox Code Playgroud)

For example, if I input " Hello World! ", it will print out " Hello World! " and not use any of the methods.

java methods trim lowercase

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

Java:通过引用传递/ ListIterator.add()

Java不通过引用传递变量.在这种情况下,数据结构如何ListIterator更改其相应的列表?

这是我写的一个示例迭代器:

public class OdpIterator<E> implements ListIterator<E> {

    private OdpList<E> list;
    private int cursor;

    public OdpIterator(OdpList<E> list) {
        this.list = list;
    }

    @Override
    public void add(E arg0) {
        list.add(arg0);
    }
Run Code Online (Sandbox Code Playgroud)

但是当我尝试更改listadd(),它不会更改基础列表,因此以下测试失败:

OdpList<Integer> list = new OdpList<Integer>();
ListIterator<Integer> iter = list.listIterator();
iter.add(42);
assertTrue(list.contains(42));
Run Code Online (Sandbox Code Playgroud)

OdpList add:我认为它是正确的,因为它通过了它的单元测试.

@Override
public boolean add(E arg0) {
    ListCell<E> cell = new ListCell<E>(arg0);

    if (size() > 0) { //if something is already in the list
        tail.setNext(cell);
        tail = cell;
    }
    else { …
Run Code Online (Sandbox Code Playgroud)

java variables iterator pass-by-reference data-structures

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

为什么string在java中被称为immutable?

我知道不可变对象是无法修改的对象.但是当我们使用函数时可以修改字符串.那么我们怎么说字符串是不可变的?这是一个问题采访.需要尽快回答

string immutability

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

不可变性意味着参考不能改变

这可能是最愚蠢的问题,但我知道Java中的字符串是不可变的.但是,请考虑扫描典型文件的此代码段:

try (BufferedReader br = new BufferedReader(new FileReader(file))) {
    String line;
    while ((line = br.readLine()) != null) {
      // The value of line appears to be reset after each iteration 
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么line这里没有保留其在扫描过程中的价值?这与readLine()方法本身有关吗?我承认我还没有看到该方法是如何实现的,所以我不确定它是如何工作的.

java string

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

Java删除字符串数组中的Dash

目前我正在尝试删除字符串数组中的破折号.我在下面尝试的代码不起作用.

splitTimeStamp[0].replaceAll("[\\s\\-()]", "");
System.out.println(splitTimeStamp[0]);
Run Code Online (Sandbox Code Playgroud)

从另一个stackoverflow页面获得replaceAll代码.

提前致谢!

java replaceall

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

字符串是不可变的?

只是有一个问题,我们如何重写上面的代码,以便仅创建一个String对象?

字符串是不可变的,不是studentDetails已经有一个String对象

public void displayString(Student[] students)
{
   String studentDetails = "";
   for (Student stu : students)
   {
       studentDetails += stu.getFirstName();
       studentDetails += " ";
       studentDetails += stu.getLastName();
       studentDetails += " ";
       studentDetails += stu.getAge();
       studentDetails += "\n";  
   }
   System.out.println("Student Details are: ");
   System.out.println(studentDetails);
}
Run Code Online (Sandbox Code Playgroud)

java string

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