学习Java常用类的个人笔记

一. String类

1. String:代表不可变的字符序列。底层使用 char[] 存放。

2. String 是 final 的。

3.

public class TestString {
	@Test
	public void test(){
		String str1="A";
		String str2="B";
		String str3="A"+"B";
		String str4=str1+str2;
		System.out.println(str3==str4);// 返回false
		str4=str4.intern();
		System.out.println(str3==str4);// 返回false
		Person p1=new Person("AA");
		Person p2=new Person("AA");
		System.out.println(p1.name==p2.name);// 返回为 true
	}

}
class Person{
	String name;
	public Person(String name) {
		this.name=name;
	}
}

4.

/*
 * public int length() public char charAt(int
 * index):返回在指定index位置的字符。index从0开始 public boolean equals(Object
 * anObject):比较两个字符串是否相等。相等返回true。否则返回false public int compareTo(String
 * anotherString) public int indexOf(String s):返回s字符串在当前字符串中首次出现的位置。若没有,返回-1
 * public int indexOf(String s ,int
 * startpoint):返回s字符串从当前字符串startpoint位置开始的,首次出现的位置。 public int
 * lastIndexOf(String s):返回s字符串最后一次在当前字符串中出现的位置。若无,返回-1 public int
 * lastIndexOf(String s ,int startpoint) public boolean startsWith(String
 * prefix):判断当前字符串是否以prefix开始。 public boolean endsWith(String
 * suffix):判断当前字符串是否以suffix结束。 public boolean regionMatches(int
 * firstStart,String other,int otherStart ,int length):
 * 判断当前字符串从firstStart开始的子串与另一个字符串other从otherStart开始,length长度的字串是否equals
 */
@Test
public void test3() {
	String str1 = "abccdefghijkbcc";
	String str2 = "bcc";
	String str3 = "jkbcc";
	System.out.println(str2.length());
	System.out.println(str1.charAt(10));
	System.out.println(str1.equals(str2));
	System.out.println(str2.equals("abcc"));
	System.out.println(str1.compareTo(str2));
	System.out.println(str1.indexOf(str2, 5));
	System.out.println(str1.lastIndexOf(str2));
	System.out.println(str1.startsWith("abcd"));
	System.out.println(str1.regionMatches(10, str3, 0, str3.length()));

}

5.

/*
 * 	public String substring(int startpoint)
	public String substring(int start,int end):返回从start开始到end结束的一个左闭右开的子串。start可以从0开始的。
	pubic String replace(char oldChar,char newChar)
	public String replaceAll(String old,String new)
	public String trim():去除当前字符串中首尾出现的空格,若有多个,就去除多个。
	public String concat(String str):连接当前字符串与str
	public String[] split(String regex):按照regex将当前字符串拆分,拆分为多个字符串,整体返回值为String[]

 */
@Test
public void test4() {
	String str1 = "北京尚硅谷教育北京";
	String str2 = "上海尚硅谷教育";
	String str3 = str1.substring(2, 5);
	System.out.println(str3);
	System.out.println(str1);
	String str4 = str1.replace("北京", "东京");
	System.out.println(str4);// 东京尚硅谷教育东京
	System.out.println(str1);// 北京尚硅谷教育北京
	String str5 = "   abc   d  ";
	String str6 = str5.trim();
	System.out.println("----" + str6 + "----");
	System.out.println("----" + str5 + "----");
	String str7 = str1.concat(str2);
	System.out.println(str1);
	System.out.println(str7);
	System.out.println();
	
	String str8 = "abc*d-e7f-ke";
	String[] strs = str8.split("-");
	for(int i = 0;i < strs.length;i++){
		System.out.println(strs[i]);
	}

}

6.

/*
 * 1.字符串 与基本数据类型、包装类之间转换
 * ①字符串 --->基本数据类型、包装类:调用相应的包装类的parseXxx(String str);
 * ①基本数据类型、包装类--->字符串:调用字符串的重载的valueOf()方法
 * 
 * 2.字符串与字节数组间的转换
 * ①字符串---->字节数组:调用字符串的getBytes()
 * ②字节数组---->字符串:调用字符串的构造器
 * 
 * 3.字符串与字符数组间的转换
 * ①字符串---->字符数组:调用字符串的toCharArray();
 * ②字符数组---->字符串:调用字符串的构造器
 */
@Test
public void test5(){
	//1.字符串 与基本数据类型、包装类之间转换
	String str1 = "123";
	int i = Integer.parseInt(str1);
	System.out.println(i);
	String str2 = i + "";
	str2 = String.valueOf(i);
	System.out.println(str2);
	System.out.println();
	//2.字符串与字节数组间的转换
	String str = "abcd123";
	byte[] b = str.getBytes();
	for(int j = 0;j < b.length;j++){
		System.out.println((char)b[j]);
	}
	String str3 = new String(b);
	System.out.println(str3);
	System.out.println();
	//3.字符串与字符数组间的转换
	String str4 = "abc123中国人";
	char[] c = str4.toCharArray();
	for(int j = 0;j < c.length;j++){
		System.out.println(c[j]);
	}
	String str5 = new String(c);
	System.out.println(str5);
}

二. StringBuffer 类 & StringBuilder 类

/*
 * java.lang.StringBuffer:可变的字符序列
 * java.lang.StringBuilder:可变的字符序列,是jdk5.0新加入的,线程不安全,效率要高于StringBuffer.
 */
