Java-String类简单理解

java.lang.String 类代表字符串。 Java 程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例。类 String 中包括用于检查各个字符串的方法,比如用于 比较 字符串, 搜索 字符串, 提取子字符串以及创建具有翻译为 大写 小写 的所有字符的字符串的副本。
构造方法
查看类
java.lang.String :此类不需要导入。
查看构造方法
  • public String() :初始化新创建的 String对象,以使其表示空字符序列。
  • public String(char[] value) :通过当前参数中的字符数组来构造新的String
  • public String(byte[] bytes) :通过使用平台的默认字符集解码当前参数中的字节数组来构造新的String
  • 直接赋值的方式创建字符串对象
构造举例,代码如下:
public class StringDemo { 
    public static void main(String[] args) { 
        //public String():创建一个空白字符串对象,不含有任何内容 
        String s1 = new String(); 
        System.out.println("s1:" + s1); 
        //public String(char[] chs):根据字符数组的内容,来创建字符串对象 
        char[] chs = {'a', 'b', 'c'}; 
        String s2 = new String(chs); 
        System.out.println("s2:" + s2); 
        //public String(byte[] bys):根据字节数组的内容,来创建字符串对象 
        byte[] bys = {97, 98, 99}; 
        String s3 = new String(bys); 
        System.out.println("s3:" + s3); 
        //String s = “abc”; 直接赋值的方式创建字符串对象,内容就是abc 
        String s4 = "abc"; 
        System.out.println("s4:" + s4);
    }
}
判断功能的方法
  • public boolean equals (Object anObject) :将此字符串与指定对象进行比较。
  • public boolean equalsIgnoreCase (String anotherString) :将此字符串与指定对象进行比较,忽略大小
方法演示,代码如下:
/*
*判断功能的方法举例 s1.equals(s2):比较s1和s2的内容是否一模一样,如果一样返回true,否则返回false *s1.equalsIgnoreCase(s2):比较s1和s2的内容是否相同,但是不区分大小写 s1.contains(s2): 判断s1中是*否包含s2,包含则返回true,不包含则返回false 
*/ 
public class String_Demo { 
    public static void main(String[] args) { 
        // 创建字符串对象 
        String s1 = "hello"; 
        String s2 = "hello"; 
        String s3 = "HELLO"; 
        // boolean equals(Object obj):比较字符串的内容是否相同     
        System.out.println(s1.equals(s2)); // true 
        System.out.println(s1.equals(s3)); // false 
        System.out.println("-----------"); 
        //boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写 
        System.out.println(s1.equalsIgnoreCase(s2)); // true 
        System.out.println(s1.equalsIgnoreCase(s3)); // true 
        System.out.println("-----------"); 
    }
}

Object 对象的意思,也是一种引用类型。作为参数类型,表示任意对象都可以传递到方法中。

字符串的比较:==号和equals的作用

  • ==比较基本数据类型:比较的是具体的值
  • ==比较引用数据类型:比较的是对象地址值
  • equals比较String类型: 比较的是对象的内容是否相同
/*
*使用==做比较: 基本类型:比较的是数据值是否相同 引用类型:比较的是地址值是否相同
*public boolean equals(Object anObject): 将此字符串与指定对象进行比较。由于我们比较的是字符串对*象,所以参数直接传递一个字符串 
*/ 
public class StringDemo { 
    public static void main(String[] args) { 
        //构造方法的方式得到对象 
        char[] chs = {'a', 'b', 'c'};
        String s1 = new String(chs);
        String s2 = new String(chs); 
        //直接赋值的方式得到对象 
        String s3 = "abc"; 
        String s4 = "abc"; 
        //比较字符串对象地址是否相同 
        System.out.println(s1 == s2); 
        System.out.println(s1 == s3); 
        System.out.println(s3 == s4); 
        System.out.println("--------"); 
        //比较字符串内容是否相同 
        System.out.println(s1.equals(s2)); 
        System.out.println(s1.equals(s3)); 
        System.out.println(s3.equals(s4)); 
    }
}

