黑马程序员——学习日记7——常用类API

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

       一、String类

           String

              特点:字符串对象一旦被初始化就不会被改变。          

 String s = new String();     //等效于String s = "";  不等效String s = null;

             这是因为String s = new String();是在创建s时已经给s赋值为空的字符串,即“”。而String s = null;在创建s时,并没有给s给赋值,这里的s没有指定任何字符串。

public static void stringDemo2() {
    String s = "abc";               //创建一个字符串对象在常量池中。
    String s1 = new String("abc");  //创建两个对象一个new一个字符串对象在堆内存中。
    System.out.println(s==s1);      //false   ==比较的是等号右边的两个值的地址,所以两者不相等
    System.out.println(s.equals(s1));
    //string类中的equals复写Object中的equals建立了string类自己的判断字符串对象是否相同的依据。其实就是比较字符串内容。
} 
            String类中的方法及使用:

            1,获取:
            1.1  获取字符串中字符的个数(长度).
                 int length();
            1.2  根据位置获取字符。
                 char charAt(int index);
            1.3  根据字符获取在字符串中的第一次出现的位置.
                 int indexOf(int ch)
                 int indexOf(int ch,int fromIndex):从指定位置进行ch的查找第一次出现位置
                 int indexOf(String str);
                 int indexOf(String str,int fromIndex);
                   根据字符串获取在字符串中的第一次出现的位置.
                 int lastIndexOf(int ch)
                 int  lastIndexOf(int  ch,int  fromIndex):从指定位置进行ch的查找第一次出现位置
                 int lastIndexOf(String str);
                 int lastIndexOf(String str,int fromIndex);
            1.4  获取字符串中一部分字符串。也叫子串.
                 String substring(int beginIndex, int endIndex)//包含begin  不包含end  。
                 String substring(int beginIndex);
             2,转换。
             2.1  将字符串变成字符串数组(字符串的切割)
                 String[] split(String regex):涉及到正则表达式.
             2.2  将字符串变成字符数组。
                 char[] toCharArray();
             2.3  将字符串变成字节数组。
                 byte[] getBytes();
             2.4  将字符串中的字母转成大小写。
                 String toUpperCase():大写
                 String toLowerCase():小写
             2.5  将字符串中的内容进行替换
                 String replace(char oldch,char newch);
                 String replace(String s1,String s2);
             2.6  将字符串两端的空格去除。
                 String trim();
             2.7  将字符串进行连接  。
                 String concat(string);
             3,判断
             3.1  两个字符串内容是否相同啊?
                 boolean equals(Object obj);
                 boolean equalsIgnoreCase(string str);忽略大写比较字符串内容。
             3.2  字符串中是否包含指定字符串?
                 boolean contains(string str);
             3.3  字符串是否以指定字符串开头。是否以指定字符串结尾。
                 boolean startsWith(string);
                 boolean endsWith(string);
             4,比较。

                 System.out.println("abc".compareTo("aqz"));

/* 3,两个字符串中最大相同的子串。
 * "qwerabcdtyuiop"
 * "xcabcdvbn"
 * 
 *  思路:
 * 1,既然取得是最大子串,先看短的那个字符串是否在长的那个字符串中。
 *  如果存在,短的那个字符串就是最大子串。
 * 2,如果不是呢,那么就将短的那个子串进行长度递减的方式去子串,去长串中判断是否存在。
 *  如果存在就已找到,就不用在找了。
 */

public class Test3 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String s1 = "qwerabcdtyuiop";
		String s2 = "xcabcdvbn";
		String s = getMaxSubstring(s2, s1);
		System.out.println("s=" + s);
	}

	/**
	 * 获取最大子串
	 * 
	 * @param s1
	 * @param s2
	 * @return
	 */
	public static String getMaxSubstring(String s1, String s2) {
		String max = null, min = null;
		max = (s1.length() > s2.length()) ? s1 : s2;
		min = max.equals(s1) ? s2 : s1;
		System.out.println("max=" + max);
		System.out.println("min=" + min);
		for (int i = 0; i < min.length(); i++) {
			for (int a = 0, b = min.length() - i; b != min.length() + 1; a++, b++) {
				String sub = min.substring(a, b);
				// System.out.println(sub);
				if (max.contains(sub))
					return sub;
			}
		}
		return null;
	}
}
           StringBuffer:字符串缓冲区,用于存储数据的容器。
              特点:

                 1,长度的可变的。  
                 2,可以存储不同类型数据。
                 3,最终要转成字符串进行使用。
                 4,可以对字符串进行修改。

             StringBuffer类中的方法及使用:

                 1,添加:
                    StringBuffer append(data);
                    StringBuffer insert(index,data);
                 2,删除:
                    StringBuffer delete(start,end):包含头,不包含尾。
                    StringBuffer deleteCharAt(int index):删除指定位置的元素
                 3,查找:
                    char charAt(index);
                     int indexOf(string);
                     int lastIndexOf(string);
                 4,修改:
                     StringBuffer replace(start,end,string);
                     void setCharAt(index,char);
                
                  增删改查(CURD):  C(create)U(update)R(read)D(delete)

           StringBuilder

              jdk1.5以后出现了功能和StringBuffer一模一样的对象。就是StringBuilder
              不同的是:
               StringBuffer是线程同步的。通常用于多线程。
               StringBuilder是线程不同步的。通常用于单线程。  它的出现提高效率。

       二、包装类及方法使用

       基本数据类型对象包装类。为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作。用于描述该对象的类就称为基本数据类型对象包装类。

       byte   --->   Byte
       short  --->   Short
       int      --->   Integer
       long   --->   Long
       float   --->   Float
       double--->  Double
       char   --->  Character
       boolean--->Boolean
      
       该包装对象主要用基本类型和字符串之间的转换。
       基本类型--->字符串
          1,基本类型数值+""
          2,用String类中的静态方法valueOf(基本类型数值);
          3,用Integer的静态方法valueO(基本类型数值);
      
       字符串--->基本类型
          1,使用包装类中的静态方法  xxx parseXxx("xxx类型的字符串");*****
             int parseInt("intstring");
             long parseLong("longstring");
             boolean parseBoolean("booleanstring");
             只有Character没有parse方法
         2,如果字符串被Integer进行对象的封装。
             可使用另一个非静态的方法,intValue();将一个Integer对象转成基本数据类型值。

       自动装箱与拆箱:

          装箱:将基本数据类型转换成对象

          拆箱:将对象转换成基本数据类型

Integer num = 10; //装箱

int num1 = num;   //拆箱

          jdk1.5以后,自动装箱,如果装箱的是一个字节,那么该数据会被共享不会重新开辟空间。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值