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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值