Java--常用类--String类

  1. String类的介绍
    1. 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不能指向其他地址了所以试错错误的
          }
      }
  2. String类的练习题:
  3.  String对象的特性:

    1. 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.常量相加最终指向的时池中的数据,变量相加最终指向的是堆
               * */
      
          }
      }
      1. 字符串传参:传过去的参数和原来的地址一样指向某个字符串,但是当改变这个字符串时,改变的是方法中变量的执行(在常量池中重新创建一个字符串常量,且原来的字符串常量不会改变,所以被传进来的数值不变指向也不会改变,所以不会改变原来的值),唯一变化的的就是方法中局部变量的指向变化了。(字符串常量不可变)
      2. 其他的传参,改变其值得时候也会会改变这个地址的值,所有就算原值中的地址没变,但是这个地中的值发生了变化,所以会改变原来的值
  4. String类的常用方法:

    1.  

       

    2.  

    3. 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);
          }
      } 
posted @ 2021-07-04 16:24  张紫韩  阅读(52)  评论(0编辑  收藏  举报