zoukankan      html  css  js  c++  java
  • 7.String

    API

    API概述

    API(Application Programming Interface): 应用程序编程接口

    java API: JDK中提供的各种功能的java类, 封装了底层的实现, 无需关心如何实现, 只需要学习如何使用.

    java帮助文档的使用.

    • 查看构造方法
    • 查看成员方法
    package string;
    
    import java.util.Scanner;
    
    public class ScannerDemo {
    
        public static void main(String[] args) {
            Scanner s = new Scanner(System.in);
            System.out.println("请输入一句话:");
            String line = s.nextLine();
            System.out.println("输入的话是:" + line);
        }
    }
    
    

    String

    概述

    String在java.lang中,所以使用的时候不需要导包

    String代表字符串,java中所有双引号字符串,都是string类的对象

    特点:

    • 字符串不可变,创建后不能被更改
    • 虽然String的值是不可变的, 但是他们可以被共享
    • 字符串效果上相当于字符串组(char[]), 但是底层原理是字节数组(byte[])

    String构造方法

    方法名 说明
    public String() 创建一个空白字符串对象, 不含有任何内容
    public String(char[] chs) 根据字符数组的内容,来创建字符串对象
    public String(byte[] bys) 根据字节数组的内容, 来创建字符串对象
    String s = "abc"; 直接赋值的方式创建字符串对象, 内容就是abc

    示例

    package string;
    
    /*
        构造方法:
            1.public String() 创建一个空白字符
            2.public String(char[] chs): 根据字符数组内容,创建字符串对象
            3.public String(byte[] bys): 根据字节数组创建字符串对象
            4.String s = "abc";直接赋值的方式创建字符串对象, 内容就是abc
            
        推荐:
        	直接使用赋值的方式获得字符串
     */
    
    public class StringDemo {
    
        public static void main(String[] args) {
            // public String() 创建一个空白字符
            String s1 = new String();
            System.out.println("s1:" + s1);
    
            // public String(char[] chs): 根据字符数组内容,创建字符串对象
            char[] chs = {'a', 'b', 'c'};  // 字符用单引号, 字符串用双引号
            String s2 = new String(chs);
            System.out.println("s2:" + s2);
    
            // public String(byte[] bys): 根据字节数组创建字符串对象
            byte[] bys = {97, 98, 99};
            String s3 = new String(bys);
            System.out.println("s3:" + s3);
    
            // String s = "abc";直接赋值的方式创建字符串对象, 内容就是abc
            String s4 = "abc";
            System.out.println("s4:" + s4);
    
    
        }
    }
    
    

    String对象特点

    1. 通过new创建的字符串对象,每一次new都会申请一个内容空间, 虽然内容相同, 但是地址值不同
    char[] chs = {'a', 'b', 'c'};  // 字符用单引号, 字符串用双引号
    String s1 = new String(chs);
    String s2 = new String(chs);
    

    每一次new都会有一个新的地址, 只不过s1和s2参考的字符串内容是相同的.

    1. ""方式给出的字符串, 只要字符串序列相同(顺序和大小), 无论在程序代码中出现几次, jvm都只会建立一个string对象
    String s3 = "abc";
    String s4 = "abc";
    

    第一行, JVM会创建一个String对象放在字符串池中, 第二行, s4直接参考字符串池中的String对象, 本质上是同一个对象.

    image-20200928144047603

    String的比较

    使用 == 作比较

    • 基本类型: 比较的是数据值是否相同
    • 引用类型: 比较的是地址值是否相同

    字符串是对象, 他比较内容是否相同, 是通过一个方法来实现的, 这个方法叫: equals()

    • public boolean equal(Object anObject): 将此字符串与指定对象进行比较, 由于我们比较的是字符串对象, 所以参数直接传递一个字符串.
    package string;
    
    public class StringEquals {
        public static void main(String[] args) {
            // 构造方式获得字符串
            char[] chs = {'a', 'b', 'c'};
            String s1 = new String(chs);
            String s2 = new String(chs);
    
            // 直接赋值获得字符串
            String s3 = "abc";
            String s4 = "abc";
            
            // 比较字符串对象地址是否相同
            System.out.println(s1 == s2);
            System.out.println(s1 == s3);
            System.out.println(s3 == s4);
            System.out.println("----------");
    
            System.out.println(s1.equals(s2));
            System.out.println(s1.equals(s3));
            System.out.println(s3.equals(s4));
        }
    }
    
    /*
    false
    false
    true
    ----------
    true
    true
    true
    */
    

    案例

    遍历字符串

    输入一段字符串,使用程序在控制台遍历该字符串

    思路:

    1. 录入一段字符串, 使用Scanner

    2. 遍历字符串, 首先要能获取到字符串中的每一个字符

      1. public char charAt(int index): 返回指定索引出的char值
    3. 遍历字符串, 其次要能够获取到字符串的长度

      1. public int length(): 返回字符串的长度
    4. 遍历字符串格式

    for (int i=0; i<s.length; i++) {
    	s.charAt(i); // 就是指定索引处的字符值
    }
    

    示例

    package string;
    
    import java.util.Scanner;
    
    public class StringTravel {
    
        public static void main(String[] args) {
            // 录入一个字符串
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个字符串:");
            String line = sc.nextLine();
            // 遍历字符串
            for(int i=0; i< line.length(); i++) {
                System.out.println(line.charAt(i));
            }
        }
    }
    
    

    统计字符类型

    package string;
    import java.util.Scanner;
    public class StringCount {
        public static void main(String[] args) {
            // 输入一个段字符串
            Scanner sc = new Scanner(System.in);
    
            System.out.println("请输入一段字符:");
            String line = sc.nextLine();
    
    
            // 初始化三个统计值
            int capitalCount = 0;
            int lowerCount = 0;
            int numberCount = 0;
    
    
            // 遍历字符串,
            for(int i=0; i<line.length(); i++) {
                char ch = line.charAt(i);
    
                // 判断该字符属于哪一种类型,然后对应类型数值+1;
                if (ch > 'A' && ch<='Z') {
                    capitalCount++;
                } else if(ch >= 'a' && ch <='z') {
                    lowerCount++;
                } else if(ch >='0' && ch <= '9') {
                    numberCount++;
                }
            }
            
            // 输出三种类型的统计值
            System.out.println("大写字母: " + capitalCount + "个");
            System.out.println("小写字母: " + lowerCount + "个");
            System.out.println("数字: " + numberCount + "个");
        }
    }
    

    StringBuilder

    Stringbuilder概述

    StringBuilder是一个可变的字符串类, 可以看做一个容器.可变是指StringBuilder对象中的内容是可变的.

    和String的区别:

    • String内容是不可变的
    • StringBuilder内容是可变的

    StringBuilder构造方法

    方法名 说明
    public StringBuilder() 创建一个空白的可变字符串, 不含任何内容
    Public StringBuilder(String str) 根据字符串的内容, 来创建可变字符串对象

    示例

    package string;
    
    /*
        StringBuilder构造方法:
            1.public StringBuilder(): 创建一个空白的可变字符串, 不含任何内容
            2.Public StringBuilder(String str): 根据字符串的内容, 来创建可变字符串对象
     */
    
    public class StringBuilderDemo {
        public static void main(String[] args) {
            // public StringBuilder(): 创建一个空白的可变字符串, 不含任何内容
            StringBuilder sb = new StringBuilder();
            System.out.println("sb:" + sb);
            System.out.println("sb长度:" + sb.length());
    
            // Public StringBuilder(String str): 根据字符串的内容, 来创建可变字符串对象
            StringBuilder sb2 = new StringBuilder("abc");
            System.out.println("sb2:" + sb2);
            System.out.println("sb长度:" + sb2.length());
        }
    }
    
    

    StringBuilder添加和反转方法

    方法名 说明
    Public StringBuilder append(任意类型) 添加数据, 并返回对象本身
    public StringBuilder reverse() 返回相反的字符序列

    示例

    package string;
    
    public class StringBuilderAppend {
        public static void main(String[] args) {
            // 创建对象
            StringBuilder sb = new StringBuilder();
    
            // Public StringBuilder append(任意类型): 添加数据, 并返回对象本身
            // StringBuilder sb2 = sb.append("hello");
            // System.out.println("sb: " + sb);
            // System.out.println("sb2: " + sb2);
    
            sb.append("hello");
            sb.append("world");
            sb.append("java");
    
            System.out.println("sb: " + sb);
    
            // 链式编程
            sb.append("hello").append("world").append("java").append(100);
            System.out.println("sb: " + sb);
    
            //public StringBuilder reverse(): 返回相反的字符序列
            sb.reverse();
            System.out.println("sb: " + sb);
        }
    }
    
    

    String和StringBuilder相互转换

    StringBuilder转String:

    • public String toString(): 通过toString()方法将StringBuilder转换为String

    String转StringBuilder:

    • Public StringBuilder(String s): 通过构造方法可以实现String转换为StringBuilder
    package string;
    
    public class StringBuilderInterTransform {
        public static void main(String[] args) {
            // StringBuilder转String
            StringBuilder sb = new StringBuilder();
            sb.append("abc");
    
            // String s = sb  // 错误的转换
            // 通过toString()方法将StringBuilder转换为String
            String s = sb.toString();
            System.out.println("s: " + s);
    
            // String转StringBuilder
            String s1 = "hello";
            // 通过构造方法可以实现String转换为StringBuilder
            StringBuilder sb1 = new StringBuilder(s1);
    
            System.out.println("sb1: " + sb1);
    
        }
    }
    
    
  • 相关阅读:
    centos6.4下django1.11.3项目的部署
    inner join和left join 、right join 的区别?
    php中的对象赋值
    windows下Call to undefined function curl_init() error问题
    include和require的区别误区
    第一车网笔试题
    借贷宝笔试题
    40斤西瓜3人分,求分法
    走楼梯算法
    ip地址分类
  • 原文地址:https://www.cnblogs.com/ryxiong-blog/p/13890176.html
Copyright © 2011-2022 走看看