获取功能的方法

  • public int length () :返回此字符串的长度。
  • public String concat (String str) :将指定的字符串连接到该字符串的末尾。
  • public char charAt (int index) :返回指定索引处的 char值。
  • public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。
  • public String substring (int beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。
  • public String substring (int beginIndex, int endIndex) :返回一个子字符串,从beginIndexendIndex截取字符串。含beginIndex,不含endIndex
方法演示:
/*获取功能的方法
*public int lengt():返回此字符串的长度。 举例:s.length() 获取s中的字符的数量 - public String *concat (String str) :将指定的字符串连接到该字符串的末尾。 举例:s1.cocat(s2) 把s2连接到s1的末尾 *- public char charAt (int index) :返回指定索引处的 char值。 举例:s1.charAt(5) 获取s1中索引为*5的字符 - public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。 举
*例:s1.indexOf(s2) 查找s2在s1中第一次出现的位置,如果不存在,返回-1 - public String substring 
*(int *beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。举
*例:s1.substring(5) 截*取s1字符串从索引5开始一直到最后的内容 - public String substring (int *beginIndex, int *endIndex) : 返回一个子字符串,从beginIndex到endIndex截取字符串。含*beginIndex,不含endIndex。 *举例:s1.substring(5,10) 截取s1字符串从索引5开始一直到索引10之间的
*内容(包含5,不包含10) 
*/ 
public class String_Demo02 { 
    public static void main(String[] args) { 
        //创建字符串对象 
        String s = "helloworld"; 
        // int length():获取字符串的长度,其实也就是字符个数 
        System.out.println(s.length()); 
        System.out.println("--------"); 
        // String concat (String str):将将指定的字符串连接到该字符串的末尾. 
        String s = "helloworld"; 
        String s2 = s.concat("**hello java"); 
        System.out.println(s2);
        // helloworld**hello java 
        // char charAt(int index):获取指定索引处的字符 
        System.out.println(s.charAt(0)); 
        System.out.println(s.charAt(1)); 
        System.out.println("--------"); 
        // int indexOf(String str):获取str在字符串对象中第一次出现的索引,没有返回-1     
        System.out.println(s.indexOf("l")); 
        System.out.println(s.indexOf("owo")); 
        System.out.println(s.indexOf("ak")); 
        System.out.println("--------"); 
        // String substring(int start):从start开始截取字符串到字符串结尾     
        System.out.println(s.substring(0)); 
        System.out.println(s.substring(5)); 
        System.out.println("--------"); 
        // String substring(int start,int end):从start到end截取字符串。含start,不含end。 
        System.out.println(s.substring(0, s.length())); 
        System.out.println(s.substring(3,8));
    }
}

转换功能的方法

  • public char[] toCharArray () :将此字符串转换为新的字符数组。
  • public byte[] getBytes () :使用平台的默认字符集将该 String编码转换为新的字节数组。
  • public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使replacement字符串替换。
方法演示,代码如下:
 
/* 转换功能的方法 - public char[] toCharArray () :把字符串变成对应的字符数组。 举
*例:s1.toCharArray() 把s1变成字符数组 - public byte[] getBytes () :把字符串变成对应的字节数
*组。 举例:s1.getBytes() 把s1变成字节数组 - public String replace (String oldStr, String *newStr) :把字符串中的所有的oldStr替换成 newStr。举例:s1.replace("a","A") 把s1中的所有的"a"替
*换成"A" 
*/ 
public class String_Demo { 
    public static void main(String[] args) { 
        //创建字符串对象 
        String s = "abcde"; 
        // char[] toCharArray():把字符串转换为字符数组 
        char[] chs = s.toCharArray(); 
        for(int x = 0; x < chs.length; x++) { 
            System.out.println(chs[x]); 
        }    
        System.out.println("-----------"); 
        // byte[] getBytes ():把字符串转换为字节数组 
        byte[] bytes = s.getBytes(); 
        for(int x = 0; x < bytes.length; x++) {
        System.out.println(bytes[x]); 
        }
        System.out.println("-----------"); 
        // 替换字母hello为大写HELLO 
        String str = "hello world, hello java"; 
        String replace = str.replace("hello", "HELLO"); 
        System.out.println(replace); 
        // HELLO world, HELLO java 
        System.out.println("-----------");
    }
}

CharSequence是一个接口,也是一种引用类型。作为参数类型,可以把String对象传递到方法中。

分割功能的方法

public String[] split(String regex) :将此字符串按照给定的 regex(规则)拆分为字符串数组。 方法演示,代码如下:
/* 分割功能的方法 - public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分*为字符串数组举例: "a,b,c,d".split(",") 把"a,b,c,d"按照逗号切割,将切割后的子字符串存入String[]中 */ 
public class String_Demo { 
    public static void main(String[] args) { 
        //创建字符串对象 
        String s = "aa,bb,cc"; 
        String[] strArray = s.split(","); 
        // ["aa","bb","cc"] 
        for(int x = 0; x < strArray.length; x++) { 
            System.out.println(strArray[x]); 
            // aa bb cc 
        }
     } 
}

模拟用户登录

/* 
*思路:1:已知用户名和密码,定义两个字符串表示即可 2:键盘录入要登录的用户名和密码,用 Scanner 实
*现 3:拿键盘录入的用户名、密码和已知的用户名、密码进行比较,给出相应的提示。字符串的内容比较,用 *equals() 方法实现 4:用循环实现多次机会,这里的次数明确,采用for循环实现,并在登录成功的时候,使用*break结束循环 
*/
public class StringTest { 
    public static void main(String[] args) { 
        //已知用户名和密码,定义两个字符串表示即可 
        String username = "admin"; 
        String password = "1234"; 
        //用循环实现多次机会,这里的次数明确,采用for循环实现,并在登录成功的时候,使用break结束循环 
        for(int i=2; i>=0; i--) { 
            //键盘录入要登录的用户名和密码,用 Scanner 实现 
            Scanner sc = new Scanner(System.in); 
            System.out.println("请输入用户名:"); 
            String name = sc.nextLine(); 
            System.out.println("请输入密码:"); 
            String pwd = sc.nextLine(); 
            //拿键盘录入的用户名、密码和已知的用户名、密码进行比较,给出相应的提示。字符串的内容比 较,用equals() 方法实现 
            if (name.equals(username) && pwd.equals(password)) { 
                System.out.println("登录成功"); 
                break; 
            } else {if(i == 0) { 
                System.out.println("你的账户被锁定,请与管理员联系"); 
            } else { 
                //2,1 
                System.out.println("登录失败,你还有" + i + "次机会"); 
            } 
        } 
    }  
}
遍历字符串
键盘录入一个字符串,使用程序实现在控制台遍历该字符串
/* 
*思路:1:键盘录入一个字符串,用 Scanner 实现
* 2:遍历字符串,首先要能够获取到字符串中的每一个字符 *public char charAt(int index):返回指定索引*处的char值,字符串的索引也是从0开始的 
*3:遍历字符串,*其次要能够获取到字符串的长度 public int length():返回此字符串的长度 数组的长度:*数组名.length 字符串的长度:字符串对象.length() 4:遍历字符串的通用格式 
*/ 
public class StringTest { 
    public static void main(String[] args) { 
        //键盘录入一个字符串,用 Scanner 实现 
        Scanner sc = new Scanner(System.in); 
        System.out.println("请输入一个字符串:"); 
        String line = sc.nextLine(); 
        for(int i=0; i<line.length(); i++) { 
            System.out.println(line.charAt(i));
        }
    }
}

统计字符个数

键盘输入一个字符串统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)

/*思路: 
*1:键盘录入一个字符串,用 Scanner 实现 
*2:要统计三种类型的字符个数,需定义三个统计变量,初始值都为0 
*3:遍历字符串,得到每一个字符 
*4:判断该字符属于哪种类型,然后对应类型的统计变量+1 假如ch是一个字符,我要判断它属于大写字母,小写
*字母,还是数字,直接判断该字符是否在对应的范围即可 大写字母:ch>='A' && ch<='Z' 小写字母: *ch>='a' && ch<='z' 数字: ch>='0' && ch<='9' 
*5:输出三种类型的字符个数 
*/ 
public class StringTest { 
    public static void main(String[] args) { 
        //键盘录入一个字符串,用 Scanner 实现 
        Scanner sc = new Scanner(System.in); 
        System.out.println("请输入一个字符串:"); 
        String line = sc.nextLine(); 
        //要统计三种类型的字符个数,需定义三个统计变量,初始值都为0 
        int bigCount = 0; 
        int smallCount = 0; 
        int numberCount = 0; 
        //遍历字符串,得到每一个字符 
        for(int i=0; i<line.length(); i++) { 
            char ch = line.charAt(i); 
            //判断该字符属于哪种类型,然后对应类型的统计变量+1 
            if(ch>='A' && ch<='Z') { 
                bigCount++; 
            } else if(ch>='a' && ch<='z') { 
                smallCount++; 
            } else if(ch>='0' && ch<='9') { 
                numberCount++;
             } 
        }
        //输出三种类型的字符个数 
        System.out.println("大写字母:" + bigCount + "个"); 
        System.out.println("小写字母:" + smallCount + "个"); 
        System.out.println("数字:" + numberCount + "个");
    }
}

字符串反转

例如:键盘输入 abc  ,输出结果 cba
/* 
*思路:1:键盘录入一个字符串,用 Scanner 实现 
*2:定义一个方法,实现字符串反转。返回值类型 String,参数 String s 
*3:在方法中把字符串倒着遍历,然后把每一个得到的字符拼接成一个字符串并返回
*4:调用方法,用一个变量接收结果 
*5:输出结果 
*/ 
public class StringTest { 
    public static void main(String[] args) { 
        //键盘录入一个字符串,用 Scanner 实现 
        Scanner sc = new Scanner(System.in); 
        System.out.println("请输入一个字符串:"); 
        String line = sc.nextLine(); 
        //调用方法,用一个变量接收结果 
        String s = reverse(line); 
        //输出结果 
        System.out.println("s:" + s); 
    }
    //定义一个方法,实现字符串反转 /* 两个明确: 返回值类型:String 参数:String s
    public static String reverse(String s) { 
        //在方法中把字符串倒着遍历,然后把每一个得到的字符拼接成一个字符串并返回 
        String ss = ""; 
        for(int i=s.length()-1; i>=0; i--) { 
            ss += s.charAt(i); 
        }return ss; 
    }
}
 
 
 
 
 
 
 
 
 
 

猜你喜欢

转载自blog.csdn.net/weixin_40959890/article/details/107465225