Java 基础(Java常用类 String)
2021/4/17 20:30:13
本文主要是介绍Java 基础(Java常用类 String),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
String的特性
- String 类: 代表字符串。Java 程序中的所有字符串字面值(如 "abc")都作为此类的实例实现。
- String 是一个 final 类,代表不可变的字符序列。
- 字符串是常量,用双引号引起来表示。它们的值在创建之后不能更改。
- String 对象的字符内容是存储在一个字符数组 value[] 中的。
String: 字符串,使用一对"" 引起来表示。
- String 声明为 final 的, 不可被继承
- String 实现了 Serializable 接口: 表示字符串是支持序列化的。
实现了 Comparable 接口: 表示 String 可以比较大小 - String 内部定义了 final char[] value 用于存储字符串数据
- String: 代表不可变的字符序列。简称:不可性。
体现: 1. 当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值。
2. 当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。
3. 当调用String 的replace()方法修改指定字符或字符串时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。 - 通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中。
- 字符串常量池中是不会存储相同内容的字符串的。
import org.junit.Test; public class StringTest { @Test public void test1(){ String s1 = "abc"; //字面量的定义方式 String s2 = "abc"; s1 = "hello"; System.out.println(s1 == s2); //比较 s1 和 s2 的地址值 System.out.println(s1); //hello System.out.println(s2); //abc System.out.println("***************************"); String s3 = "abc"; s3 += "def"; System.out.println(s3); //abcdef System.out.println(s2); System.out.println("***************************"); String s4 = "abc"; String s5 = s4.replace('a', 'm'); System.out.println(s4); //abc System.out.println(s5); //mbc } }
String 的实例化方式:
方式一: 通过字面量定义的方式
方式二: 通过 new + 构造器的方式
import org.junit.Test; public class StringTest { @Test public void test2(){ //通过字面量定义的方式:此时的s1和s2的数据javaEE声明在方法区中的字符串常量池中。 String s1 = "JavaEE"; String s2 = "JavaEE"; //通过new+构造器的方式:此时的s3和s4保存的地址值,是数据在堆空间中开辟空间以后对应的地址值。 String s3 = new String("JavaEE"); String s4 = new String("JavaEE"); System.out.println(s1 == s2); //true System.out.println(s1 == s3); //false System.out.println(s1 == s4); //false System.out.println(s3 == s4); //false System.out.println("***************************"); Person p1 = new Person("Tom", 12); Person p2 = new Person("Tom", 12); System.out.println(p1.name.equals(p2.name)); //true System.out.println(p1.name == p2.name); //true } } class Person{ String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } }
字符串的特性
- 常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量。
- 只要其中有一个是变量,结果就在堆中
- 如果拼接的结果调用intern()方法,返回值就在常量池中
import org.junit.Test; public class StringTest { @Test public void test3(){ String s1 = "javaEE"; String s2 = "hadoop"; String s3 = "javaEEhadoop"; String s4 = "javaEE" + "hadoop"; String s5 = s1 + "hadoop"; String s6 = "javaEE" + s2; String s7 = s1 + s2; System.out.println(s3 == s4); //true System.out.println(s3 == s5); //false System.out.println(s3 == s6); //false System.out.println(s5 == s6); //false System.out.println(s5 == s7); //false System.out.println(s6 == s7); //false System.out.println("***************************"); String s8 = s5.intern(); System.out.println(s3 == s8); //true } }
这篇关于Java 基础(Java常用类 String)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22[开源]10.3K+ Star!轻量强大的开源运维平台,超赞!
- 2024-11-21Flutter基础教程:新手入门指南
- 2024-11-21Flutter跨平台教程:新手入门详解
- 2024-11-21Flutter跨平台教程:新手入门与实践指南
- 2024-11-21Flutter列表组件教程:初学者指南
- 2024-11-21Flutter列表组件教程:新手入门指南
- 2024-11-21Flutter入门教程:初学者必看指南
- 2024-11-21Flutter入门教程:从零开始的Flutter开发指南
- 2024-11-21Flutter升级教程:新手必读的升级指南
- 2024-11-21Flutter升级教程:轻松掌握Flutter版本更新