第六章 常用类

版权声明:转载麻烦告知。 https://blog.csdn.net/qq_40064948/article/details/81741946

一、String

StringBuilder可变字符串,线程不太安全,但效率高,推荐使用。

StringBuffer可变字符串,线程安全,但效率低,不推荐使用。

String是不可变字符串,根据实际情况使用。

1.1String类

length()

返回字符串的长度

String s1  = new String("abcdef");

s1.length();

//-->>6

charAt(int index)

返回对应索引的值

String s1  = new String("abcdef");

s1.charAt(2);

//-->>c

equals(String str)

判断是否相等

String s1  = new String("abcdef");

String s2 = new String("a");

String s3 = new String("a");

s1.equals(s2);

s2.equalse(s3);

//-->>false   true

isEmpty()

判断是否为空

String s1  = new String("abcdef");

s1.isEmpty();

//-->>false 不为空

indexOf(int ch)

存在返回0,不存在返回-1

String s1  = new String("abcdef");

s1.indexOf('b');

//-->>0 char字符可以自动转换成int 所以传入字符是成立的

substring(int index)

返回传入索引之后的字符串

String s1  = new String("abcdef");

s1.substring(2);

//-->>cdef从索引2开始截取

replace()

替换指定的字符

String s1  = new String("abcdef");

s1.replace('e', '*');

//-->>abcd*f

split(String regex)

根据指定正则表达式拆分字符串

String s4 = new String"qwer,awds,dd";

String[] strArray = s5.split(",");

//-->>strArray 为一个String类型的数组 里面存放的是用“,”分隔的qwer awsd dd三个字符串

trim()

返回字符串的副本,忽略前导空白和尾部空白

String s5 = "  bb  aa  ";

String s55 = s5.trim();

System.out.println(s55.length());

//-->>s55中的字符串为bb  aa 长度为6

equalsIgnoreCase(String s)

将此String与另一个String比较,不考虑大小写

System.out.println("Abc".equalsIgnoreCase("abc"));

//-->>true

lastIndexOf(String s)

返回指定子字符串在此字符串中最右边出现处的索引

System.out.println("Abcbd".lastIndexOf('b'));

//-->>3

startWith(String s)

测试此字符串是否以指定的前缀开始。

System.out.println("Abcbd".startsWith("Ab"));

//-->>true

endsWith(String s)

测试此字符串是否以指定的后缀结束。

System.out.println("Abcbd".endsWith("bd"));

//-->>true

toLowerCase()

使用默认语言环境的规则将此 String 中的所有字符都转换为小写。

System.out.println("Abcbd".toLowerCase());

//-->>abcbd

toUpperCase()

将此 String 中的所有字符都转换为大写。

System.out.println("Abcbd".toUpperCase());

//-->>ABCBD

1.2 StringBuilder与StringBuffer

StringBuilder与StringBuffer的区别,StringBuilder与String的区别:StringBuilder效率高,线程不安全,StringBuffer效率低,线程安全。String是不可变字符串,StringBuilder是可变字符串。如果是简单的声明一个字符串没有后续过多的操作,使用String,StringBuilder均可,若后续对字符串做频繁的添加,删除操作,或者是在循环当中动态的改变字符串的长度应该用StringBuilder,使用String会残生多余的字符串,占用内存空间。

String的源代码中核心数组private final char value[];为private封装之后,不让我们去做改变,StringBuilder中如果是public那么我们就可以随意操作,但是default,只有同包可以操作。StringBuilder能动态的扩容。

