String类型详解
来源:互联网 发布:网络名誉侵权案例 编辑:程序博客网 时间:2024/06/13 23:52
字符串是一个特殊的对象,从api文档的对string声明:public final class{} 中可以看出该类不可以被继承。
以上是对字符串的描述,接下来通过实例展现string的类型的一些用法:
很多人碰到这个问题:String s = "123"; 这里有几个对象。在这里,s为类类型变量,“123”为一个对象。
变量可以指向对象,所有像“123”字符串都是一个对象,同时s也指向了这个对象。
字符串还有一个特点:就是初始化后就不会被改变。但是很多人会误解这个意思。先看个例子:
在一个类中执行以下代码:
String s ="123";
s = "789";
System.out.println(s); 请问打印出来的是什么?是123还是789。很多人以为既然字符串不会被改变,所以
打印出来的应该是123。
错!打印出来的是789,为什么呢?
这个我们上面说的String s = "123"中的对象有关系。首先,“123”这个对象确实不会改变,它一直会在内存中,
s刚开始指向了“123“这个对象,而后来s指向了”789“这个对象,所以才打印出来789.
还有一个关于String的常见问题:
String s1 = "123";
String s2 = new String("123");
s1==s2 这个会显示true还是false
s1.equals(s2)显示true还是false
答案是第一个为false,第二个为true
第一个是判断2个对象是否相等,答案肯定是不相等。应为s2 new了一个新的对象。
第二个相等是因为equals是判断2个字符串内容是否相同,所以相等。
最后一个可能会让你模糊的问题:
String s1 = "123";
String s2 = "123";
请问s1==s2会显示true还是false
答案是true。首先,”123“是一个在内存中的对象,它不会被改变。当String s2 = "123"的时候,
由于已经有”123“对象了且不会改变。系统就不会再为”123“在开辟一个空间,而是让s2指向 String s1 = "123"
中的”123“。既然s1 s2都指向了相同的对象,所以相等。
- String类型详解
- C++ string类型详解
- C++string类型详解
- C++ string类型详解
- C++ string类型详解
- String类型详解
- java String类型详解
- String类型详解
- C++ string类型详解
- C++ string类型详解
- string 类型详解
- C++ string类型详解
- String类型详解
- 详解Java的String 类型
- C++之string类型详解
- 详解C#引用类型String
- 详解java String类型(一)
- Java之String类型详解
- ssl双向认证和单向认证原理
- 【POJ2425】A Chess Game 博弈,SG函数,裸题,模板题
- 黑马程序员--Java基础学习八(Java包装器类之Integer)
- HTML基础.1
- grunt 笔记一
- String类型详解
- BZOJ 2553 BeiJing2011 禁忌 AC自动机+矩阵乘法
- 数据库Function和View (用于虚拟表或虚拟字段处理)
- Writing down something useful from today
- 函数调用过程探究
- error: ‘exit’ was not declared in this scope
- 【POJ3537】Crosses and Crosses 博弈,SG函数,Multi-SG博弈
- c++_primer_exercise_1123
- 黑马程序员--Java基础学习九(Java中的访问权限修饰符)