Java最高

通过。开始使用Spring 5和Spring Boot 2学习的春天课程:

>>查看课程

1.介绍

Java字符串是最重要的课程之一我们已经讲过很多方面了字符串相关教程系列

在本教程中,我们将重点关注字符串初始化Java。

2.创建

首先,我们应该记住如何字符串s是用Java创建的。

我们可以用关键字或文字语法:

String usingNew = new String("金宝搏188体育baeldung");String usingLiteral = "金宝搏188体育baeldung";

同样重要的是,我们要了解如何字符串在专门的池中管理

3.字符串声明只

首先,我们先声明一个字符串,而不显式地指定值。

我们可以在局部执行,也可以作为成员变量执行:

public class StringInitialization {String fieldString;void printDeclaredOnlyString() {String localVarString;/ / System.out.println (localVarString);->编译错误System.out.println(fieldString);}}

我们可以看到,如果我们试着用localVarString在给它赋值之前,我们会得到一个编译错误。另一方面,控制台会显示“空”fieldString的价值。

看到的,用默认值初始化成员变量在构造类时,字符串的情况。但是,我们必须自己初始化局部变量。

如果我们给localVarString的值在美国,我们将看到两者现在实际上是相等的:

localVarString = null;assertequal (fieldString localVarString);

4.字符串初始化使用文本

现在让我们创建两个字符串使用相同的文字:

String literalOne = "金宝搏188体育Baeldung";String literalTwo = "金宝搏188体育Baeldung";

我们将通过比较引用来确认只创建了一个对象:

assertTrue (literalOne = = literalTwo);

这要追溯到一个事实,那就是字符串s存储在一个池中literalOne添加了字符串"金宝搏188体育贝尔顿"的名字,然后literalTwo重用它。

5.字符串初始化使用

但是,如果我们使用关键字。

String newStringOne = newString ("金宝搏188体育Baeldung");String newStringTwo = newString ("金宝搏188体育Baeldung");

虽然两者都有价值字符串s将和前面一样,这次我们将使用不同的对象:

assertFalse (newStringOne = = newStringTwo);

6.空字符串年代

现在让我们创建三个空字符串史:

String emptyLiteral = "";String emptyNewString = new String("");String emptyNewStringTwo = new String();

我们现在知道,emptyLiteral将会添加到字符串池,而其他两个直接进入堆。

虽然这些不会是相同的对象,它们都会有相同的值:

assertFalse(emptyLiteral == emptyNewString) assertFalse(emptyNewString == emptyNewStringTwo) assertFalse(emptyNewString == emptyNewStringTwo) assertEquals(emptyLiteral, emptyNewString);assertequal (emptyNewString emptyNewStringTwo);

7.

最后,让我们看看null如何字符串年代的行为。

让我们声明并初始化一个null字符串:

String nullValue = null;

如果我们印刷nullValue,我们会看到单词“null”,就像我们之前看到的那样。如果我们试图调用任何方法nullValue,我们会得到一个NullPointerException,像预期的那样。

但是,为什么要打印“null”?是什么实际上呢?

嗯,JVM规范说,是所有引用的默认值,所以它不是专门绑定到字符串。实际上,该规范并没有要求对

那么,“null”从哪里来打印a字符串然后呢?

如果我们看一下PrintStream #println实现时,我们会看到它调用字符串#返回对象的值:

public void println(对象x) {String s = String. valueof (x);synchronized (this) {print(s);换行符();}}

而且,如果我们看看#返回对象的值的字符串,我们得到了答案:

public static String value (Object obj) {return (obj == null) ?“零”:obj.toString ();}

很明显,这就是“null”的原因。

8.结论

在本文中,我们进行了探讨字符串初始化。我们解释了声明和初始化之间的区别。我们也谈到了使用使用文字语法。

最后,我们看看赋值a意味着什么价值字符串,如何值在内存中表示,以及当我们打印它时它的样子。

本文中使用的所有代码示例都是可用的在Github

Java底部

通过。开始使用Spring 5和Spring Boot 2学习的春天课程:

>>查看课程
本文评论关闭!