欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java学习第八天-----字符串

程序员文章站 2022-04-15 19:04:25
Java学习第八天-----字符串java.lang.string 代表字符串API当众说,java编译中所有的字符串自面子(如‘abc’)都作为此类的实现其实就是说,程序当中所有的双引号都是字符串,都是String类的对象。就算没有new也照样是字符串的特点:1.字符串的内容不可改变[重点]2.正是因为字符串的内容不可改变,所以字符串可以共享使用3.字符串效果上相当与是char【】字符串,但是底层原理是byte【】数组。创建字符串常见的四中方法:三种构造方法,一种直接创建public...

Java学习第八天-----字符串

java.lang.string 代表字符串
API当众说,java编译中所有的字符串自面子(如‘abc’)都作为此类的实现
其实就是说,程序当中所有的双引号都是字符串,都是String类的对象。就算没有new也照样是

字符串的特点:
1.字符串的内容不可改变[重点]
2.正是因为字符串的内容不可改变,所以字符串可以共享使用
3.字符串效果上相当与是char【】字符串,但是底层原理是byte【】数组。

创建字符串常见的四中方法:
三种构造方法,一种直接创建
public String ();创建一个空白字符串,不含有任何内容
public String(char[] arrya);根据字符数组来创建对应的字符串
public String(byet[] array);根据字节数组的内容来创建字符串

直接创建:

String Str = ”hello"
注意直接创建也是对象

示例代码:

public class Demo01String {

    public static void main(String[] args) {
        //使用空参构造
        String str1 = new String();//小括号留空说明什么都没有
        System.out.println(str1);

        //根据字符数据创建字符串
        char[] charArray = {'a','b','c','d'};
        String str2 = new String(charArray);
        System.out.println(str2);

        //根据字节数组来创建字符串
        byte[] byteArray = {97,98,99};
        String str3 = new String(byteArray);
        System.out.println(str3);

        // 直接创建
        String str4 = "hello";
        System.out.println(str4);
    }
}

字符串常量池

字符串常量值,程序当中直接写上双引号的字符串,都在字符串常量池中
字符串直接写的在常量值中,new的不在

public class Demo02StringPool {

    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "abc";//abc已经存储在常量池中,直接从常量池中获取,

        char[] charArray = {'a','b','c'};
        String str3 = new String(charArray);//new出来的字符串存在堆当中

        System.out.println(str1 == str2);//true
        System.out.println(str1 == str3);//false
        System.out.println(str2.equals(str3));//之比较内人True
        int a = 0;
        int b = 0;
        System.out.println(a == b);
    }
}

== 和equals的区别

== 是进行对象的地址值比较,如果确实要字符串的内容比较可以使用两个方法
public boolean equals(OBject obj ),参数可以使任意对象
备注:任何对象都可以用object进行接收
注意事项:
1.任何对象都可以用object进行接收
2.equals对象具有对称性,就是a.equals(b),b.equals(a)一样
3.如果字符串常量和变量比较,不推荐时用str.equals(‘hello),而是’hello’.eequals(str),因为变量如果为null会出现空指针异常

*/
public class Demo01StringEquals {

    public static void main(String[] args) {
        String str1 = "hello";
        String str2 = "hello";
        char[] charArrays = {'h','e','l','l','o'};
        String str3 = new String(charArrays);

        System.out.println(str1.equals(str2));//true
        System.out.println(str2.equals(str3));//true
        System.out.println(str3.equals("hello"));//true
        System.out.println("hello".equals(str2));//true

        String str4 = "Hello";
        System.out.println(str1.equals(str4));//false

        String stra = "Java";
        String strb = "java";
        System.out.println(stra.equals(strb));//区分大小写
        System.out.println(stra.equalsIgnoreCase(strb));//不区分大小写



    }
}

字符串相关方法

获取字符串

string 当中与获取相关的常用方法
public Int length()获取字符串的长度,并返回
public String concat(String)当前字符串和参数字符串拼接成一个新的字符串返回
public char charAt(int index)获取指定索引位置的字符
public int indexOf(String str)查找参数字符串在字符串首次数出的位置,没有返回-1

截取字符串

字符串的截取方式
public string substring(int index)截取从参数开始之一直到字符串末尾,返回新字符串
public string substring(int begin,int end)截取从begin到end的位置,左闭右开【begin,end)

转换字符串

String 当中与转换相关的方法有:

public char【】 toCharArray()将当前字符串拆分为字符数组作为返回值
public byte【】 gatBytes()获得当前字符串底层的字节数组
public String replace(charSequence oldString,CharSequence newString)
将老的字符串替换为新的字符串,并返回替换之后的新的字符串

分割字符串

字符串的分隔方法
public String【】 split(String regex) ,按照参数的规则,将字符串分分割成若*分

注意事项:
split的方法的参数其实是一个正则表达式,
//英文句点进行分割会什么都分割不出来,会出错 ,需要写成\.

public class Demo05StringSplit {


    public static void main(String[] args) {
        String str1 = "aaa,bbb,ccc";
        String[] array1 = str1.split(",");//将str1按逗号分割
        for (int i = 0; i <array1.length ; i++) {
            System.out.println(array1[i]);

        }
        //英文句点进行分割会什么都分割不出来,会出错 ,需要写成\\.
        String str2 = "aaa.bbb.ccc";
       // String[] array2= str1.split(".");//将str1按逗号分割
        String[] array2= str1.split("\\.");//将str1按逗号分割
        for (int i = 0; i <array2.length ; i++) {
            System.out.println(array2[i]);

        }
    }

练习:

package demo02;

import java.util.Scanner;

/*
题目
键盘输入一个字符串,并且统计各种字符的出现次数
字符种类:大写字母,小写字母,数字,其他

思路:
1.既然用到键盘输入,用到Scanner
2.键盘输入字符串  String str = sc.next();
3.定义四个变量,分别代表四中字符出现次数。
4.需要最字符一个一个逐一检查,string--》char[],方法是toCharArray()
5.遍历char【】,对当前字符种类进行判断。并且进行计数
5.打印输出
 */
public class Demo07StringCount {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String input = sc.next();

        int countUpper = 0;
        int countLower = 0;
        int countNumber = 0;
        int countOther = 0;
        char[] charArray = input.toCharArray();
        for (int i = 0; i <charArray.length ; i++) {
            char ch = charArray[i];
            if ('A' <= ch && ch <= 'Z'){
                countUpper++;
            }else if('a' <= ch && ch <= 'z' ){
                countLower++;
            }else if ('0' <= ch && ch <='9'){
                countNumber++;

            }else {
                countOther++;
            }

        }
        System.out.println("大写字母的个数"+countUpper);
        System.out.println("小写字母的个数"+ countLower);
        System.out.println("数字的个数"+countNumber);
        System.out.println("其他字符的个数"+countOther);
    }
}
请输入一个字符串
lkju1233549876)(^^
大写字母的个数0
小写字母的个数4
数字的个数10
其他字符的个数4

Process finished with exit code 0

本文地址:https://blog.csdn.net/weixin_43853447/article/details/107891728

相关标签: Java