IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java学习之路(十六)| 字符串 -> 正文阅读

[Java知识库]Java学习之路(十六)| 字符串

各自努力,最高处见!加油!

一、字符串的特点

  1. 字符串的内容永远不可变。 (非常重要)
  2. 正是因为字符串不可变,所以字符串是可以共享使用的。
  3. 字符串效果上相当于是char[ ]字符数组,但是底层原理是byte[ ]字节数组。

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

三种构造方法

  • public String();创建一个空白字符串,不含有任何内容。
  • public String(char[ ] array);根据字符数组的内容,创建对应的字符串。
  • public String(byte[ ] array);根据字节数组的内容,创建对应的字符串。

一种直接创建

String str4="ABCabc";

示例代码:

public class StringLearn {

    public static void main(String[] args) {
        String str1=new String();//空参
        System.out.println("第一个字符串:"+str1);//创建了空字符串

        char[] charString={'A','B','C'};
        String str2=new String(charString);
        System.out.println("第二个字符串:"+str2);//将字符数组转成字符串

        byte[] byteString={97,98,99};
        String str3=new String(byteString);
        System.out.println("第三个字符串:"+str3);//将字节数组转成字符串

        String str4="ABCabc";
        System.out.println("第四个字符串:"+str4);//将字节数组转成字符串
    }
}

运行结果:
在这里插入图片描述

三、字符串的常量池

程序中直接写上的双引号字符串,就在字符串常量池中。

对于基本类型来说,==是进行数值的比较。
对于基本引用类型来说,==是进行地址值的比较

示例代码:

public class StringPool {

    public static void main(String[] args) {
        String str1="abc";
        String str2="abc";

        char[] charString={'a','b','c'};
        String str3=new String(charString);

        //对于引用类型,==比较的是地址值
        System.out.println(str1==str2);//true-->地址相同
        System.out.println(str1==str3);//false-->地址不相同
        System.out.println(str3==str2);//false
    }
}

分析:
在这里插入图片描述

四、字符串内容比较

==比较的是字符串的地址值,如需比较字符串的内容需要使用以下方法

public boolean equals(Object obj);//严格区分大小写
public boolean eaualsIgnoreCase(Object obj);//不区分大小写

参数可以是任何对象,参数是一个字符串并且内容相同返回true,否则返回false。
注意事项:

  1. 任何对象都能用Object进行接收
  2. equals方法具有对称性,即:a.equals(b)b.equals(a)效果一样
  3. 如果比较的两者一个为常量字符串,一个为变量字符串,通常把常量字符串写在前面。如:"abc".equals(str1)
    好处:
String str4=null;
System.out.println("Hello".equals(str4));//false
System.out.println(str4.equals("Hello"));//当前面的字符串为空时会产生空指针异常java.lang.NullPointerException

示例代码:

public class StringEquals {

    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));//true str1与str2内容相同
        System.out.println(str2.equals(str1));//true
        System.out.println(str1.equals(str3));//true str1与str3内容相同
        System.out.println("***********************");

        String str5="hello";
        System.out.println(str1.equals(str5));//false;equals严格区分大小写
        System.out.println(str2.equalsIgnoreCase(str5));//true;equalsIgnoreCase()忽略大小写
        System.out.println("***********************");

        //好处
        System.out.println("Hello".equals(str1));//true,推荐写法,将常量写在前面
        String str4=null;
        System.out.println("Hello".equals(str4));//false
        System.out.println(str4.equals("Hello"));//当前面的字符串为空时会产生空指针异常java.lang.NullPointerException
    }
}

五、字符串获取相关方法

1、public int length();

获取字符串当中含有的字符个数,即字符串长度。

2、public String concat(String str);

将当前字符串和参数字符串拼接成为新的字符串并返回。

3、public char charAt(int index);

获取指定索引位置的单个字符(索引从0开始)。

4、public int indexOf(String str);

查找参数字符串在本字符串当中首次出现的索引位置,没有返回-1。

