String类 ,Arrays数组工具类,Math类

String类

创建String字符串的常见的3+1种方式

三种构造方法:
  1.  public  String()   初始化一个新创建的 String 对象,使其表示一个空字符序列
    
  2.  public String(char[] array)  : 根据字符数组的内容,来创建对应的字符串.
    
  3.  public String(byte[] array)  :根据字节数组内容,来创建对应的字符串.
    
一种直接创建:
  1.   public String = "ABC";
    

//演示代码

`

  public class StringDemo01 {
      public static void main(String[] args) {
          //3+1种创建字符串对象的方式
          //1.使用空参构造方法来创建字符串对象
          String str1 = new String();
          System.out.println("第一个字符串:"+str1);


          //2.使用字符数组创建字符串对象
          char[] ch={'A','B','C'};
          String str2 = new String(ch);
          System.out.println("第二个字符串:"+str2);


          //3.使用字节数组创建字符串对象
          byte[] byteArray={65,66,67};
          String str3 = new String(byteArray);
          System.out.println("第三个字符串:"+str3);


          //直接创建字符串对象
          String str4 = "ABC";
          System.out.println("第四个字符串:"+str4);

      }
  }

`

常用方法

判断功能的方法
  1.   public boolean equals(Object anObject) :将此字符串与指定的字符串进行比较
    

`

  public class StringDemo02 {
      public static void main(String[] args) {
          String str1 = "hello";
          String str2 = "hello";
          char[] ch = {'h','e','l','l','o'};
         String str3 = new String(ch);
          System.out.println(str1 == str2);//true
          System.out.println(str2 == str3);//false
          System.out.println("---------------");
          System.out.println(str1.equals(str2));//true
          System.out.println(str1.equals(str3));//true
          System.out.println(str2.equals(str3));//true
          String  str4 = null;
          System.out.println(str1.equals(str4));//false,不会出现空指针
          System.out.println(str4.equals(str1));//会出现空指针
      }
  }

`
2. equalsIgnoreCase(String anotherString) : 将此 String 与另一个 String 比较,不考虑大小写。

  1.   "==" 地址判断,对于引用数据类型来说,  == 比较的是内存地址,对于基本数据类型来说,比较的是两个变量                     的数值, 但是在字符串直接赋值的时候,用 == 比较的是两个字符串的内容是否相等   
    
获取功能

. public int length() : 返回字符串的长度
. public String concat(String str) : 将指定字符串连接到此字符串的结尾。
. public char charAt(int index) : 返回指定索引处的 char 值。
. public int indexOf(String str) : 返回指定子字符串在此字符串中第一次 出现处的索引值。
. public String substring(int beginIndex) : 返回一个新的字符串,从beginIndex索引位置开始,它是此字符串的一个子字符串.
. String substring(int beginIndex, int endIndex) : 返回一个新字符串,它是此字符串的一个子字符串,但是不包含endIndex位置上的字符。

        public class StringDemo03 {
            public static void main(String[] args) {
          //初始化一个字符串对象
          String str = "ahsjsdhfdjhnsn324345";
          //获取str字符串的长度
          int length = str.length();
          System.out.println("该字符串的长度为:"+ length);
          System.out.println("---------------------");
          //拼接字符串
          String str2 ="Hello";
          String str3 = "world";
          String concat = str2.concat(str3);
          System.out.println("拼接结果为:"+concat);
          System.out.println("----------------");
          //获取指定索引处的单个字符
          char c = "Hello".charAt(2);
          System.out.println("索引值为2的字符值:"+c);
          System.out.println("===================");
          //查找字符串中指定子字符串在字符串中的
          int i = str.indexOf("2");
          System.out.println("数字2在str字符串中第一次出现的索引值:"+i);
          System.out.println("-------------------------");
          //字符串截取
          String str4 = "Helloworld";
          int index = str4.indexOf("w");
          String substring = str4.substring(index);
          System.out.println("从w后的字符串为:"+substring);
          //获取索引值[4,7]
          //抛出:
          //IndexOutOfBoundsException - 如果 beginIndex 为负,
          // 或 endIndex 大于此 String 对象的长度,或 beginIndex 大于 endIndex。
          String substring1 = str4.substring(4, 8);
          System.out.println("");
      }
  }
转换功能
  •   public char[] toCharArray() : 将此字符串转换成字符数组
      public byte[] getBytes() : 使用平台默认的字符集将该字符串编码转换成新的字节数组
      public String replace(CharSequence oldString,CharSequence newString) :将所有指定的出现的老的字符串,替换成新的字符串,返回值是一个新的字符串.CharSequence 表示的是接受的字符串类型
          备注:CharSequence 是一个接口,也是一种引用数据类型,意思是可以接受字符串参数类型数据
    

