Java源码学习之String篇

字符串

从概念上讲,Java字符串就是Unicode字符串序列。Java 没有内置的字符串类型,而是在标准的Java类库中提供了一个预定义类String。每个用双引号括起来的字符串都是String类的一个实例。

基础知识

这里列出的一些基础知识是在你读源码时所需要了解的;
1.原码、反码、补码:
(1)在Java中,所有数据的表示方式都是以补码形式来表示;
(2)正数:原码、反码、补码相同;
(3)负数:符号位为1,其余各位是对原码取反,然后整个数加1;
(4) ~ 按位取反(反码加1称为补码。)步骤就是先求出这个数(因为java存的数是补码)的原码,然后对原码取反得到X,这个X就是我们要求的那个数的补码;
2.java运算符 与(&)、非(~)、或(|)、异或(^);
(1)位与运算符(&):运算规则:两个数都转为二进制,然后从高位开始比较,如果两个数都为1则为1,否则为0。;
(2)位或运算符(|):运算规则:两个数都转为二进制,然后从高位开始比较,两个数只要有一个为1则为1,否则就为0。
(3)位非运算符(~):运算规则:如果位为0,结果是1,如果位为1,结果是0.
(4)位异或运算(^):运算规则是:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。
3.java中有三种移位运算符
(1)<< : 左移运算符,num << 1,相当于num乘以2
(2)>> : 右移运算符,num >> 1,相当于num除以2
(3)>>> : 无符号右移,忽略符号位,空位都以0补齐
4.Unicode 编码 参考JAVA方法 字符串与unicode的相互转换
5.正则表达式 参考String.matches()的用法

String类的声明

String类是final修饰可序列化的一个强不变类 。

	public final class String implements java.io.Serializable, Comparable<String>,CharSequence

String类的属性

String是通过数组的形式进行数据存储的;

	private final char value[];
	private int hash; // Default to 0

String类的构造方法

String类现在提供两种实例化对象的模式;
(1)String可以直接采用赋值的形式进行处理,这一点感觉和基本数据类型的赋值非常像。
(2)既然是类那么就可以通过构造方法进行实例化;
String类提供了16个构造方法其中2个被废弃了1个是包内友好访问的以下列出的是较为常用的5个

1.无参构造方法
用个空串""作为初始值

 	public String() {
        this.value = "".value;
    }
    public String(String original) {
        this.value = original.value;
        this.hash = original.hash;
    }
    public String(char value[]) {
        this.value = Arrays.copyOf(value, value.length);
    }
    public String(StringBuffer buffer) {
        synchronized(buffer) {
            this.value = Arrays.copyOf(buffer.getValue(), buffer.length());
        }
    }
    public String(StringBuilder builder) {
        this.value = Arrays.copyOf(builder.getValue(), builder.length());
    }

String类的常用方法

方法参数应用
length()String中字符的个数
charAt()Int索引String中该索引位置的char
getChars(),getBytes()srcBegin:要复制部分起点的索引 ;srcEnd:要复制部分终点的索引;dst[]:复制的目标数组;dstBegin:目标数组的起始索引复制char或byte到一个目标数组中
toCharArray()生成一个char[]包含String的所有字符
equals(),equalsIgnoreCase()与之进行比较的String比较两String的内容是否相同,后者忽略大小写
compareTo()与之进行比较的String按词典的顺序比较String的内容,比较结果为负数、零、正数,大小写不等价
contains()要搜索的CharSequence如果该String的内容包含要搜索的参数则返回true
contentEquals()与之比较的CharSequenceStringBuffer如果该String与参数的内容完全一致则返回true
regionMatches()String的索引偏移量,另一个String及其索引偏移量,要比较的长度 ,重载方法版本增加了“忽略大小写”的功能返回boolean值,以表示所比较区域是否相等
startsWith()可能的起始String。重载方法版本增加了偏移量返回boolean结果,表明该String是否以此参数起始
endsWith()该String可能的后缀返回boolean结果,表示该String以此参数结尾
indexOf(),lastIndexOf()重载方法版本包括:charchar与起始索引,String,String与起始索引如果String不包括此参数,就返回-1;否则就返回此参数在该String中的起始索引;lastIndexOf() 是从后向前搜索
substring(), subSequence()重载方法版本:起始索引;起始索引+终点坐标返回新的String ,以包含指定参数的子字符串
concat()要连接的String返回一个新的String对象,内容为原始String连接上参数String
replace()要替换掉的字符,用来替换的新的字符;也可以用一个 CharSequence,替换另一个CharSequence返回替换后的新的String,如果没有替换发生,则返回原来的String
toLowerCase(),toUpperCase()将字符的大小写改变后,返回一个新的String,如果没有改变,则返回原来的String对象
trim()String两端的空白字符删除后,返回新的String对象。如果没有发送改变,则返回原来的String对象
valueOf()重载方法版本:Object;char[];char[],偏移量,与字符个数;booleanchar;int;long;float;double返回一个表示参数内容的String
intern()为每一个唯一的字符序列生成一个且仅生成一个String引用
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值