韩顺平java第十三章常用类_自用

String类

String对象特性

package com.hspedu.string_;
public class String01 {
	public static void main(String[] args) {
		//1.String 对象用于保存字符串,也就是一组字符序列
		//2. "jack" 字符串常量, 双引号括起的字符序列
		//3. 字符串的字符使用 Unicode 字符编码,一个字符(不区分字母还是汉字)占两个字节
		//4. String 类有很多构造器,构造器的重载
		//常用的有 String s1 = new String();
		//String s2 = new String(String original);
		//String s3 = new String(char[] a);
		//String s4 = new String(char[] a,int startIndex,int count)
		//String s5 = new String(byte[] b)
		//5. String 类实现了接口 Serializable【String 可以串行化:可以在网络传输】
		//					接口 Comparable [String 对象可以比较大小]
		//6. String 是 final 类,不能被其他的类继承
		//7. String 有属性 private final char value[]; 用于存放字符串内容
		//8. 一定要注意:value 是一个 final 类型, 不可以修改(需要功力):即 value 不能指向
		// 新的地址,但是单个字符内容是可以变化
		String name = "jack";
		name = "tom";
		final char[] value = {'a','b','c'};
		char[] v2 = {'t','o','m'};
		value[0] = 'H';
		//value = v2; 不可以修改 value 地址
	}
}

在这里插入图片描述

ch 是final类型的数组,ch内存放的是堆中的地址,所以ch不能指向新的地址,但是数组内(堆内)单个字符内容是可以变化。

13.5.2 String VS StringBuffer

在这里插入图片描述

第一种理解:String不能更改value数组内容的原因是它没有提供更改方法,所以要更改只能换对象地址。(虽然理论上value数组里面的内容可以变,只是value指向的地址不能变,但是private final 的value数组所在的String类并没有向外提供一个更改方法。所以要更改只能重新创建一个对象。)
第二种理解:String对象中的value[]所指向的地址是常量池,常量池中存放的内容是不可修改的,所以String的value[]数组里存放的内容是不可修改的。value本身也是final不可修改,不能指向新的地址。所以要更改只能重新创建一个对象。
与上文这段代码对比:

		//8. 一定要注意:value 是一个 final 类型, 不可以修改(需要功力):即 value 不能指向
		// 新的地址,但是单个字符内容是可以变化
		String name = "jack";
		name = "tom";
		final char[] value = {'a','b','c'};
		char[] v2 = {'t','o','m'};
		value[0] = 'H';
		//value = v2; 不可以修改 value 地址

这里的只有value是final的,数组里面的内容是变量而不是常量。(参考上文图)

日期类

13.12 本章作业

    public static String reverse(String str, int start, int end) {
        //对输入的参数做一个验证
        //老韩重要的编程技巧分享!!!
        //(1) 写出正确的情况
        //(2) 然后取反即可
        //(3) 这样写,你的思路就不乱
        if(!(str != null && start >= 0 && end > start && end < str.length())) {
            throw new RuntimeException("参数不正确");
        }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值