Java学习相关笔记第四篇

字符串的特点:

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

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

三种构造方法:

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

一种直接创建:

     String str = “”;

注意:直接写上双引号,就是字符串对象。

package day04;
public class Demo01 {
    public static void main(String[] args) {
        // 使用空参数构造
        String str1 = new String(); // 小括号留空,此时字符串什么内容都没有
        System.out.println("第一个字符串是: " + str1);
        // 根据字符数组创建字符串
        char[] array = { 'A','B','C' };
        String str2 = new String(array);
        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);
    }
}

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

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

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

如果确实需要字符串内容的比较,可以使用两种方法:

  1. public boolean equals(Object obj):参数可以是任何对象,只有参数是一个字符串并且内容相同才会给出True,否则返回False。
  2. public boolean equalsIgnoreCase(String str):忽略大小写,进行内容的比较。 
package day04;
/*
equals 方法具有对称性,就是a.equals(b)与b.equals(a)的效果相同
如果比较双方一个常量一个变量,推荐把常量字符串写在前面。
 */
public class StringEqual {
    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
        System.out.println(str2.equals(str3)); // false
        System.out.println(str1.equalsIgnoreCase(str3)); // true
    }
}

String当中获取相关的常用方法有:

  1. public int length():获取字符串当中含有的字符串个数,拿到字符串长度。
  2. public String concat(String str):将当前字符串和参数字符串拼接成为返回值新的字符串。
  3. public char chatAt(int index):获取指定索引位置的单个字符。(索引从0开始)。
  4. public int indexOf(String str):查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1。
package day05;
public class Demo2StringGet {
    public static void main(String[] args) {
        // 获取字符串的长度
        int length = "dhaiosdhakshdalh".length();
        System.out.println("字符串的长度: " + length);
        // 拼接字符串
        String str1 = "Hello";
        String str2 = "World";
        String str3 = str1.concat(str2);
        System.out.println("拼接字符串: " + str3);
        // 获取指定索引位置的字符
        char ch = "Hello".charAt(1);
        System.out.println("获取的指定索引位置的字符是: " + ch);
        // 查找参数字符串在本来字符串当中出现的第一次索引位置
        String original = "Hello World";
        int lo = original.indexOf("lo");
        System.out.println("参数字符串出现的位置: " + lo);
    }
}

 字符串的截取方法:

  1. public String substring(int index):截取从参数位置一直到字符串末尾,返回新字符串。
  2. public String substring(begin end):截取从begin开始到end结束的中间的字符串。
  3. 备注:[begin,end)。包含左边,不包含右边。
package day05;
public class DemoSubString {
    public static void main(String[] args) {
        String str1 = "HelloWorld";
        String str2 = str1.substring(5);
        System.out.println("截取的字符串是: " + str2);
        String str3 = str1.substring(4,6);
        System.out.println("截取的字符串是: " + str3);
    }
}

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

  1. public char[] toCharArray():将当前字符串拆分成为字符数组作为返回值。
  2. public byte[] getBytes():获取当前字符串底层的字节数组。
  3. public String replace(CharSequence oldString,charSequence newString):将所有出现的旧的字符串替换成为新的字符串,返回替换之后的新字符串。其中CharSequence可以接受字符串类型。
package day05;
public class DemoStringConvert {
    public static void main(String[] args) {
        char[] chars = "Hello".toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }
        byte[] bytes = "ABC".getBytes();
        System.out.println(bytes[1]);
        String str1 = "How do you do!";
        String o = str1.replace("o", "*");
        System.out.println("替换后的字符串是: " + o);
    }
}

分割字符串的方法:

  1. public String[] split(String regex):按照参数的规则,将字符串切分成为若干部分。
  2. 注意事项:split方法的参数其实是一个正则表达式。
package day05;

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

练习:

1.定义一个方法,把数组{1,2,3}按照指定的格式拼接成为一个字符串。格式按照如下:[world1#world2#world3#]。

package day05;

public class DemoStringPractice {
    public static void main(String[] args) {
        int[] array = { 1,2,3,4 };
        System.out.println(fromArray(array) );
    }
    public static String fromArray(int[] array) {
        String str = "[";
        for (int i = 0; i < array.length; i++) {
            if (i == array.length - 1) {
                str += "world" + array[i] + "]";
            }
            else {
                str += "world" + array[i] + "#";
            }
        }
        return str;
    }
}

2.键盘输入一个字符串,并且统计其中各种字符串出现的次数。

package day05;

import java.util.Scanner;

public class DemoStringCount {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串: ");
        String inpout = sc.next(); // 获取字符串
        int countUpper = 0; //大写字母
        int countLower = 0; // 小写字母
        int countNumber = 0; // 数字
        int countOther = 0; // 其他
        char[] chars = inpout.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] >= 'A' && chars[i] <= 'Z') {
                countUpper++;
            }
            else if (chars[i] >= 'a' && chars[i] <= 'z') {
                countLower++;
            }
            else  if (chars[i] >= '0' && chars[i] <= '9') {
                countNumber++;
            }
            else {
                countOther++;
            }
        }
        System.out.println("大写字母是:" + countUpper + "小写字母是:" + countLower + "数字是:" + countNumber + "其他是:" + countOther);
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值