相关疑难解决方法(0)

Scala案例类使用浅拷贝还是深拷贝?

case class Person(var firstname: String, lastname: String)

val p1 = Person("amit", "shah")
val p2 = p1.copy()
p1.firstname = "raghu"
p1
p2

p1 == p2
Run Code Online (Sandbox Code Playgroud)

正如我通过一些文档说scala复制方法的案例类使用浅拷贝

但是这个例子的输出我无法破解

我已经从p1创建了副本p2,然后我将p1.firstname更改为"raghu"

因此,如果是浅拷贝,它应该改变p2.firstname的值,但这不会发生在这里

参考:https://docs.scala-lang.org/tour/case-classes.html

scala shallow-copy

8
推荐指数
2
解决办法
990
查看次数

weakhashmap如何运作?

正如weakhashmap如何理解对其中一个密钥的引用现在已经过时,特别是如果密钥是一个汇集的String?

java hashmap

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

堆内存和字符串池之间的区别

Java中的堆内存和字符串池有什么区别?

在这个链接中,据说:

String s1 = "Hello";

String s2 = new String("Hello");
Run Code Online (Sandbox Code Playgroud)

s1指向String Pool的位置,s2指向堆内存位置.

java string

7
推荐指数
2
解决办法
8271
查看次数

Java: Beginner question regarding Strings

When creating a String in Java, what is the difference between these two:

String test = new String();
test = "foo";
Run Code Online (Sandbox Code Playgroud)

and

String test = "foo";
Run Code Online (Sandbox Code Playgroud)

When do I need to use the keyword new? Or are these two basically the same and they both create a new String object?

java string object

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

当引用不同时,为什么引用相等性检查返回true

考虑以下代码:

fun main(args : Array<String>) {
    println("Async" == MetricCategory.Async.toString())
    println("Async" === MetricCategory.Async.toString())
}
Run Code Online (Sandbox Code Playgroud)

它输出

true
true
Run Code Online (Sandbox Code Playgroud)

虽然我在期待

true
false
Run Code Online (Sandbox Code Playgroud)

为什么true打印第二次检查,因为两个参考不同

kotlin

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

String intern方法与普通字符串创建之间的区别

我无法intern通过String类了解方法提供程序的用法.

String s1 = "vivek"; //Stmt 1
String s2 = "vivek"; //Stmt 2
String s3 = s1.intern(); //Stmt 3

System.out.println(s1 == s2);// prints true
System.out.println(s1 == s3);// prints true
Run Code Online (Sandbox Code Playgroud)

我读到内部编译器做一个实习生,但在哪个对象?编译器如何知道他必须做实习生s1来创建s2

Stmt 2Stmt 3这里有什么区别?两者都一样吗?如果是的话,internjava的方法有什么特别之处?

java string

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

JAVA字符串对象数

任何人都可以从这个链接http://www.javatpoint.com/corejava-interview-questions-3解释问题87和89

87)以下代码中将创建多少个对象?

String s1 = "string1";
String s2 = "string1";
String s3 = "string1";
Run Code Online (Sandbox Code Playgroud)

答案是:只有一个对象

89)以下代码中将创建多少个对象?

String s = new String("Welcome");  
Run Code Online (Sandbox Code Playgroud)

答案是:两个对象,一个在字符串常量池中,另一个在非池(堆)中.

java

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

Java - 在函数内创建具有常量值的字符串

哪一个更好?

public class A {
      private static final String DOSOMETHING_METRICS = "doSomethingmetrics";
      private static final String SAYSOMETHING_METRICS = "saySomethingmetrics";
      public void doSomething() {
            ...
            System.out.println("Metrics for " + DOSOMETHING_METRICS + "is something");
      }
      public void saySomething() {
            ...
            System.out.println("Metrics for " + SAYSOMETHING_METRICS + "is something");
      }
}
Run Code Online (Sandbox Code Playgroud)

要么

public class A {
      public void doSomething() {
            final String DOSOMETHING_METRICS = "doSomethingmetrics";
            ...
            System.out.println("Metrics for " + DOSOMETHING_METRICS + "is something");
      }
      public void saySomething() {
            final String SAYSOMETHING_METRICS = …
Run Code Online (Sandbox Code Playgroud)

java string memory-management

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

JShell/Java 9中的相等性是怎么回事?

我一直在使用JShell来测试它,今天我遇到了相当有趣的行为.

jshell> String a = "A"
a ==> "A"

jshell> String b = "A"
b ==> "A"

jshell> a == b
$4 ==> true

jshell> "A" == "A"
$5 ==> true
Run Code Online (Sandbox Code Playgroud)

我首先想知道这是否是Java 9的一个功能,我通过使用Java 9编译和运行该程序来检查它

public class Equus {
    public static void main(String... args) {
        String a = "A";
        String b = "A";
        System.out.println("a == b");
        System.out.println(a == b);
        System.out.println("\"A\" == \"A\"");
        System.out.println("A" == "A");
    }
}
Run Code Online (Sandbox Code Playgroud)

有趣的是,我得到了

a == b 
true 
"A" == "A" 
true
Run Code Online (Sandbox Code Playgroud)

作为我的输出也是如此.这里发生了什么?为什么ab彼此相等,为什么是 …

java java-9 jshell

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

Java字符串不变性与String对象的实例

在Java中,字符串很特殊.

由于具有相同内容的字符串文字在公共池中共享存储,因此Java的String被设计为不可变的.也就是说,一旦构造了String,就无法修改其内容.否则,共享相同存储位置的其他String引用将受到更改的影响,这可能是不可预测的,因此是不合需要的.

如果我在String上同步怎么办?我会锁定共享相同内容的String的所有实例吗?

例如:我有一个多线程类,可以从数据文件中读取和写入.每天有1个文件,我想同步读取和写入同一个文件,以防止不可预测的行为.我可以简单地同步文件名(String)吗?

java string

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