博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
String系列-----String
阅读量:5939 次
发布时间:2019-06-19

本文共 1632 字,大约阅读时间需要 5 分钟。

jdk源码学习之String,手动实现一个String

package com.amazing.jdk.string_2017_12_31;import java.io.Serializable;import java.util.Arrays;/** * Created by yaming on 17-12-31. */public final class MyString implements Serializable{   private  final char value[];//数组   private int hash;    private static final long serialVersionUID = -6849794470754667710L;    public MyString() {        this.value =new char[0];    }    public MyString(char[] value) {        this.value = value;    }    /**     * 返回String长度     * @return     */    public int length(){        return value.length;    }    /**     * 取得该位置上的char     * @param index     * @return     */    public char charAt(int index){        if(index<0|| index>=value.length)            throw new StringIndexOutOfBoundsException();        return value[index];    }    /**     * 实现comparable接口,实现compareTo方法。     * 按词典比较String的内容,结果正,负,零。大小写不等价     * 思想:     * 从第一个字符开始比较。     * 比较次数是长度小的字符串长度     * 如果前面都相同,比较字符串长度     * @param another     * @return     */    public int compareTo(MyString another) {        int len1=value.length;        char[] str1=value;        int len2=another.value.length;        char[] str2=another.value;        int min=Math.min(len1,len2);        int k=0;//从第一个字符开始比较        while (k
0){ char val[] = value; for (int i = 0; i

 分析:

1.该类被final修饰,所以不可以被继承

2.为什么每次修改字符串都new String()?

final char [] value;   //String的底层是字节数组。被final修饰,该字节数组不可以被修改。所以每次修改都new一个String

3.该类重写了equals方法。

Object类里的方法是比较两个字符串的引用是否相同,String类重写了equals方法,比较的是两个字符串的值。

[ 注: == 号比较基本数据类型时,比较的是数据的值是否相同。比较引用类型的时候,比较的引用是否相同

 

转载于:https://www.cnblogs.com/inspred/p/8168717.html

你可能感兴趣的文章
手机H5显示一像素的细线
查看>>
Menu 菜单栏
查看>>
Integer跟int的区别(备份回忆)
查看>>
集合解析
查看>>
详解分布式应用程序协调服务Zookeeper
查看>>
软件工程之构建之法
查看>>
UVa 10902
查看>>
Mathf.Sin正弦
查看>>
禁止浏览器缓存js
查看>>
【Redis】安装PHP的redis驱动(二)
查看>>
java中string和int互相转化
查看>>
什么是序列化,为什么要序列化
查看>>
Java保留小数点后有效数字
查看>>
新学期的合作
查看>>
C++中一些类和数据结构的大小的总结
查看>>
mysql开启binlog
查看>>
ctrl + z fg bg
查看>>
工作流引擎Oozie(一):workflow
查看>>
struct框架
查看>>
Deep Learning(深度学习)相关网站
查看>>