String 类
1、String可以表示出一个字符串
2、String类实际是使用字符数组存储的
String 类的两种赋值方法
第一种:String s1 = new String(“小白”);
第二种:String s2 = "小白";
字符串常量池:在堆内存中,除了创建一个小白的对象外,还会在堆内存中的字符串常量池中再创建一个
String 类字符与字符串操作方法
class Demo
{
public static void main(String[] args)
{
String s = "brother";
char c = s.charAt(3);//文档中charAt的返回值类型是char类型,所以定义一个char类型的值.()中的数字,表示下表位置0,1,2,3
System.out.println(c);
//把字符串转换成字符数组
char[] cs = s.toCharArray();
for(int i = 0; i < cs.length; i++)
{
System.out.print(cs[i]+",");
}
}
}
class Demo
{
public static void main(String[] args)
{
String info = "我的学习笔记";
//把字符串转换成字节数组
byte[] bytes = info.getBytes();
for (int i=0; i<bytes.length; i++)
{
System.out.print(bytes[i]+",");
}
System.out.println();
//把字符数组转换成字符串
String s = new String(bytes);
System.out.println(s);
String s1 = new String(bytes,0,8);
System.out.println(s1);//输出:我的学习,是因为前面的8,一个汉字占两个字节,8个字节的话,就占了4个字节,如果输入是单数的话,就会出现问号
}
}
Sring 类编译期与运行期分析
/**
String类编译期与运行期分析
*/
public class StringDemo{
public static void main(String[] args){
//情况一:
String a = "a1";
String a1 = "a"+1;
System.out.println(a==a1);
//情况二:
String b = "b1";
int bb = 1;
String b1 = "b"+bb;//bb的值是一个变量,是通过编译后才能确定的
System.out.println(b==b1);
//情况三:
String c = "c1";
final int cc = 1;//final 关键字的用意是cc的值确定为1后不能再改变
String c1 = "c"+cc;
System.out.println(c==c1);
//情况四:
String d = "d1";
final int dd = getDD();//dd的值是通过运行期后,才能确定的
String d1 = "d"+dd;
System.out.println(d==d1);
}
public static int getDD(){
return 1;
}
}
Sring 类判断是否以指定内容开头或结尾
prefix:前缀 suffix:后缀
class Demo
{
public static void main(String[] args)
{
String info = "我的快乐学习笔记";
//判断是否以指定字符串开头
boolean b = info.startsWith("我的");
System.out.println(b);
boolean bool = info.startsWith("学习",4);//从第4个开始,是以学习开始的
System.out.println(bool);
//判断是否以指定字符串结尾
boolean bool1 = info.endsWith("笔记");
System.out.println(bool1);
}
}
Sring 类替换操作
class Demo
{
public static void main(String[] args)
{
String info = "我的学习笔记,我做主";
info = info.replace(",",":");//replace 将第一个字符串改成第二个字符串
System.out.println(info);
//替换指定字符串
info = info.replace("我的","wode");
System.out.println(info);
//使用正则表达式匹配字符串
info = info.replaceAll("[a-z]","*");//replaceAll 使用正则表达式,正则表达式的写法[a-z],表示从a-z的26个字母
System.out.println(info);
info = info.replaceFirst("\\*","!");//replaceFirst 第一个满足条件的字符串,\\*转换*号需要通过转义字符来表示,要按原意的表达,就需要转义。
System.out.println(info);
}
}
String 类字符串截取操作
class Demo
{
public static void main(String[] args)
{
String info = "我的学习笔记,我做主";
String s = info.substring(5);//substring,从第几个位置(字符)开始。“我是第一个位置”,5是从第五个字符开始
System.out.println(s);
String s1 = info.substring(0,6);//从0的位置到6的位置(不是很懂!T_T,指的难道是下标吗?)
System.out.println(s1);
}
}
regex:正则表达式 split : 分开,分裂
class Demo
{
public static void main(String[] args)
{
String info = "怀才就想怀孕-时间久了才能看出来";
String[] value = info.split("-");
for(String s:value)
{
System.out.println(s);
}
value = info.split("-",2);//1表示拆分成一整块,相当于每拆分,2的话,就拆分成两块,当超过的话,就会全部拆分,比如输入个3或者10
for(String s:value)
{
System.out.println(s);
}
}
}
s:value相等于:
for (int i=0; i<values.length; i++)
{
System.out.println(values[i]);
}