1.String的null值或空值判断
if (name != null && !name.equals("")) {
//do something
}
或者
if (!"".equals(name)) {//将""写在前头,这样,不管name是否为null,都不会出错。
//do something
}
2.使用+运算符连接时注意:
int a = 3;
String str = null;
System.out.println(a + str);
输出:
3null
String a = "3";
Object str = null;
System.out.println(a + str);
输出:
3null
int a = 3;
Object str = null;
System.out.println(a + str);
输出:编译出错。
引用
对于"a+b",是这么处理的,如果a和b就基本数据类型,则调用String.valueOf(a),String.valueOf(b),得到两个字符串直接连接起来;如果a和b是object类型包括String类型,则首先判断a和b是否等于null,如果等于则把把它们都转化成字符串“null”,再连接起来,如果不等于null,则调用String.valueOf(a),String.valueOf(b)得到两个字符串连接起来----其他各种情况同理
引用
引用类型的值有两种含义:引用所指对象的内存地址和引用所指对象的内容。
String str = null;
表示的是 str 所指对象的内存地址为 null;
String str = "Test";
表示的是 str 所指对象的内存地址是一个字符串对象的地址,并且这个字符串对象的toString方法返回"Test"。
// 例1
String str = null;
System.out.println(str);
例1打印时,JVM发现str所指对象的内存地址为null,JVM针对此类引用直接返回字符串"null"。
所以你看到的是 null 。
// 例2
String str = null;
System.out.println(str.toString());
例2打印时,JVM将调用str所指对象的toString()方法,但是str所指对象是null,所以JVM抛出NullPointException。
所以你看到的是抛出 NullPointException 异常。
// 例3
String str = null;
String str2 = "Test";
System.out.println(str + str2);
当out.println参数中含有+时,JVM内部使用了StringBuilder的append方法。也就是说:
例3可以分解为
String str = null;
String str2 = "Test";
StringBuilder sb = new StringBuilder();
sb.append(str);
sb.append(str2);
System.out.println(sb.toString());
所以你会看到 nullTest 的结果。
// 例4 引申(JVM如何进行 + - * / 等简单运算,自己思考吧。)
int i = 10;
int j = 20;
String str = null;
System.out.println(i + j + str);
例4会打印出什么呢?
例4可以分解为
int i = 10;
int j = 20;
String str = null;
StringBuilder sb = new StringBuilder();
int c = i + j;
sb.append(c);
sb.append(str);
System.out.println(sb.toString());
参考:
http://jonsion.iteye.com/blog/421958
http://topic.csdn.net/u/20091129/01/6F2604AB-AD57-4665-97E2-B1968387D509.html
分享到:
相关推荐
根据提供的信息,我们可以总结出这份Java基础String类选择题练习题主要聚焦于String及StringBuffer类的使用。尽管具体的题目内容未给出,但从所展示的信息中可以推断出该练习题集涵盖了以下几方面的知识点: ### 一...
本文将深入探讨Java中String类型和int类型之间的比较方法以及相互转换的技术,这对于理解和优化代码逻辑、提升程序性能具有重要意义。 ### 一、String类型与int类型的基本概念 #### 1.1 String类型 String类型在...
深入了解Java中的String类是至关重要的,因为String在Java编程中占据着极其重要的位置。下面将对给定的信息进行深入分析: ### 1. String 类是 final 的,不可被继承 在Java中,`String` 类被声明为 `final` 类型...
Java中的String类是编程中非常基础且重要的一个类,它代表不可变的字符序列,即一旦创建,其内容就不能更改。下面我们将详细讨论String类的一些主要特性、实例化方式以及常用方法。 1. **String类的实例创建**: -...
### Java中String、十六进制String与byte[]之间的相互转换 在Java开发中,字符串(String)、十六进制表示的字符串以及字节数组(byte[])之间的转换是非常常见的需求,尤其是在处理网络通信、文件读写等场景下。...
在Java编程语言中,String类型扮演着至关重要的角色。它被广泛用于表示和操作文本,因为它是不可变的,这确保了字符串的安全性和效率。本文将深入探讨Java中的String类,包括其特性、构造方法、常用方法以及与其他...
### Java中String类的知识 #### 一、String 类概述与创建方式 在Java语言中,`String`类是用于表示不可变字符序列的核心类之一。它代表了一个字符串对象,一旦被初始化后,其内容不能被改变。这被称为不可变性...
### 在Java Switch中使用String作为分支条件 #### 引言 在Java中,`switch`语句最初只能处理`int`、`char`以及`enum`类型的数据。然而,在实际开发过程中,有时需要根据字符串(`String`)来执行不同的逻辑分支。...
本文将深入探讨Java中的`String`类及其使用时需要注意的关键点,希望对开发者们有所帮助。 #### 1. 字面量(Literal)与字符串常量池(String Constant Pool) 字符串字面量指的是直接用双引号括起来的字符串,...
在Java中,`String`默认使用的是Unicode编码,但在实际应用中,经常需要将`String`转换为特定字符集下的`byte[]`。 - **Java I/O操作**: 在Java中进行I/O操作时,通常涉及到`InputStream`和`OutputStream`等类,这些...
"Java中将String类型转换成Timestamp类型" ...将String类型转换成Timestamp类型是Java编程语言中的一种常见操作,该操作需要了解Timestamp类型的特点和限制,并使用正确的方法和技术来实现转换操作。
在Java编程语言中,`String`类是使用最频繁的类之一,它代表不可变的字符序列。在本文中,我们将深入探讨`JAVA_String`相关的知识点,包括其创建、操作、比较以及内存管理等方面。 首先,`String`类位于`java.lang`...
### Java中的String池 在Java语言中,字符串是极为常用的一种数据类型,而字符串的创建、比较等操作在实际开发过程中频繁出现。本篇文章将详细解释Java中的String池概念及其重要性,并通过一个示例代码深入理解...
在 Java 中,将 String 转换成 int 可以使用以下两种方法: 1. 使用 Integer.valueOf() 方法 通过 Integer.valueOf() 方法可以将 String 转换成 int。例如: int i = Integer.valueOf(my_str).intValue(); 2. ...
此外,我们还需要注意的是,在使用 String 类型时,JVM 会对其进行优化。例如,在使用 String 对象进行字符串拼接时,JVM 会将其解释为 StringBuffer 对象的拼接,从而使得 String 对象的速度快于 StringBuffer 对象...
JAVA 中 String 类常用方法使用实例 在 JAVA 中,String 类是一种常用的类,提供了许多实用的方法来操作字符串和数组。在本文中,我们将介绍 String 类中的常用方法,并通过实例来演示每个方法的使用。 Int length...
### 正确使用String类的几点注意 在Java编程中,`java.lang.String`类是极为常见的基础数据类型之一,其重要性和应用范围不言而喻。为了更好地理解和使用String类,本文将从几个关键方面入手,探讨如何更加高效、...
这里需要注意的是,由于`|`字符在正则表达式中有特殊含义(表示“或”),所以在字符串中表示该字符时需要使用转义字符`\`。因此,为了匹配实际的`|`字符,我们使用`"\\|"`。 3. 分割后,结果被存储在一个名为`array...
String类位于java.lang包中,意味着它无需显式导入即可在任何Java程序中使用。由于字符串在Java中被视为不可变对象,即一旦创建,就不能改变其内容,这确保了线程安全,并允许JVM对字符串进行优化。 String类提供了...
总的来说,这个"(Java)json和String互转必备Jar包"为Java开发者提供了一个便捷的工具,使他们能够在项目中方便地处理JSON数据,无论是从网络获取,还是在本地存储和处理。掌握好这些库的使用,对于提升开发效率和...