*:0次或多次。+一次或多次
注意,"."在正则表达式中有其他含义所以要用[ ]起来
在以后开发中如果要反复出现拼字符串,不要使用string+
如果需要反复拼接字符串,用stringBuffer
去掉空格,用trim只去掉两边空格
判断字符串开头和结尾用(startsWith)(endsWith)
替换:用replace
static:
1:修饰变量。变量存在静态存储区,被多个实列共享可以用类名直接访问。java中常量变量静态变量跟随类加载而加载生命类创建和消亡
2:可以修饰方法,静态方法可以用类名直接调用,一般工具类的方法都是静态的方便使用,不能有this关键字,原因当静态函数加载时this对应实例还没创建静态方法不能访问非静态变量
stati还可以修饰代码块
普通代码块比构造函数先执行,每块创建都可以执行
静态代码块值执行一次,比普通代码块更早执行。
/**
String类:
1.java.lang包中的类不用引入包,直接使用。
*/
import java.io.*;
class JavaDemo22
{
public static void main(String[] args)
{
/*
String info1 = "我是好人!";
String info2 = "我是好人!";
//判断相等,要注意是地址相等还是内容相等。
//java对直接使用字符串类型做了优化,当两个变量值相同时,第二变量不再新开辟空间
if(info1 == info2){//==是判断地址相等
System.out.println("地址相等!");
}
String data1 = new String("你是坏人!");
String data2 = new String("你是坏人!");
if(data1 == data2){
System.out.println("地址相等");
}else{
System.out.println("地址不相等");
}
//比较字符串内容相等
if(data1.equals(data2)){
System.out.println("内容相等");
}else{
System.out.println("内容不相等");
}
String data = "我爱我的祖国,她美丽又强大!";
System.out.println(data.charAt(5));
String email = "haoren@sina.com";
if(email.matches("\\w+@\\w+.\\w+")){
System.out.println("邮箱合法!");
}else{
System.out.println("邮箱不合法!");
}
//用户名的规矩:6-18 只能是数字,大小写字母和下划线
String username = "haor";
if(username.matches("\\w{6,18}")){
System.out.println("用户名合法");
}else{
System.out.println("用户名不合法");
}
//电话:13688341235,//11位的数字,第一位以1开头
String tel = "13688341235";
if(tel.matches("^1\\d{10}")){
System.out.println("电话号码合法");
}else{
System.out.println("号码不合法");
}
*/
//字符的分割
String address = "www.sina.com";
//System.out.println(".");
//注意:"."在正则表达式中有其他的含义,所有要[.]
String[] s = address.split("[.]");
System.out.println(s.length);
for(String x:s){
System.out.println(x);
}
String path = "C:\\Windows\\System32\\cmd.exe";
//方法一:
/*
String path1 = "c:"+File.separator+"Windows"+File.separator+"System32"+File.separator+"cmd.exe";
//System.out.println(path1);
//String[] paths = path.split("\\\\");
//System.out.println(paths.length);
String[] paths = path1.split("\\\\");//这里写四个斜杆因为这里是正则表达式,要\\代表一个\
System.out.println(paths[3]);
System.out.println(File.separator);
*/
//方法二:
int index = path.lastIndexOf("\\");//这里的参数不是正则表达
//System.out.println(index);
String temp = path.substring(index+1);
System.out.println(temp);
//判读字符串的开头和结尾
String data = "我爱我的祖国";
System.out.println(data.startsWith("我"));
System.out.println(data.endsWith("好人"));
//String的效率问题
String data1 = "我";
data1 = data1+"是好人!";//在以后的开发中如果出现反复拼字符串不使用Sring +
System.out.println(data1);
//如果需要反复拼接字符串,用StringBuffer
StringBuffer sb = new StringBuffer("我");
System.out.println(sb);
sb.append("是好人!");
System.out.println(sb);
//去掉空格
//trim()只会去掉两边、
String username = " ha ha ";
System.out.println(" ha ha ");
System.out.println(username.trim()+123);
//替换
String data3 = "啊,祖国,我爱你啊";
System.out.println(data3.replace("啊","ha"));
}
}
/**
static还可以修饰代码块
*/
class JavaDemo24
{
private static int num = 2;
public static void main(String[] args)
{
//int num = 4;
//{
// int num =3;
// System.out.println(num);
//}
//System.out.println(num);
TestDemo td1 = new TestDemo();
TestDemo td2 = new TestDemo();
TestDemo td3 = new TestDemo();
}
}
//普通代码块比构造函数先执行,每次创建实例都可以执行。
//静态代码块,只执行一次,比普通代码块更早执行。静态代码块中也不能访问非静态变量。
class TestDemo
{
//普通代码块
{
System.out.println("普通代码块!");
}
//静态代码块
private static String name= "haoren";
static{
System.out.println("静态代码块!"+name);
}
public TestDemo(){
System.out.println("构造函数");
}
}