练习1:定义一个方法,把数组{1,2,3,4}按照指定的格式拼接成一个字符串,格式参照:[1#2#3#4]。

​ 拼接操作:concat(String str)

  •   public class Demo1 {
        public static void main(String[] args) {
            // 初始化一个数组
            int[] arr = {1,2,3,4};
            // 调用方法,把int[]转换成字符串
            String str = arrayToString(arr);
            // 展示字符串内容
            System.out.println("str:" + str);
        }
        /**
            定义方法的三要素:
      		返回值类型: String
      		方法名:    arrayToString
      		参数列表:   int[] arr
          */
       public static String arrayToString(int[] arr) {
            // 创建字符串对象
            String str = new String("[");
            // 遍历arr数组
            for (int i = 0; i<arr.length ; i++) {
                // 判断最后一项
                if (i == arr.length-1) {
                    str = str.concat(arr[i] + "]");
                } else {
                    str = str.concat(arr[i] + "#");
                }       
            }
            return str;
        }
    }
    

练习2:统计字符的格式

​ 键盘录入一个字符串,统计字符串中大小写字母字符以及数字字符的个数 charAt(int index)

  •   import java.util.Scanner;
    public class Demo2 {  
        public static void main(String[] args) {
            // 键盘录入一个字符串  Scanner
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个字符串:");
            String str = sc.next();
            // 关闭Scanner流
            sc.close(); 
      // 自定义三个统计变量
      int upperLetter = 0;
      int lowerLetter = 0;
      int number = 0;
      
      // 遍历字符串 得到每一个字符
      for (int i = 0; i <str.length() ; i++) {
          char c = str.charAt(i);
          // 判断大小写字母字符和数字字符
          if (c >= 'A' && c <= 'Z') {
              upperLetter++;
          } else if (c >= 'a' && c <= 'z') {
              lowerLetter++;
          } else if (c >= '0' && c <= '9') {
              number++;
          } 
      }   
      // 输出大小写字母字符和数字字符个数
      System.out.println("大写字母字符个数:" + upperLetter);
      System.out.println("小写字母字符个数:" + lowerLetter);
      System.out.println("数字字符个数:" + number);
        }
    }
    

static内存原理分析

static关键字

概述

static 关键字的使用,他可以修饰成员方法和成员变量,被修饰的成员方法和成员变量是属于类的,不再单单属于某个对象,既然是属于类的,那就不需要通过创建对象来调用类中的成员信息

定义和使用格式

类变量
党成员变量被static修饰后,该变量就称为类变量.该类的每个对象都共享同一个类变量值,任何对象都可以更改类变量的值.类变量也可以不通过创建类对象的方式进行操作,通过类也可以操作

定义格式

  •   static 数据类型 变量名;
    

例如:static int roomID;

静态方法
当成员方法一旦被static关键字修饰时,该方法称为类方法.类方法一般是通过类名直接调用,而不需要单独创建对象来调用.习惯性称为静态方法.

定义格式:

  •   修饰符 static 返回值类型 方法名(参数列表){
     //方法内容
     }
    

例如:

  public static String arrayToString(String[] arr){
        //方法体内容如何转换
        //....

  }
静态方法调用的注意事项
  •   静态方法可以直接访问类变量和静态方法
    
  •   静态方法[不能直接访问]成员变量和成员方法,反之,成员方法可以[直接访问]类变量和静态方法
    
  •   静态方法中不能使用this关键字
    

调用格式
静态方法建议通过类名调用,但是也可以通过对象名调用,会出现警告信息,不建议使用对象信息来调用

格式:

  •   //访问类变量
     类名.变量名;
      //访问静态方法
     类名.方法名;
    
Static修饰的内容
  •   是随着类的加载而加载,而且只会加载一次
      存储于一块固定的内存区域(方法区的静态域),所以,可以被类直接调用
      他优先于对象存在,所以可以被类的所有对象所共享
    

静态代码块

静态代码块:被static修饰的,定义在成员位置的代码块

  •   位置:类中,方法外
    
  •   执行:随着类的加载而加载,只会执行一次,优先于main方法和构造方法执行
    

格式:

  •   public class ClassName{
          //静态代码块,存在于成员位置
          static{  
          //执行语句,多条执行语句
          //...
          }
          }
    


备注:static可以修饰成员变量,成员方法,代码块.在使用过程中,如果你不想在不创建对象的情况下,去调用成员变量和成员方法,可以定义成静态的,对于静态代码块来说,通常作用是对静态变量初始化

posted @ 2020-11-19 18:22  任苗苗  阅读(138)  评论(0)    收藏  举报