public class TestStringBuffer {
	/*
	 * 对比String,StringBuffer,StringBuilder三者在添加上的效率:
	 * 效率从高到底: StringBuilde > StringBuffer > String
	 */
	@Test
	public void test3(){
		String text = "";
		long startTime = 0L;
		long endTime = 0L;
		StringBuffer buffer = new StringBuffer("");
		StringBuilder builder = new StringBuilder("");
		
		startTime = System.currentTimeMillis();
		for(int i = 0;i<20000;i++){
		buffer.append(String.valueOf(i));}
		endTime = System.currentTimeMillis();
		System.out.println("StringBuffer的执行时间:"+(endTime-startTime));
		
		startTime = System.currentTimeMillis();
		for(int i = 0;i<20000;i++){
		builder.append(String.valueOf(i));}
		endTime = System.currentTimeMillis();
		System.out.println("StringBuilder的执行时间:"+(endTime-startTime));
		
		startTime = System.currentTimeMillis();
		for(int i = 0;i<20000;i++){
		text = text + i;}
		endTime = System.currentTimeMillis();
		System.out.println("String的执行时间:"+(endTime-startTime));

	}
	
/*
 * java.lang.StringBuffer和StringBuilder:代表可变的字符序列,可以对字符串内容进行增删
 * 
 *  StringBuffer append(String s),   StringBuffer append(int n) ,  
 StringBuffer append(Object o) ,  StringBuffer append(char n),
 StringBuffer append(long n),  StringBuffer append(boolean n),
 StringBuffer insert(int index, String str) 
 public StringBuffer reverse() :反转此StringBuffer
 StringBuffer delete(int startIndex, int endIndex) 
 public char charAt(int n )
 public void setCharAt(int n ,char ch)
 StringBuffer replace( int startIndex ,int endIndex, String str) 
 public int indexOf(String str)
 public String substring(int start,int end)
 public int length()

 总结:添加:append() 删除:delete(int i,int j) 修改:setCharAt(int index,char ch) 查 charAt(int n);
 插入:insert(int index,String str)  反转:reverse() 长度:length()

 */
	@Test
	public void test1() {
		StringBuffer sb = new StringBuffer();
		System.out.println(sb.length());
		sb.append("abc").append("123").append(true);

		// ArrayList list = new ArrayList();
		System.out.println(sb); // HK WC
		sb.insert(3, "hello");
		System.out.println(sb);

		StringBuffer sb1 = sb.reverse();
		System.out.println(sb1);
		System.out.println(sb);
	}
}

三. 时间相关的类

/*
 * 与时间相关的类:
 * 1.System 类下的currentTimeMillis();
 * 2.Date类:java.util.Date 
 *    如何创建其实例;其下的方法:toString()、getTime()
 *    (以及其子类java.sql.Date)
 * 3.SimpleDateFormat类
 * 4.Calendar类
 */
public class TestDate {
	
	
	//日历:Calendar类   get()/add()/set()/Date getTime()/setTime(Date d)
	@Test
	public void test4(){
		Calendar c = Calendar.getInstance();
		int day = c.get(Calendar.DAY_OF_MONTH);
		System.out.println(day);
		
		c.add(Calendar.DAY_OF_MONTH, -2);
		day = c.get(Calendar.DAY_OF_MONTH);
		System.out.println(day);
		
		c.set(Calendar.DAY_OF_MONTH, 23);
		Date d = c.getTime();
		System.out.println(d);
		
	}
	
	
	/*
	 * “三天打渔两天晒网”  1990-01-01  XXXX-XX-XX 打渔?晒网?
	 */
	//返回date1与date2之间的天数,date1早于date2
	public int getDays(String date1,String date2) throws ParseException{
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date d1 = sdf.parse(date1);
		Date d2 = sdf.parse(date2);
		long milliTime = d2.getTime()-d1.getTime();
		return (int)milliTime/1000/3600/24 + 1;
		
	}
	
	@Test
	public void test3() throws ParseException{
		String str1 = "1990-01-01";
		String str2 = "1990-01-06";
		int dates = getDays(str1,str2);
		
		if(dates % 5 == 0 || dates % 5 == 4){
			System.out.println("晒网");
		}else{
			System.out.println("打渔");
		}
	}
	
	/*
	 * java.text.SimpleDateFormat类易于国际化
	 * 格式化:日期--->文本 使用SimpleDateFormat的format()方法
	 * 解析:文本--->日期 使用SimpleDateFormat的parse()方法
	 */
	@Test
	public void test2() throws Exception{
		//1.格式化1
		SimpleDateFormat sdf = new SimpleDateFormat();
		String date = sdf.format(new Date());
		System.out.println(date);//14-5-12 下午3:24
		//2.格式化2
		SimpleDateFormat sdf1 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
		date = sdf1.format(new Date());
		System.out.println(date);//星期一, 12 五月 2014 15:29:16 +0800
		
		//3.解析:
		Date date1 = sdf.parse("14-5-12 下午3:24");
		System.out.println(date1);
		
		date1 = sdf1.parse("星期一, 12 五月 2014 15:29:16 +0800");
//		date1 = sdf1.parse("14-5-12 下午3:24");
		System.out.println(date1);
	}
	//java.util.Date不易于国际化
	@Test
	public void test1(){
//		java.sql.Date d2 = new java.sql.Date(15342515326235L);
//		System.out.println(d2);//2456-03-08
		//创建一个Date的实例
		Date d1 = new Date();
		System.out.println(d1.toString());//Mon May 12 15:17:01 CST 2014
		System.out.println(d1.getTime());//1399879144434
		Date d2 = new Date(1399879144434L);
		System.out.println(d2);
	}
}

四. 数学类

Math 类:提供了一系列静态方法用于科学计算

BigInteger 类:数字范围比 Integer 类的数字范围要大得多,可以支持任意精度的整数

BigDecimal 类:用于商业计算,要求精度比较高,支持任何精度的定点数

猜你喜欢

转载自blog.csdn.net/qq_36797286/article/details/81222587