Java学习笔记之String类

来源:互联网 发布:什么是java面向对象 编辑:程序博客网 时间:2024/04/29 02:48
String 类提供了许多用来处理字符串的方法,例如,获取字符串长度、对字符串进行截取、将字符串转换为大写或小写、字符串分割等,

package com.imooc7;
import java.util.Arrays;
public class ClassString {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        //定义一个字符串str
        String str = "学习JAVA编程";
        
        //打印输出字符串的长度
        System.out.println("字符串长度:"str.length());
        
        //查找字符'编'的位置
        char c = '编';
        System.out.println("字符'编'的位置:" + str.indexOf(c));
        
        //查找子字符串'JAVA'的位置
        System.out.println("子字符串'JAVA'的位置:" + str.indexOf("JAVA"));
        
        //查询子字符串'imooc'的位置,如果找不到返回-1
        System.out.println("子字符串'imooc'的位置:" + str.indexOf("imooc"));
        
        //按空格把字符串拆分成一个数组,并输出数组元素
        String[] arr = str.split(" ");
        System.out.println("按空格拆分成数组:" + Arrays.toString(arr));
        System.out.println();
        
        //获取索引位置[3,7)之间的子串
        System.out.println("获取位置[3,7)之间的子串:" + str.substring(3,7));
        
        
    }
}

1. 字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1
 
2. 使用 indexOf 进行字符或字符串查找时,如果匹配返回位置索引;如果没有匹配结果,返回 -1
 
3. 使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符

package com.imooc7;
public class ClassString1 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // Java文件名
                String fileName = "HelloWorld.java"
                // 邮箱
                String email = "laurenyang@imooc.com";
                
                // 判断.java文件名是否正确:合法的文件名应该以.java结尾
                /*
                参考步骤:
                1、获取文件名中最后一次出现"."号的位置
                2、根据"."号的位置,获取文件的后缀
                3、判断"."号位置及文件后缀名
                */
                //获取文件名中最后一次出现"."号的位置
                int index = fileName.lastIndexOf('.');
                
                // 获取文件的后缀
                String prefix = fileName.substring(index);
                
                // 判断必须包含"."号,且不能出现在首位,同时后缀名为"java"
                if ( prefix == "java" && index != 0) {
                    System.out.println("Java文件名正确");
                } else {
                    System.out.println("Java文件名无效");
                }
                // 判断邮箱格式是否正确:合法的邮箱名中至少要包含"@", 并且"@"是在"."之前
                 /*
                参考步骤:
                1、获取文件名中"@"符号的位置
                2、获取邮箱中"."号的位置
                3、判断必须包含"@"符号,且"@"必须在"."之前
                */
                // 获取邮箱中"@"符号的位置
                int index2 = email.indexOf('@');
                
                // 获取邮箱中"."号的位置
                int index3 = email.indexOf('.');
                
                // 判断必须包含"@"符号,且"@"必须在"."之前
                if (index2 != -1 && index3 > index2) {
                    System.out.println("邮箱格式正确");
                } else {
                    System.out.println("邮箱格式无效");
                }
    }
}
最后一次出现的位置lastIndexOf

package com.imooc7;
public class ClassString2 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        //定义一个字符串“学习JAVA编程”
        String str = "学习JAVA编程";
        
        //将字符串转换成小写
        System.out.println("转换为小写:" + str.toLowerCase());
        
        //获取索引位置为1的字符
        System.out.println("获取索引位置为1的字符:" + str.charAt(1));
        
        //将字符串转换为byte[],并打印输出
        byte[] b = str.getBytes();
        System.out.println("转换为字节数组:");
        for(int i = 0; i < b.lengthi++){
            System.out.println(b[i] + " ");
        }
        System.out.println();
        
        //和另外一个字符串“学习JAVA 编程”进行比较
        String str2 = new String("学习JAVA 编程");
        System.out.println("str和str2的内存地址相同?" + (str == str2));
        System.out.println("str和str2的内容相同?" + str.equals(str2));
        
    }
}

使用了
toLowerCase()将字符串变为小写
charAt()获取指定位置的字符
getBytes()将字符串转换为byte[],并打印输出

所以:
“==” 和 equals() 有什么区别呢?
 
==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象
 
equals(): 比较存储在两个字符串对象中的内容是否一致

字节是计算机存储信息的基本单位,1 个字节等于 8 位, gbk 编码中 1 个汉字字符存储需要 2 个字节,1 个英文字符存储需要 1 个字节。所以我们看到上面的程序运行结果中,每个汉字对应两个字节值,如“学”对应 “-47 -89” ,而英文字母 “J” 对应 “74” 。同时,我们还发现汉字对应的字节值为负数,原因在于每个字节是 8 位,最大值不能超过 127,而汉字转换为字节后超过 127,如果超过就会溢出,以负数的形式显示。

package com.imooc7;
public class ClassString3 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";
        
        // 出现次数
        int num = 0;
        
         // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数
        for ( int i = 0; i < s.length(); i++ )
        {
            // 获取每个字符,判断是否是字符a
            if (s.charAt(i) == 'a' ) {
                // 累加统计次数
                num++; 
            }
        }
        System.out.println("字符a出现的次数:" + num);
    }
}


0 0
原创粉丝点击