Java学习笔记—String的用法
来源:互联网 发布:matlab模块化编程 编辑:程序博客网 时间:2024/06/06 05:04
1.String类重写了equals方法
String中重写了基类Object的equals方法,以下为JDK源码
Object类中的equals方法:
public boolean equals(Object obj) { return (this == obj); }//比较地址是否相等
String类中的equals方法:
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; }//重写的equals方法会比较两个字符串是否相等
2.如何理解String类的“不可变”
先看以下代码:
public class Test{ public static void main(String[] args) { String str="before"; System.out.println(str);//输出before str="after"; System.out.println(str);//输出after }}
大家可能看完以上代码就疑惑了,str变量变化了呀!为什么说是“不可变”的呢?
我们观察到String类的源代码有以下一段:private final char value[];
其实String类的底层就是存储了一个字符数组,这个字符数组的“地址”是不可变的,并且String类对外不提供对这个字符数组进行修改的方法,因此String类的“不可变”指的是String对象指向的字符数组(上例中的“before”和“after”)不可变。
但是可以将String对象指向新的字符数组,上例中,str变量一开始指向的是“before”,后面重新指向了“after”
阅读全文
0 0
- Java学习笔记—String的用法
- JAVA学习笔记0006----String的简单用法
- C++ string容器的用法 学习笔记
- Java学习笔记—数组的用法
- Java学习笔记:String
- Java String学习笔记
- java学习笔记之String的方法
- Java中有关String的学习笔记
- java学习笔记——String类
- Java学习笔记——this的用法
- Java学习笔记——static的用法
- Java学习笔记—注解(Annotation)的用法
- Java学习笔记—正则表达式的用法
- Java学习笔记—File类的用法
- Java学习笔记—JDBC(连接sqlserver)的用法
- java学习笔记--StringBuilder的用法
- JAVA学习笔记--this的用法
- JAVA学习笔记(for的用法)
- spring 3.0.5的<mvc:resources> 标签的使用
- php 去除小数点后面的0,保留非零
- 重载和重写的底层实现
- [Leetcode] 342. Power of Four 解题报告
- 2017 多校赛6 Kirinriki hdu 6103
- Java学习笔记—String的用法
- go语言之go run/build/install/get
- 动态感知服务器上下线
- B
- opengl光照之聚光灯
- Java String面试题
- 手机淘宝的客户端架构探索之路
- Android 动态解析布局,实现制作多套主题
- 软件版本控制流程