基于API的String之学习记录

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、字符串的概述构造方法与直接创建

Java.long.String代表字符串。
API当中说:java程序当中的所有字符串字面值(如“abcd”)都作为此类的实例实现。
其实就是说:程序当中所有双引号字符串,都是String类的对象。(就算没有new,也照样是。)

String字符串的特点

1.其中双引号中的内容永不可变。
2.正是因为字符串不可改变,所以字符串可以共享使用。节省内存。
3.字符串效果上可以相当于char【】字符数组,但是底层原理是byte【】字节数组。

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

三种构造方法:

1.public String();//小括号留空叫创建一个空白字符串,不含有任何内容。2.public String(char[] array);//根据字符数组的内容来创建对应的字符串。3.public String(byte[] array);//根据字节数组的内容来创建对应的字符串。

一种直接创建:

String str=“内容”。
**注意:不管new不new直接写上双引号就是字符串对象。**系统默认已经new了。

方法构造创建实践

package cn.demo03;

public class string01 {
    public static void main(String[] args) {
        String str1=new String();//小括号留空,说明字符串什么内容都没有。
        System.out.println("第一个字符串:"+str1);
        char[] chararray={'a','s','d','f'};
        String str2=new String(chararray);
        System.out.println("第二个字符串:"+str2);
        byte[] bytearray={97,98,99};//ascii码值对应的字符
        String str3=new String(bytearray);
        System.out.println("第三个字符串:"+str3);
        String str="淅淅同学要努力";
        System.out.println("第四个字符串:"+str);
    }
}

实践结果

在这里插入图片描述

二、字符串常量池

常量池概述

程序当中直接写上的双引号字符串就在字符串常量池中。
对于基本类型来说,“”是进行数字的比较;
对于引用类型来说,“
”是进行地址值的比较。
字符串常量池在堆当中的一个区域,字符串对象写入代表的是地址值。当写入字符串内容一样时存储位置相同,地址值也相同,都在常量池当中。
而new的不在常量池当中,所代表的是各自的地址值。

常量池实践

package cn.demo03;

public class string02 {
    public static void main(String[] args) {
        String str1="abc";
        String str2="abc";
        char[] chararray= {'a','b','c'};
        String str3=new String(chararray);
        char[] chararray1= {'a','b','c'};
        String str4=new String(chararray1);
        System.out.println(str1==str2);//true说明12地址值一样
        System.out.println(str1==str3);//false
        System.out.println(str2==str3);//false
        System.out.println(str4==str3);//false
    }
}

实践结果

在这里插入图片描述

三、字符串的比较相关方法

比较方法概述

==是进行字符串的地址比较,如果确实是需要字符串的内容比较可以使用两个方法;
1.public boolean equals(Object obj);参数可以是任何对象。
2.a.equalsIgnoreCase(b);忽略a和b大小写差别进行比较。
**备注:**任何对象都能用Object进行接收。

注意事项

1.任何对象都能用Object进行接收;
2.equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样;
3.如果比较双方一个常量一个变量,推荐把常量字符串写在前面。
推荐:“abc”.equals(str);
**不推荐:**str.equals(“abc”);
因为如果str=null时也就是不予以赋值,此时推荐方式输出false值,而不推荐方式会报错,出现空指针异常。

比较实践

package cn.demo03;

public class string03 {
    public static void main(String[] args) {
        String str1="hello";
        String str2="hello";
        char[] chararray={'h','e','l','l','o'};
        String str3=new String(chararray);
        System.out.println(str1.equals(str2));//根据12内容进行比较
        System.out.println(str1.equals(str3));
        System.out.println(str2.equals(str3));
        System.out.println(str2.equals("hello"));
        System.out.println("hello".equals(str3));
    }
}

实践结果

在这里插入图片描述

四、字符串获取方法

方法概述

String当中与获取相关的常用方法有:
1.public int length();获取字符串当中含有字符个数,得到字符串长度。2.public String concat(String str);将当前字符串和参数字符串拼接成为返回值新的字符串与用+等价。
3.public charAt(int index);获取指定索引位置的单个字符(索引从0开始)。4.public indexof(String str);查找参数字符串在本字符串当中的首次出现的索引位置,如果没有就返回-1值。

方法实践

package cn.demo03;

public class string04 {
    public static void main(String[] args) {
        int length = "aqhfioewoqcdwaqv".length();
        System.out.println("字符串的长度是:"+length);
        String str1="hello";
        String str2="   world";
        String str3=str1.concat(str2);
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);
        char ch="hello".charAt(1);
        System.out.println("在1号索引位置的字符是:"+ch);
        String original="hello world";
        int index=original.indexOf("llo");
        System.out.println("索引值是:"+index);
    }
}

实践结果

在这里插入图片描述

五、字符串当中的截取方法

方法概述