public class StringBuilderTest {
	public static void main(String[] args) {
	System.out.println("**StringBuilder*********************");
		//字符数组长度初识为16
		StringBuilder sb = new StringBuilder();
		//字符数组长度初识为32
		StringBuilder sb1 = new StringBuilder(32);
		//字符数组长度初始为32,value[]={'a','b','c'}
		StringBuilder sb2 = new StringBuilder("abc");
		//往sb2里面追加字符串 true也被认定为字符串往里追加
		sb2.append("def");
		//append返回的是 this 所以可以一直.append() 通过return this行程方法链
		sb2.append(true).append(321).append("随便");
		//虽然StringBuilder的长度为32 。expandCapacity(int minmumCapacity)这个方法便是源代码中的自动扩容方法。但是数组的大小是固定的不能改变的 所以在这个方法中实现的也是数组的copy返回的是一个新的大小的数组
		StringBuilder gh = new StringBuilder("a");
		for(int i = 0 ; i < 1000; i++){
			gh.append(i);
		}
		System.out.println(sb2);
		//删除 包头不包尾 从1索引删到第3个索引
		//同样也是一个方法链 删除13后返回的是一个新的String任然有13
		sb2.delete(1, 3).delete(1, 3);
		System.out.println(sb2);
		//在第二个索引插入 "哈哈"
		sb2.insert(2, "哈哈");
		System.out.println(sb2);
		//翻转
		sb2.reverse();
		System.out.println(sb2);
	System.out.println("**StringBuffer**********************");
		//与StringBuilder的方法相同 唯一不同变是 StringBuffer是线程安全的
	}
}

二、Date

2.1常用方法

public class Test {
	public static void main(String[] args) {
		Date d=new Date();
		System.out.println(d);
		//方法加横线:  过期方法  废弃方法  不建议你用  
		System.out.println(d.toGMTString());
		System.out.println(d.toLocaleString());
		
		System.out.println(d.getYear());//118+1900  2018-1900=118
		System.out.println(d.getMonth());//7:返回的值在 0 和 11 之间,值 0 表示 1 月。 
		System.out.println(d.getDate());//14
		System.out.println(d.getDay());//2 :(0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday) 
		
		System.out.println(d.getTime());//1534234967633
		System.out.println(System.currentTimeMillis());	//推荐:
		// public static native long currentTimeMillis();
		
		//java.sql.Date
		/*
		 * util.Date 和sql.Date  区别联系:
		 * 区别:util.Date 年月日 时分秒
		 *      sql.Date  年月日
		 * 联系:sql. Date extends java.util.Date 
		 */
		java.sql.Date date=new java.sql.Date(1534234967633L);
		System.out.println(date);//2018-08-14
		Date dd=java.sql.Date.valueOf("2018-5-8");//String--->Date
		
		//util.Date 和sql.Date相互转化:
		//util.Date---》sql.Date
		java.sql.Date d2=new java.sql.Date(new Date().getTime());
		//sql.Date---》util.Date
		Date d3=d2;
	}
}

2.2格式化

public class Test {
	public static void main(String[] args) throws ParseException {
		//String--->Date:缺点格式固定只能是:xxxx-xx-xx形式: 
//		java.util.Date d=java.sql.Date.valueOf("1997/3/6");
//		System.out.println(d);
		//给定格式:
		DateFormat df=new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");	
		//String--->Date
		java.util.Date date=df.parse("1990年4月17日 12:26:29");
		System.out.println(date);//Tue Apr 17 00:26:29 CDT 1990
		//Date---->String
		java.util.Date d2=new java.util.Date();
		System.out.println(d2);
		System.out.println(d2.toGMTString());
		System.out.println(d2.toLocaleString());
		System.out.println(df.format(d2));
	}
}

2.3Calendar

public class Test {
	public static void main(String[] args) {
//		Calendar cal=new Calendar();
//		Calendar cal=new GregorianCalendar();
		Calendar cal=Calendar.getInstance();
		System.out.println(cal);
		
		//获取属性:
		System.out.println(cal.get(Calendar.YEAR));
		System.out.println(cal.get(Calendar.MONTH));
		System.out.println(cal.get(Calendar.DATE));
		System.out.println(cal.get(Calendar.DAY_OF_MONTH));
	    System.out.println(cal.getActualMaximum(Calendar.DATE));
	    System.out.println(cal.getActualMinimum(Calendar.DATE));
	    
	    //设置属性:
	    cal.set(Calendar.DATE, 28);
	    cal.set(Calendar.YEAR, 1990);
	    cal.set(Calendar.MONTH, 3);//四月
	    
	    System.out.println(cal);
	    
	    
	    //String-->Date-->Calendar :
	    java.sql.Date d=java.sql.Date.valueOf("2002-8-19");
	    cal.setTime(d);
	    System.out.println(cal);
	}
}

