String类
声明字符串
在Java语言中,字符串必须包含在一堆双引号("")之内。
例如:"23.23"、"ABCDE"、"你好"
可以通过以下语法格式莱声明字符串变量:
String str;
String:指定该变量为字符串类型。
str:任意有效的标识符,表示字符串变量的名称。
声明字符串变量s
创建字符串
在Java语言中,将字符串作为对象来处理,因此可以像创建其他类对象一样来创建字符串对象。创建对象要使用类的构造方法。String类的常用构造方法如下:
1.String(char a[])
10.2连接字符串
10.2.1连接多个字符串
使用“+”运算符可实现连接多个字符串的功能。“+”运算符可以连接多个String对象并产生一个新的String对象。
判断字符串是否相等
对字符串对象进行比较不能简单地使用比较运算符“==”
代码:
String tom =new String("I am a student");
String jerry = new String("I am a student");
boolean b = (tom == jerry);
布尔类型变量b的值位false,因为字符串是对象,tom、jerry是引用
字母大小写转换
String 类的toLowerCase()方法可将字符串中的所有大写字母改写为小写字母,而toUpperCase()方法可将字符串中的所有小写字母改写为大写字母。
1.toLowerCase()方法
该方法将字符串中的所有大写字母转换为小写
字符串生成器
创建成功的字符串对象,其长度是固定的,内容不能被改变和编译。虽然使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的String实例,会在内存中创建新的字符串对象。如果重复地对字符串进行修改,将极大地增加系统开销。而JDK新增了可变的字符序列StringBuilder类,大大提高了频繁增加字符串的效率。
1. append()方法 笑的常用方法如下。
该方法用于向字符串生成器中追加内容。通过该方法的多个重载形式,可实现接受任何类型的数据,如int、boolean、 char、String、double或者另一个字符串生成器等。语法如下:
append(content)
其中,content表示要追加到字符串生成器中的内容,可以是任何类型的数据或者其他对象。
2. insert(int offset,arg)方法
该方法用于向字符串生成器中的指定位置插入数据内容。通过该方法的不同重载形式,可实现向字符串生成器中插入int、float、char和boolean等基本数据类型的数据或其他对象。语法如下:
insert(int offset arg)
a、 offset:字符串生成器的位置。该参数必须大于等于0,且小于等于此序列的长度。
b、arg:将插入至字符串生成器的位置。该参数可以是任何数据类型的数据或其他对象。向字符串生成器中指定的位置添加字符,代码如下:
tringBuilder bf = new StringBuilder("hello"); //创建字符生成器
bf.insert(5, "world");
System.out,println(bf.toString()); //添加至字符生成器的位置及内容
//此时输出信息为 helloworld
3. delete(int start,int end)方法
移除此序列的子字符串中的字符。该子字符串从指定的start处开始,一直到索引end-1处的字符。如果不存在这种字符,则一直到序列尾部。如果start等于end,则不发生任何更改。语法如下:
delete(int start , int end)
a、 start:将要删除的字符串的起点位置。
b、 end:将要删除的字符串的终点位置。
删除指定位置的子字符串,代码如下:
StringBuilder bf = new StringBuilder("StringBuilder");
bf.delete(5,10);
System.out.println(bf.toString());
10.1
package string;
public class Join {//创建类
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
String s1=new String("春色绿千里");//声明字符串变量
String s2=new String("马蹄香万家");//声明字符串变量
String s=s1+"\n"+s2;//赋值
System.out.println(s);
}
}
10.2
//包名
package string;
//创建类
public class Lick {
//主方法
public static void main(String[] args) {
// TODO Auto-generated method stub
// 声明变量int
int booktime=4;
// 声明变量float
float practice=2.5f;
System.out.println("我每天花费"+booktime+"小时看书;"+practice+"小时上机练习");
}
}
10.3
package string;
public class Text {
public static void main(String[] args) {
// TODO Auto-generated method stub
//获取字符串的长度
String str=new String("helloworld");
int length=str.length();
System.out.println(length);
//查找字符串里第一次出现该元素的位置indexOf
int indexof=str.indexOf("l");
System.out.println(indexof);
//查找字符串里最后一次出现该元素的位置lastIndexOf `
int lastIndexof=str.lastIndexOf("l");
System.out.println(lastIndexof);
//获取指定索引号的字符
char charAt=str.charAt(3);
System.out.println(charAt);
}
}
10.4
package string;
public class Ref {
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
String str="hello world";
char mychar=str.charAt(6);//charAT方法
System.out.println("字符串str中索引位置是6的字符为:"+mychar);//打印
}
}
10.5
public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//10.4字符串操作
//获取字串
String str=new String("helloworld");
String substring1=str.substring(3);
System.out.println(substring1);
String substring2=str.substring(1,5);
System.out.println(substring2);
}
}
10.6
//去除空格S
String st=" java class ";
System.out.println(st+"长度为"+st.length());
String s=st.trim();//Trinidad方法
String s1=s.replace(" ", "");//去掉空格
System.out.println(st+"长度为"+s.length());
10.7
public class NewStr{
public static void main(String args[]) {
String stri="address";//创建String类型的变量
String replace=stri.replace("d", "D");//替换
System.out.println(replace);//打印替换后的结果
10.8
public class StartOrEnd{
public static void main(String args[]) { //主方法
String num1="22045614";
boolean b1=num1.startsWith("22");//用布尔类型判段
System.out.println(b1);//打印
//判断字符串结尾
String num2="20045614";
boolean b2=num2.startsWith("22");
System.out.println(b2);//打印
10.9
//判断字符串是否相等
String str1=new String("abc");
String str2=new String("abc");
boolean b=(str1==str2);
System.out.println(b);
boolean equals=str1.equals(str2);
System.out.println(equals);
String str3=new String("ABC");
boolean equalsIgnoreCase=str1.equalsIgnoreCase(str3);
System.out.println(equalsIgnoreCase);
10,10
//按照unicode的值去比较两个字符串的顺序
//前和后作比较返回-1
//后和前作比较返回1
//相同值作比较返回0
String st1="a";
String st2="b";
String st3="c";
System.out.println(st1.compareTo(st2));
System.out.println(st2.compareTo(st2));
System.out.println(st2.compareTo(st1));
10.11
//字符串中字母大小写转换
String s2="Oh my God!";
System.out.println(s2.toLowerCase());//转小写
System.out.println(s2.toUpperCase());//转大写
10.12
//字符串的分割
String strin="192.168.0.1";
String[]split1=strin.split("\\.");
for(String temp :split1) {
System.out.println(temp);
}
//第二种方法
String[] split2=strin.split("\\.",2);
for(String temp:split2) {
System.out.println(temp);
}
}
}
10.13
//日期与时间格式化
Date date=new Date();
System.out.println(date);
//日期格式化
String year=String.format("%tY",date);
String mouth=String.format("%tm",date);
String day=String.format("%td",date);
System.out.println(year+"年"+mouth+"月"+day+"日");
//时间格式化
String hour=String.format("%tH",date);
String minute=String.format("%tM",date);
String second=String.format("%tS",date);
System.out.println(hour+"时"+minute+"分"+second+"秒");
10.14
//常见的日期时间组合格式化
String dateFormat=String.format("tF", date);
String timeFormat=String.format("tT", date);
System.out.println(dateFormat + " " + timeFormat);
10.15
//常见类型格式化
String str=String.format("%d" ,400/2);
String str2=String.format("%b" ,3>5);
String str3=String.format("%x" ,200);
System.out.println("400的一半是:"+str);
System.out.println("3>5正确吗:"+str2);
System.out.println("200的十六进制数是:"+str3);
10.16
package string;
public class Jodge {
public static void main(String[] args) {
// TODO Auto-generated method stub
String regex="\\w+@\\w+(\\.\\w}2,3}}*\\.\\w{2,3 }";
String str1="aaa&";
String str2="aaaaa";
String str3="1111@111ffyu.dfg.com";
if(str1.matches(regex)) {
System.out.println(str1+"是一个合法的·E-mail地址格式");}
if(str2.matches(regex)) {
System.out.println(str2+"是一个合法的·E-mail地址格式");}
if(str3.matches(regex)) {
System.out.println(str3+"是一个合法的·E-mail地址格式");}
10.17
//常见类型格式化
String str=String.format("%d" ,400/2);
String str2=String.format("%b" ,3>5);
String str3=String.format("%x" ,200);
System.out.println("400的一半是:"+str);
System.out.println("3>5正确吗:"+str2);
System.out.println("200的十六进制数是:"+str3);
10.18
package string;
public class Jerque {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "";
long starTime = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
str = str + i;
}
long endTime = System.currentTimeMillis();
long time = endTime - starTime;
System.out.println("String 消耗时间:" + time);
StringBuilder builder = new StringBuilder("");
starTime = System.currentTimeMillis();
for (int j = 0; j < 10000; j++) {
builder.append(j);
}
endTime = System.currentTimeMillis();
time = endTime - starTime;
System.out.println("StringBuilder 消耗时间:" + time);
}
}