public String substring(int index);从参数位置一直到字符串末尾,返回新字符串。
public String substring(int begin,int end);截取从begin开始一直到end结束的一段字符串,是左闭右开区间,包含左边不包含右边。

方法实践

package cn.demo03;

public class string05 {
    public static void main(String[] args) {
        String str1="hello world!";
        String str2=str1.substring(6);
        System.out.println(str1);
        System.out.println(str2);
        String str3=str1.substring(6,12); 
        System.out.println(str3);
    }
}

实践结果

在这里插入图片描述

六、字符串的转换相关方法

方法概述

常用方法:
public char[] toCharArray();将当前字符串拆分成为字符数组作为返回值。public byte[] getBytes();获得当前字符串底层的字节数组也就是阿斯克码值。public String replace(charSequence oldString,charSequence newString);将所有出现的老字符串替换成新的并返回值为新的。
**备注:**charSequence意思就是可以接收字符串类型。

方法实践

package cn.demo03;

public class string06 {
    public static void main(String[] args) {
        char[] chars="hello".toCharArray();
        System.out.println(chars[1]);//将字符串转换为字符数组之后取第一号位元素e
        byte[] bytes="ab".getBytes();
        for (int i = 0; i < bytes.length; i++) {
            System.out.println(bytes[i]);
        }
        String str1="what's the matter?";
        String str2=str1.replace("t","*");//把t换成*
        System.out.println(str1);
        System.out.println(str2);
    }
}

实践结果

在这里插入图片描述

七、字符串的分割方法

方法概述

public String[] split(String regex);按照参数的规则,将字符串分为若干个部分。

注意事项

split方法的参数其实是一个“正则表达式”,今后要注意如果按照英文句点“.”进行切分,必须写“\.”(两个反斜杠)

方法实践

package cn.demo03;

public class string07 {
    public static void main(String[] args) {
        String str1="aaa,bbb,ccc,ddd";
        String[] array1= str1.split(",");
        for (int i = 0; i < array1.length; i++) {
            System.out.println(array1[i]);
        }
        String str2="aaa.bbb.ccc ";
        String[] array2= str2.split("\\.");
        for (int i = 0; i < array2.length; i++) {
            System.out.println(array2[i]);
        }
    }
}

实践结果

在这里插入图片描述

八、练习题1:

题目:

定义一个方法,把数组{1,2,3}按照指定格式拼接成一个字符串。
格式参照如下:【word1#word2#word3】。

分析:

1.首先准备一个int[]数组,内容是:1,2,3。
2.定义一个方法,用来将数组变成字符串。
三要素:
返回值类型:String
方法名称:fromArrayToString
参数列表:int[]。
3.格式:【word1#word2#word3】用到;for循环、字符串拼接、每个数组元素之前都有一个word字样、分割使用的是#、区分一下是不是最后一个。
4.调用方法:得到返回值,并打印结果字符串。

代码:

package cn.demo03;

public class stringtext1 {
    public static void main(String[] args) {
        int array[]={1,2,3};
        String result=fromArrayToString(array);
        System.out.println(result);
    }
    public static String fromArrayToString(int[] array){
        String str="[";
        for (int i = 0; i < array.length; i++) {
            if(i==array.length-1){
                str+="word"+array[i]+"]";
            }else{
            str+="word"+array[i]+"#";//加对于字符串来说不是累加,是在原有的字符串中往里面拼接一些内容
            }
        }
        return str;
    }
}

运行结果:

在这里插入图片描述

九、练习题2:

题目:

键盘输入一个字符串并统计其各种字符出现的次数。种类有:大写字母、小写字母、数字、其他。

思路:

1.既然用到键盘输入,肯定是scanner。
2.键盘输入的是字符串,那么,String str=sc.next();
3.定义四个变量,分别代表四种字符各自出现的次数。
4.需要对字符串一个字、一个字检查。String–>char[],方法就是toCharArray();
5.遍历char[]字符数组,对于当前字符种类进行判断,并且用四个变量进行++。
6.打印输出四个变量,分别代表四种字符出现的的次数。

代码:

package cn.demo03;

import java.util.Scanner;

public class stringtext2 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String input=sc.next();//获取键盘输入放入一个字符串
        int big=0;//大写字母
        int small=0;//小写字母
        int charter=0;//数字
        int other=0;//其他字符符号什么的
        char[] chararray=input.toCharArray();
        for (int i = 0; i < chararray.length; i++) {
            char ch=chararray[i];//当前单个字符
            if('A'<=ch&&ch<='Z'){
                big++;
            }else if('a'<=ch&&ch<='z'){
                small++;
            }else if('0'<=ch&&ch<='9'){
                charter++;
            }else{
                other++;
            }

        }
        System.out.println("大写字母个数:"+big);
        System.out.println("小写字母个数:"+small);
        System.out.println("数字个数:"+charter);
        System.out.println("其他字符个数:"+other);
    }
}

运行结果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淅淅同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值