Java字符串_String
来源:互联网 发布:网络运营培训课程 编辑:程序博客网 时间:2024/06/05 04:45
首先看JDK的源码:
public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[];我们可以知道:
(1)String是一个类;
(2)不可以继承;
(3)实现了3个接口;
(4)用value[]数组存放字符
(5)final修饰了value[],所以是不可变的字符序列。
短短几行代码,把该告诉我们的都告诉了,还是开源好呀,不用再去记忆各式各样的用法了,不明白,打开源码看看,一切就清楚了。
源码中详细了说明了各个函数的实现和目标,String的各个函数的用法就没啥必要学了,用的时候,现看先用,发现没有的方法,自己写一个就ok了。
再看一个例子:
package com.ws.array;public class teststring {public static void main(String[] args) {String str1 = new String("中国");String str2 = new String("中国");System.out.println(str2.equals(str1));System.out.println(str2==str1);String str3 = "中国";String str4 = "中国";System.out.println(str4.equals(str3));System.out.println(str4==str3);}}输出:
truefalsetruetrue
第一个输出是说str1和str2的内容是否相同,都是中国,所以相同,true;
第二个输出是说str1和str2是不是一个对象,当然不是,所以false;
第三个输出是说str3和str4的内容是否相同,都是中国,所以相同,true;
第四个输出是说str3和str4是不是一个对象,字符串会自动创建一个对象,这两个变量都指向这个对象,一个地址,是一个对象,true。
语言描述不清楚,画个图:
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; }代码,描述的很清楚,如果两个字符串是一个对象,返回true,如果不是,一个字符一个字符的比较,相同返回true,有一个不同,返回false。
多看源码,了解原理就好了,用的时候查一查,不要浪费脑细胞,方法万万千千,会用就ok。
0 0
- Java字符串_String
- Java基础第十三天学习日记_String字符串
- 黑马程序员_string字符串
- 黑马程序员_String 字符串
- Java入门_String类
- Swift2-0基础_String(字符串)
- java学习笔记6_String
- java第十二天_String类
- 黑马程序员:Java编程_String
- 七.Java基础_String类
- Java源码分析02_String
- java基础11_String类
- java学习笔记2_String
- lwj_C#_string类方法 可变字符串
- Java基础_常用类_String
- 黑马程序员—java基础_String类
- Java学习_String类型转换等问题
- C语言函数_string.h 之 字符串comparison函数strcmp
- Tomcat启动后,Unable to compile class for JSP解决方法
- Python装饰器
- drawable各种属性
- js登录验证
- 微信预约系统
- Java字符串_String
- Android设计模式MVVM之DataBinding简单使用
- 普通工程师和高级工程师的差别在哪里?如何快速突破?
- HDU1197 Specialized Four-Digit Numbers
- Android开发基础之Button按钮的简单用法
- HTTPS和HTTP的区别
- maven总结
- Mybatis 模糊查询和动态sql语句
- 使用SurfaceView播放视频,调节进度,滑动屏幕调节音量并显示音量。