2.4日历

public class Demo {
	public static void main(String[] args) {
		//1.日期录入
		System.out.print("请录入一个日期(格式例如:2019-4-7):");
		Scanner sc=new Scanner(System.in);
		String str=sc.next();
//		System.out.println(str);
		
		//2.String--->Calendar 
		Calendar cal=Calendar.getInstance();
		java.sql.Date d=java.sql.Date.valueOf(str);
		cal.setTime(d);
//		System.out.println(cal);
		
		//3.打印日历的头部:
		System.out.println("日\t一\t二\t三\t四\t五\t六\t");
		
		//4.求出本月的最大天数:
		int maxDay=cal.getActualMaximum(Calendar.DATE);
		//8.算出当前日期:
		int nowDay=cal.get(Calendar.DATE);
		
		
		//10.将当前日期 置为  本月的 第一天:  
		cal.set(Calendar.DATE, 1);
		//11。获取第一天是  一周中的第几天:
		int num=cal.get(Calendar.DAY_OF_WEEK);
//		System.out.println("num===="+num);
		//12.算出前面的空格数:
		int kongGe=num-1;
		
//		System.out.println(maxDay);
		//5.开始遍历日期:
		//6.每7个数 换行操作:
		int count=0;
		//13.遍历空格:
		for(int i=1;i<=kongGe;i++){
			System.out.print("\t");
			count++;
		}
		for(int i=1;i<=maxDay;i++){
			//7.在当前日期上 打 *
			if(i==nowDay){
				System.out.print(i+"*\t");
			}else{
				System.out.print(i+"\t");
			}
			count++;
			if(count%7==0){
				System.out.println();
			}
		}
		
	}
}

三、枚举

public enum Gender {//枚举类 
	男,女;
}
package com.bjsxt.test08;

public class Person {
	private String name;
	private int age;
	private Gender sex;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Gender getSex() {
		return sex;
	}
	public void setSex(Gender sex) {
		this.sex = sex;
    }
	public Person() {
		super();
	}
	public Person(String name, int age, Gender sex) {
		super();
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
	
	public static void main(String[] args) {
		Person p=new Person();
		p.setAge(19);
		p.setName("lili");
		p.setSex(Gender.男);
		System.out.println(p);
		
		Person p2=new Person("nana", 21, Gender.女);
		System.out.println(p2);
	}
}

四、Math

import static java.lang.Math.*;//静态导入

public class Test {
	public static void main(String[] args) {
		//随机数:
		System.out.println(Math.random());//[0.0,1.0)
		
		//开平方
		System.out.println(Math.sqrt(4));
		//绝对值
		System.out.println(Math.abs(-9));
		
		//向上取值
		System.out.println(Math.ceil(90.00001));//91.0
		System.out.println(Math.ceil(-90.99999));//-90.0
		//向下取值
		System.out.println(Math.floor(90.999999));//90.0
		System.out.println(Math.floor(-90.0000001));//-91.0
		
		//四舍五入
		System.out.println(Math.round(3.14));//3
		System.out.println(Math.round(3.84));//4
		
		//次幂
		System.out.println(Math.pow(9.0, 2));//81.0
		System.out.println(Math.pow(3.0, 3));//27.0
		
		//比较两个数的哪个大
		System.out.println(max(3.8, 8.9));//8.9
	 	//比较两个数的哪个小
        System.out.println(min(3.8, 8.9));//3.8

	}
}

五、Random

import java.util.Random;

public class Test02 {
	public static void main(String[] args) {
		/*
		//随机数:
		Random rd=new Random(System.currentTimeMillis());
		//产生10个随机数:
		for (int i = 1; i <=10; i++) {
			System.out.println(rd.nextInt());
		}
		*/
		
		Random rd=new Random();
		for (int i = 1; i <=10; i++) {
			//System.out.println(rd.nextInt(10));//[0,10)
			//System.out.println(rd.nextBoolean());
			System.out.println(rd.nextDouble());//[0.0,1.0)
		}
		Math.random();//[0.0,1.0)
	}
}

猜你喜欢

转载自blog.csdn.net/qq_40064948/article/details/81741946