简介
java.Lang.String类代表字符率。
AP1当中说:Javo程序中的所有于好是,都是String类的对势,(就算没有new,也照样是。)
字符串的特点:
1.字符率的内容永不可变。【重点】
2.正是因为字符串不可改变,所以字符串是可以共享使用的字符率效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组。
注意:直接写上双引号,就是字符串对象。
创建
package com.wx.demo07;
/*
创建字符串的常见3+1种方式。
三种构造方法:
public String():创建一个空白字符串,不含有任何内容。
pubLic String(char[]array):根据字符数组的内容,来创建对应的字符串
public String(byte[]array):根据字节数组的内容,来创建对应的字符串
直接创建
String str = "123";
*/
public class demo07_String {
public static void main(String[] args) {
//空参创建
String str1 =new String();//空的
System.out.println("第一个:"+str1);
//字符串创建
char[] ca={'A','B','C'};
String str2 =new String(ca);
System.out.println("第二个:"+str2);
//字节数组创建
byte[] ba ={97,98,99};//编码
String str3 =new String(ba);
System.out.println("第三个:"+str3);
//直接创建
String s = "123";
System.out.println("直接创建:"+s);
}
}
内存情况
字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中。
- 对于基本类型来说,== 是进行数值的比较
- 对于引用类型,== 是进行【地址值】的比较。
常用方法
package com.wx.demo07;
/*
字符串是常量,不会变,每当内容改变,都生成了新的字符串
*/
public class demo07_Commonmethods {
public static void main(String[] args) {
String str = "hello";
//比较
System.out.println(str.equals("hello"));
//推荐常量写在前面,否则null在前方会空指针异常
System.out.println("123".equals("1234"));
//比较忽略大小写
System.out.println(str.equalsIgnoreCase("HELLO"));
//长度
System.out.println(str.length());
//拼接
String str2 = str.concat("world");
System.out.println(str2);
//索引单个字符
char c =str.charAt(1);
System.out.println(c);
//查找,没有就-1,有只会输出第一次
int index = str.indexOf("llo");
System.out.println("第一次索引的位置:"+index);
//截取
System.out.println(str.substring(1));
System.out.println(str);
System.out.println(str.substring(0,2));
//转换 字符串 --》字符数组
char[]c1 =str.toCharArray();
for (char i:c1){
System.out.print(i+" ");
}
System.out.println();
//转换 字符串 --》字节数组
byte[] b =str.getBytes();
for (byte i:b){
System.out.print(i+" ");
}
//替换
System.out.println(str.replace("l","L"));
String str3 = str.replace('L', 'l');
System.out.println(str3);
//分割
String[] str4 ="aa,aaaaa,aaaaa".split(",");//参数为正则表达式英文句号为\\.
for (String i:str4){
System.out.print(i+" ");
}
}
}
练习:
健盘输入一个字符串,并且统计其中各种字符出现的次数。种类有:大写字母、小写字母、数字、其他;
import java.util.Scanner;
public class demo07_Exercise {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
System.out.print("输入字符串:");
String str =sc.next();
char[] chars =str.toCharArray();
int a=0,b=0,c=0,d=0;
for (int i = 0; i < chars.length; i++) {
if('A'<=chars[i]&&chars[i]<='Z'){
a++;
}
else if('a'<=chars[i]&&chars[i]<='z'){
c++;
}
else if ('0'<=chars[i]&&chars[i]<='9'){
b++;
}
else {
d++;
}
}
System.out.println("大写字母数量:"+a);
System.out.println("小写字母数量:"+c);
System.out.println("数字数量:"+b);
System.out.println("其他数量:"+d);
}
}