六、字符串的截取方法

1、 public String substring(int index);

截取从参数位置一直到字符串末尾,返回新字符串。

2、public String substring(int begin,int end);

截取从begin开始,一直到end结束,中间的字符串。[begin,end)包括左边,不包括右边。

示例代码:

public class Substring {
    public static void main(String[] args) {
        String str1="HelloWorld";
        String str2=str1.substring(5);
        System.out.println(str1);
        System.out.println(str2);

        String str3=str1.substring(4,7);
        System.out.println(str3);
    }
}

分析:
在这里插入图片描述

七、字符串转换相关方法

1、public char[ ] toCharArray();

将当前字符串拆分成字符数组作为返回值。

2、public byte[ ] getByte();

获得当前字符串底层的字节数组。

3、public String replace(CharSequence OldString,CharSequence newString);

将所有出现的老字符串替换成新的字符串,返回替换之后的结果新字符串。

示例代码:

public class StringConvert {
    public static void main(String[] args) {

        //转换成字符数组
        char[] chars="Hello".toCharArray();
        System.out.println(chars[2]);
        System.out.println(chars.length);
        System.out.println("***********************");

        //转换成字节数组
        byte[] bytes="abc".getBytes();
        for (int i = 0; i < bytes.length; i++) {
            System.out.println(bytes[i]);
        }
        System.out.println("***********************");

        //字符串的内容替换
        String str1="How do you do?";
        String str2=str1.replace("do","**");
        System.out.println(str1);
        System.out.println(str2);

    }
}

运行结果:
在这里插入图片描述

八、字符串的分割

public String[] split(String regex);

按照参数的规则,将字符串切分成为若干部分。

示例代码:

public class StringSplit {

    public static void main(String[] args) {
        String str1="aaa,bbbb,cccccccccc";
        String[] array1=str1.split(",");//可以替换成其他的分割符号
        for (int i = 0; i < array1.length; i++) {
            System.out.println(array1[i]);
        }
    }
}

注意:用英文句点(.)作为分割符号时,在split()方法中的参数应为\\.(正则表达式)。

九、练习题

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

import java.util.ArrayList;
public class StringPractise1 {

    /*方法名称:arrayToString
      返回值:String
      参数:ArrayInt
     */
    public static String arrayToString(int[] ArrayInt){
        String str=new String();
        str=str.concat("[");

        for (int i = 0; i < ArrayInt.length; i++) {
            str=str.concat("word");
            str=str+ArrayInt[i];
            if(i==ArrayInt.length-1){
                str=str.concat("]");
            }else{
                str=str.concat("#");
            }
        }
        return str;
    }


    public static void main(String[] args) {
        int[] ArrayInt={1,2,3};
        System.out.println(arrayToString(ArrayInt));
    }
}

2、输入一个字符串,统计其中字符出现的个数。种类有:大写字母,小写字母,数字,其他

import java.util.Scanner;

public class StringCount {

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);//建立Scanner对象
        int countUpper=0;//大写字母
        int countLower=0;//小写字母
        int countNumber=0;//数字
        int countOther=0;//其他

        System.out.print("请输入字符串:");
        String input=sc.next();//键盘输入字符串
        char[] arrayChar=input.toCharArray();
        for (int i = 0; i < arrayChar.length; i++) {
            if('A'<=arrayChar[i]&&arrayChar[i]<='Z'){
                countUpper++;
            }else if('a'<=arrayChar[i]&&arrayChar[i]<='z'){
                countLower++;
            }else if('0'<=arrayChar[i]&&arrayChar[i]<='9'){
                countNumber++;
            }else{
                countOther++;
            }
        }
        System.out.println("大写字母"+countUpper);
        System.out.println("小写字母"+countLower);
        System.out.println("数字"+countNumber);
        System.out.println("其他字符"+countOther);
    }
}
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 15:15:56  更:2021-08-17 15:17:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 2:03:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码