扬州市城乡建设局招标网站,wordpress搜索 主题,网站开发的目的相关书籍,西安网站建设排行榜String类一、String类的特点二、String 类的常见构造方法三、String常见的面试题1.字符串常量池2.String s abc与String s new String(abc)区别3.字符拼接4.常量优化机制四、String常用方法1. 比较字符串内容2. 遍历字符串3.截取字符串4.替换字符串5…
String类一、String类的特点二、String 类的常见构造方法三、String常见的面试题1.字符串常量池2.String s abc与String s new String(abc)区别3.字符拼接4.常量优化机制四、String常用方法1. 比较字符串内容2. 遍历字符串3.截取字符串4.替换字符串5.切割字符串一、String类的特点 String是一个类属于引用数据类型不属于基本数据类型。 Java 程序中所有双引号字符串, 都是 String 类的对象 /*
* 这里的abc就是一个String类对象
* 所以可以调用类里面的方法
* */
System.out.println(abc.length());
System.out.println(abc.toUpperCase());字符串在创建之后, 其内容不可更改 例子如下
String sabc;
sdef;
System.out.println(s);//打印结果def上面的例子相当于
char data1[] {a, b, c};
String s new String(data1);char data2[] {d, e, f};
snew String(data2);//使用新的对象进行替换System.out.println(s);//打印结果def结论字符串对象一旦被创建其内容就不能更改。要更改就只能使用新的字符串对象进行替换。后面会给出内存图。 字符串虽然不可改变, 但是可以被共享 String s1abc;
String s2abc;System.out.println(s1s2);//true结论String是引用数据类型所以号比较的是地址也就是说s1和s2共享同一份地址。 这是什么原因呢 在JDK当中双引号括起来的字符串例如“abc” def都是直接存储在“方法区”的“字符串常量池”当中的。 字符串常量池 当我们使用双引号创建字符串对象时会检查字符串常量池中是否存在该数据 存在复用共享 不存在创建 二、String 类的常见构造方法 //最常用的方式,不使用构造器
String s1 abc;
System.out.println(s1);//abc//构造方法1public String()
String s2new String();
System.out.println(s2);//空白字符串//构造方法2public String(String original)
String s2 new String(abc);//根据传入的字符串创建字符串对象
System.out.println(s2);//abc//构造方法3public String(char[] chs)
char[] c {a , b, c};
String s3 new String(c);//根据字符数组创建字符串对象
System.out.println(s3);//abc三、String常见的面试题
1.字符串常量池 2.String s abc与String s new String(“abc”)区别 3.字符拼接 4.常量优化机制
//Main.java
String s1abc;
String s2abc;
System.out.println(s1s2);//true//Main.class
String s1 abc;
String s2 abc;
System.out.println(s1 s2);分析与上一道题不同的是这里字符串拼接符左右都是字符串常量没有变量。所以常量优化机制吧它拼接成“abc”。因此在字节码文件中s1与s2一样变为第一道面试题了。
四、String常用方法 1. 比较字符串内容 public boolean equals方法(要比较的字符串) : 比较内容 public boolean equalsIgnoreCase(要比较的字符串) : 比较内容, 忽略大小写 String s1abc;
String s2new String(abc);
String s3AbC;
System.out.println(s1s2);//false
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s3));//false
System.out.println(s1.equalsIgnoreCase(s3));//true2. 遍历字符串 public char[] toCharArray () : 将字符串转换为字符数组 public char chatAt (int index) : 根据索引找字符 public int length() : 返回字符串的长度 方法一
String sabcdefgh;
char[] datas.toCharArray();
for (int i 0; i data.length; i) {System.out.println(data[i]);
}方法二
String sabcdefg;
for (int i 0; i s.length(); i) {System.out.println(s.charAt(i));
}推荐使用方法一就只调用了一次toCharArray()。而方法二每次循环都调用了一次length()和charAt()开销大。
3.截取字符串 public String substring(int beginIndex) 截取到末尾 public String substring(int beginIndex, int endIndex) 根据开始和结束索引做截取, 包含头不包含尾 案例截取手机号隐藏中间四位
String s12345678901;String starts.substring(0,4);//截取前四位
String ends.substring(7);//截取后四位
System.out.println(start****end);//1234****89014.替换字符串 public String replace(旧值,新值) : 替换 案例敏感词替换仅为案例 String s你TMD真是个小可爱;
ss.replace(TMD,***);
System.out.println(s);//你***真是个小可爱5.切割字符串 public String[] split(String regex) 根据给出的标识切割字符串 String s192.168.0.0;
String[] splits s.split(\\.);
for (int i 0; i splits.length; i) {System.out.println(splits[i]);// 192 168 0 0
}注意如果根据指定标识符无法进行切割则加上\\