黑马程序员_特殊的对象---字符串 、正则表达式、基本数据类型

---------------------- android培训 、 java培训 、 期待与您交流! ----------------------


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以后,基本数据类型对象包有了一个新特性。

        自动装箱拆箱。


---------------------- android培训 、 java培训 、 期待与您交流! ----------------------
详细请查看:www.itheima.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值