zoukankan      html  css  js  c++  java
  • Java中String相关知识

    String

    1.String概述

    String代表字符串,Java程序中所有的字符串文字(例如‘abc“)都被实现为此类的实例,也就是说,Java中所有的双引号字符串都是String类的对象。

    字符串特点:

    字符串不可变,他们的值在创建后不能被更改。

    虽然String的值是不可改变的,但是他们可以被共享。

    字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[])

    JDK8以前是字符数组,JDK9及以后是字节数组

    2.String类的构造方法

    public String() 创建一个空白字符串对象,不含有任何内容
    public String(char[] chs) 根据字符数组的内容,来创建字符串对象
    public String(byte[] bys) 根据字节数组的内容,来创建字符串对象
    String s = "abc" 直接赋值的方式创建字符串对象,内容就是abc
    package com.itheima_02;
    
    public class StringDemo01 {
        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','d'};
            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);
        }
    }
    

    推荐使用直接赋值的方式

    3.String对象的特点

    • 通过new创建的字符串对象,每一次创建都会申请一个内存空间,虽然两字符串内容相同,但是地址值是不相同的。
    • 以“ ”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在代码中出现几次,JVM都只会创建一个String对象,并在字符串池中维护。

    4.字符串的比较

    使用==作比较的情况:

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

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

    public boolean equals(Object object):将字符串与指定对象进行比较。由于我们比较的是字符串对象,所以 参数直接传递一个字符串。

    public class StringDemo02 {
        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);//false
            System.out.println(s2 == s3);//false
            System.out.println(s3 == s4);//true
    
            //比较字符串内容是否相同
            System.out.println(s1.equals(s2));//true
            System.out.println(s2.equals(s3));//true
            System.out.println(s3.equals(s4));//true
        }
    }
    

    5.案例

    5.1遍历字符串

    //需求:键盘输入一个字符串,使用程序实现在控制台遍历该字符串
    public class StringDemo04 {
        public static void main(String[] args) {
            //思路;
            //1、键盘录入一个字符串,使用Scanner来实现
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个字符串:");
            String line = sc.nextLine();
    
            //2、遍历字符串,首先要能够获取到字符串中的每一个字符
            System.out.println(line.charAt(0));
            //public char charAt(int dex):返回指定索引处的char值,字符串的索引也是从0开始的
            //3、遍历字符串,其次要获取到字符串的长度,可以使用字符串对象.length()的方式获取
            for (int i = 0;i < line.length();i++){
                System.out.print(line.charAt(i));
            }
    
    
        }
    

    5.2统计字符次数

    import java.util.Scanner;
    
    //需求:键盘输入一个字符串,统计字符串中的大写字母,小写字母,数字字符出现的次数(不考虑其他字符)
    public class StringDemo05 {
        public static void main(String[] args) {
            //键盘输入一个字符串,用Scanner来实现
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入一个字符串:");
            String line = sc.nextLine();
            //定义三种类型字符的计数变量,初始值为0
            int BigCount = 0;
            int SmallCount = 0;
            int NumCount = 0;
            //遍历字符串,进行判断
            for(int i = 0;i < line.length() - 1;i++){
                if (line.charAt(i) >= 'A'&& line.charAt(i) <='Z'){
                    BigCount += 1;
                }else if (line.charAt(i) >= 'a'&& line.charAt(i) <='z'){
                    SmallCount += 1;
                }else if (line.charAt(i) >= '0'&& line.charAt(i) <= '9'){
                    NumCount += 1;
                }else{
                    continue;
                }
            }
            System.out.println("大写字母的个数:"+ BigCount);
            System.out.println("小写字母的个数:"+ SmallCount);
            System.out.println("数字字符的个数:"+ NumCount);
    
        }
    }
    

    5.3字符串反转

    import java.util.Scanner;
    
    public class StringDemo06 {
        public static void main(String[] args) {
            //需求:字符串反转
            //思路:定义一个方法:实现字符串反转。返回值类型为String,参数String s
            //在方法中把字符串到这遍历,然后把每一个得到的字符串拼接成一个字符串并返回
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入一个字符串:");
            String line = sc.nextLine();
    
            String line_Reverse = Reverse(line);
            System.out.println(line_Reverse);
        }
    
        public static String Reverse(String s){
            String str = "";
            //倒着遍历
            for (int x = s.length()-1;x >= 0; x--){
                str += s.charAt(x);
            }
            return str;
        }
    }
    
  • 相关阅读:
    Mac php使用gd库出错 Call to undefined function imagettftext()
    centos 使用 locate
    Mac HomeBrew 安装 mysql
    zsh 命令提示符 PROMPT
    新的开始
    Java 面试题分析
    Java NIO Show All Files
    正确使用 Volatile 变量
    面试题整理 2017
    有10阶梯, 每次走1,2 or 3 阶,有多少种方式???
  • 原文地址:https://www.cnblogs.com/icyhblog/p/14087414.html
Copyright © 2011-2022 走看看