package com.model.string; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/3 23:50 * 演示常用类String的使用 */ public class StringDemo01 { public static void main(String[] args) { /** * 1.String用于保存字符串 *2. “jack” 是一个字符串常量 * 3.字符串使用的时Unicode编码方式,一个字符(不区分汉字和子母)占两个字节 * 4.有多个构造器: * /常用的有 * String s1 = new String(); * String s2 = new String(String original); * String s3 = new String(char[l a); * Strings4 = new String(char[] a,int startIndex ,int,count) * String s5 = new String(byte[] b) * * 5.继承了Serializable接口可以序列化,继承了Comparable接口可以进行比较 * 6.String是一个final类,不能被继承 * 7.String 的底层时字符数组,且时final类型的,一旦进行了赋值不能进行修改(地址不能进行修改了): * 指向了a就不能修改为指向B了 * 8. 底层保存数据的字符数组 private final char value[];(在常量池中的常量一旦被创建出来就不会别修改) * value不能进行修改即:value的地址不能在指向其他的地址,但是单个字符的内容可以进行修改 * */ // String final char[] chars={'a','b','c'}; //char指向了{'a','b','c'}地址 chars[0]='B';//final类型的char数组:可以改变里面的内容 char[] chars1={'b','b','b'};//chars1指向了{'b','b','b'};地址 //chars=chars1;//chars不能指向其他地址了所以试错错误的 } }
String对象的特性:
package com.model.string; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/4 14:16 * 演示String的使用 */ public class StringDemo02 { public static void main(String[] args) { String a="hello"; String b="abc"; String c="hello"+"abc"; //编译器会做一个优化--》c="helloabc"; String d=a+b; //d时new String()出来的, /** * 1.在底层先创建一个StringBuilder对象sb * 2.执行sb.append("hello"); * 3.执行sb.append("abc"); * 4.执行将sb转成字符串返回,sb.toString();--->底层还是一个new String("helloabc"); * public String toString() { //toString方法的底层时一个new String的过程 * // Create a copy, don't share the array * return new String(value, 0, count); * } * 5.常量相加最终指向的时池中的数据,变量相加最终指向的是堆 * */ } }
String类的常用方法:
package com.model.string; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/4 15:50 * String类的常用方法 */ public class StringDemo04 { public static void main(String[] args) { String str="hello,张紫韩"; System.out.println(str.substring(5));//从下标为5开始截取后面的字符串 System.out.println(str.substring(0, 5));//从0 开始截取到 5-1:(0-4) System.out.println(str.substring(2, 4));//从 2开始截取到 4-1:(2-3) System.out.println(str.toCharArray()[0]); String str1="abc"; String str2="abd"; int i = str1.compareTo(str2); System.out.println(i); /* //1.%s , %d, %.2f %c称为占位符 //2.这些占位符由后面变量来替换 //3.%s表示后面由字符串来替换 //4.%d是整数来替换 //5,%.2f 表示使用小数来替换,替换后,只会保留小数点两位 //6.%c使用char类型来替换 * */ String name="张紫韩"; int age=18; double score=100.00; char gender='男'; String formatStr="我的名字叫%s,年龄是%d,成绩是%.2f,性别%c,希望大家喜欢我"; String format = String.format(formatStr, name, age, score, gender); System.out.println(format); } }