1、 String类:由于在实例开发中对字符串的操作非常多,所以Java就把字符串进行了封装,描述成一个特殊的类,即String类以方便于程序员开发的方便;
2、字符串String:
字符串是一个特殊的对象
字符串是常量,一旦被初始化,就不可以被改变
3、 字符串常用的功能:
a. 字符个数。length
b.查找一个字符出现的位置。如果没有这个字符呢?返回-1.
int char indexOf
lastIndexOf
c. 根据位置获取字符。如果没有该位置呢?
char int
char charAt(index);
d. 将字符串转成大、小写。
String toUpperCase();
String toLowerCase();
e. 判断字符串的开头,结尾。
boolean startWith(string);
boolean endsWith(string);
f. 字符串中是否包含指定字符串。
boolean contains(string);
g. 截取一部分字符串。
String substring(int start,int end)
h. 将字符串中的c替换成n。如果字符串中没有c呢?
String replace(char char)
i. 比较大小
记住基本数值比较大小用比较运算符 > <
大写比较大小使用的是方法 其中一个就是 compareTo();返回的是 正数 、负数、0.
4、 常用功能演示:
public class StringMethodDemo {
public static void main(String[] args) {
String str = "abcdeabc";
//1,获取a字母出现的位置。
System.out.println("indexOf('a')="+str.indexOf('a'));//0
System.out.println("lastindexOf('a')="+str.lastIndexOf('a'));//5
//2,获取角标3上的字符。
//System.out.println("charAt(3)="+str.charAt(30));//d//StringIndexOutOfBoundsException
//3,将字符串转成大写
String s1 = str.toUpperCase();
System.out.println("uppercase="+s1);//ABCDEABC
//4,该字符串是否已Demo开头,是否以.java结束。
boolean b1 = str.endsWith(".java");
boolean b2 = str.startsWith("Demo");
//5,该字符串中是否包含cd字符串。
System.out.println("contains(\"cd\")="+str.contains("cd"));//true
//6,截取2,5之间的字符串。
System.out.println("substring(2,5)="+str.substring(2,5));//cde
//7,将字符串中的a替换成k。
System.out.println("replace('a','k')="+str.replace('a', 'k'));//kbcdekbc
//8,字符串比较大小。
System.out.println("compareTo(\"aaa\")="+str.compareTo("abc"));
}
}
5、 可变数组:StringBuffer 字符串缓冲区
特点:
1.可以存储任意类型的数据;
2.长度不确定;
3.无论存储什么类型的元素,最终都会变成字符串。
容器常见功能:
1.添加,插入,append, insert
2.删除
3.替换
6、StringBuilder 用法与StringBuffer一模一样
JDK1.5版本出现了StringBuilder
StringBuffer是线程安全的;
StringBuilder是线程不安全的。
7、正则表达式:就是用操作字符串数据的规则表达式。
规则:就是用一些符号组成,每个符号都代表着特有的含义。
其实这些符号相当于对应着底层一段代码。对外提供符号就是简化了操作。
弊端:必须要先学习这些符号。符号多了,阅读性会较差。
8、 字符范围:[] 字符次数:{}
9、正则表达式对字符串的常见操作:
a. 匹配:使用的是String类中的matchers方法。
b. 切割:使用的是String类中的split方法。
c. 替换:使用的是String类中的replaceAll方法。
d. 获取:将匹配的规则的内容获取出来。
10、 正则演示:
/*
* 我我....我....我我..我我..我..要要..要要..要要..要要学..学学学..学学..学编编..编编编.编程程.....程...程程...程程..程程
* 把它还原成 我要学编程。
*/
public static void test1(){
String str = "我我....我....我我..我我..我..要要..要要..要要..要要学..学学学..学学..学编编..编编编.编程程.....程...程程...程程..程程";
/*
* 使用正则的替换功能。
* 1,将 . 去掉。
* 2,将叠词变成一个。
*/
str = str.replaceAll("\\.+", "");
System.out.println(str);
str = str.replaceAll("(.)\\1+", "$1");
System.out.println(str);
}
/*
* 10.10.10.10 192.168.1.200 3.3.3.3 127.0.0.108
* 对ip地址排序。
*/
public static void test2(){
String ip = "10.10.10.10 192.168.1.200 3.3.3.3 127.0.0.108";
/*
* 为了排序方便,每一段都补两个零。保证每一段至少三位。
* 替换就可以了。
*/
ip = ip.replaceAll("(\\d+)", "00$1");
System.out.println(ip);
//将每一段都保留最后三位。
ip = ip.replaceAll("0*(\\d{3})", "$1");
System.out.println(ip);
String[] ips = ip.split(" +");
Arrays.sort(ips);
for(String x : ips){
System.out.println(x.replaceAll("0*(\\d+)", "$1"));
}
}
/*
* 对邮件地址进行校验。
*/
public static void test3(){
String mail = "abc123@sina.com.cn";
String reg = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]{2,}){1,3}";
reg = "\\w+@\\w+(\\.\\w+)+";//1@1.1
//mail.indexOf("@")!=-1
boolean b = mail.matches(reg);
System.out.println(mail+":"+b);
}
11、使用正则表达式对象。Pattern实用步骤:
a. 先将正则表达式编译成Pattern对象。
b. 通过Pattern对象的matcher方法获取Matcher匹配器对象。
c. 通过匹配器对象的方法,将正则规则作用到字符串上以便于操作。
12、 正则对象演示:
public static void getString(){
String str = "da jia zhu yi la ,ming tian fang jia la!";
System.out.println(str);
//1,定义规则。
String reg = "\\b[a-z]{3}\\b";
//2,将规则编译成正则对象。
Pattern p = Pattern.compile(reg);
//3,通过正则对象获取匹配器对象,并和被操作的字符串相关联。
Matcher m = p.matcher(str);
//4, 通过匹配器对象的方法对字符串进行规则的匹配。
// boolean b = m.find();
// System.out.println(b);
// System.out.println(m.group());
while(m.find()){
System.out.println(m.start()+"..."+m.group()+"...."+m.end());
}
}
13、 基本数据类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
该对象常见场景:
在基本数值和字符串之间做转换。
基本类型值--->字符串 用加好(+)连接后就是字符串 String.valueof(基本数据类型值) static 字符串toString(基本数据类型)
字符串--->基本类型值 返回基本类型(参数是字符串)
static XXX parseXXX(字符串)
十进制--->其他进制
System.out.println(Integer.toBinaryString(-6));
System.out.println(Integer.toHesString(-6));
其他进制--->十进制
System.out.println(Integer.parseInt("110",2));
基本数据类型--->对象 装箱
Integer i=new Integer(23);
Integer ii=Integer.valueof(23);
对象--->基本数据类型 拆箱
int num=i.intValue();
JDK1.5以后,基本数据类型对象包有了一个新特性。
自动装箱拆箱。