Day12:常用类(String类、Date类、Math类、Random类、Runtime类、System类)、BigInteger、BigDecimal

一、常用类

1、String类

String适用于少量的字符串操作的情况
StringBuilder适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer适用多线程下在字符缓冲区进行大量操作的情况

(1)String

public int length()    获取字符串的长度

public boolean equlas()    比较两个字符串对象的实体是否相同

public boolean startsWith(String str)    判断字符串是否是以str字符串开头  

public boolean endsWith(String str)    判断字符串是否以str结尾

public boolean contains(String str)    判断当前对象是否包含字符串str

public String SubString(int start, int end)    截取字符串从start开始到end位置的字符串(不包括end位置的字符)

String.valueOf(int/long/float/double/...)    将其他类型的数据转换为String类型

Integer.parseInt/float/double/...()    将String类型的数据转换为其他类型的数据

toCharArray()    将字符串转换为字符数组

public String trim( )    去掉字符串开头和结尾的空格

public String toLowerCase()    转小写,并返回新的字符串

public String toUpperCase()    转大写,并返回新的字符串

public String replace(a, b);    把a替换成b

(2)StringBuffer

缓冲字符串类StringBuffer与String类相似,它具有String类的很多功能,甚至更丰富。它们主要的区别是StringBuffer对象可以方便地在缓冲区内被修改,如增加、替换字符或子串。与Vector对象一样,StringBuffer对象可以根据需要自动增长存储空间,故特别适合于处理可变字符串。当完成了缓冲字符串数据操作后,可以通过调用其方法StringBuffer.toString( )或String构造器把它们有效地转换回标准字符串格式。

线程安全。

可以使用StringBuffer类的构造器来创建StringBuffer对象。

StringBuffer( )            构造一个空的缓冲字符串,其中没有字符,初始长度为16个字符的空间

StringBuffer类是可变字符串,因此它的操作主要集中在对字符串的改变上。

s1.append(s2)--------将字符串s2加到s1之后。

s1.insert(int offset,s2)--------在s1从起始处offset开始插入字符串s2。

s1.reverse()------------翻转

s1.replace(int start,int end,String str)-----------替换

s1.setCharAt(int index,char c)------------替换指定下标字符

s1.delete(int start,int end)----------删除指定下标区间的字符,前闭后开[start,end)

append和insert都有多个重载方法

获取和设置StringBuffer对象的长度和容量的方法有:length、capacity、setlength,调用形式如下:

s1.length( )--------返回s1中字符个数。

s1. capacity ( )--------返回s1的容量,即内存空间数量。通常会大于length( )

s1. setlength (int newLength )--------改变s1中字符的个数,如果newLength大于原个数,则新添的字符都为空("");相反,字符串中的最后几个字符将被删除。
public class Test02 {
	public static void main(String[] args) {
		//默认开辟16个字符的存储空间
//		StringBuffer sb = new StringBuffer();
		
		//默认开辟("123".length() + 16) 个字符的存储空间
		StringBuffer sb = new StringBuffer("123");
		
		sb.append("abcDEF123");//末尾追加
		sb.insert(6, "xyz");//根据下标插入字符串
		sb.setCharAt(6, 'X');//替换指定下标上的字符
		sb.delete(6, 9);//删除开始下标处(包含)到结束下标处(不包含)
		sb.deleteCharAt(6);//删除指定下标上的字符
		sb.replace(3, 6, "ABC");//替换开始下标处(包含)到结束下标处(不包含)的字符串
		sb.reverse();//翻转	
	}
}
读取StringBuffer对象中的字符的方法有:charAt和getChar,这与String对象方法一样。
在StringBuffer对象中,设置字符及子串的方法有:setCharAt、replace;
删除字符及子串的方法有:delete、deleteCharAt。

调用形式如下:

s1.setCharAt(int index,char ch)--------用ch替代s1中index位置上的字符。

s1.replace(int start,int end,s2)--------s1中从start(含)开始到end(不含)结束之间的字符串以s2代替。

s1.delete(int start,int end)--------删除s1中从start(含)开始到end(不含)结束之间的字符串。

s1.deleteCharAt(int index)------删除s1中index位置上的字符。

(3)StringBuilder

用法与StringBuffer类似。

2、Data类

(1)date:日期类

public class Test01 {
	public static void main(String[] args) {
		Date date = new Date();
		System.out.println(date);
}
}
输出:Sun May 12 14:11:47 CST 2019

(2)SimpleDateFormat:格式化日期类

public class Test02 {
	public static void main(String[] args) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		String str = sdf.format(new Date());
		System.out.println(str);
	}
}
输出:2019年05月12日 14:16:13

(3)Calendar:日历类

public class Test03 {
	public static void main(String[] args) throws ParseException {

		//获取日历类对象
		Calendar c = Calendar.getInstance();
		//根据传入的参数,获取指定的值
		int year = c.get(Calendar.YEAR);
		int month = c.get(Calendar.MONTH)+1;
		int day = c.get(Calendar.DAY_OF_MONTH);
		int hour = c.get(Calendar.HOUR);
		int minute = c.get(Calendar.MINUTE);
		int second = c.get(Calendar.SECOND);
		
		System.out.println(year);
		System.out.println(month);
		System.out.println(day);
		System.out.println(hour);
		System.out.println(minute);
		System.out.println(second);
	}
}
输出:
2019
5
12
2
22
21

3、Math类

Math类提供了用于几何学、三角学以及几种一般用途方法的浮点函数,来执行很多数学运算。

1.Math类定义的两个双精度常量

doubleE--------常量e(2.7182818284590452354)

doublePI--------常量pi(3.14159265358979323846)

2.Math类定义的常用方法

public class math_class {
	public static void main(String[] args) {
		//最小值
		System.out.println(Math.min(2, 3));//2
		//开方
		System.out.println(Math.sqrt(16));//4.0
		//取绝对值
		System.out.println(Math.abs(-16));//16
		//像上取整
		System.out.println(Math.ceil(1.8));//2.0
		//像下取整
		System.out.println(Math.floor(1.8));//1.0
		//四舍五入
		System.out.println(Math.round(1.8));//2
		//2的3次方
		System.out.println(Math.pow(2,3));//8.0
		//取随机数[0,1)
		System.out.println(Math.random());//double类型
		//面试题:abs会返回负数吗?
		//会,超出int最大范围就会返回负数
		int abs = Math.abs(Integer.MAX_VALUE+1);
		System.out.println(abs);
	}
}

4、Random类

1.protected int next(int bits) :产生下一个伪随机数。

2. boolean nextBoolean() :返回下一个从随机发生器的系列中得到的均匀分布的布尔值。

3. void nextBytes(byte[] bytes) :产生随机字节数组放到指定的数组中。

4. double nextDouble() :返回下一个从随机发生器的系列中得到的均匀分布的0.0到1.0的双精度类型值。

5. float nextFloat() :返回下一个从随机发生器的系列中得到的均匀分布的0.0到1.0的浮点类型值。

6. double nextGaussian() :返回下一个从随机发生器的系列中得到的符合均匀分布的0.0的平均数到1.0方差的高斯分布双精度类型值。

7. int nextInt() :返回下一个从随机发生器的系列中得到的均匀分布的整型值。

8. int nextInt(int n) :返回下一个从随机发生器的系列中得到的均匀分布的0到指定整型数(n)之间的整型值。

9. long nextLong() :返回下一个从随机发生器的系列中得到的均匀分布的长整型值。

10. void setSeed(long seed) :设置随机数发生器的种子为一个长整型数。

public class Test01 {
	public static void main(String[] args) {
		Random run = new Random();
		int num = run.nextInt(10);
		System.out.println(num);
		}
}

输出:5
public class Test02 {	
	public static void main(String[] args) {

		String[] names = {"谢刚","伍科","汪钦松","胡学宇","唐萌","鲁健源"};
		Random ran = new Random();
		int index = ran.nextInt(names.length);
		System.out.println(names[index]);	
	}
}
输出:鲁健源

5、Runtime类

一个RunTime就代表一个运行环境。

(1) getRuntime():该方法用于返回当前应用程序的运行环境对象。

(2) exec(String command):该方法用于根据指定的路径执行对应的可执行文件。

(3) freeMemory():该方法用于返回Java虚拟机中的空闲内存量,以字节为单位。
(4) maxMemory():该方法用于返回Java虚拟机试图使用的最大内存量。

(5) totalMemory():该方法用于返回Java虚拟机中的内存总量。

public class Test01 {
	
	public static void main(String[] args) {

		//获取运行环境的对象
		Runtime runtime = Runtime.getRuntime();	
		System.out.println("获取最大内存数量:" + runtime.maxMemory());
		System.out.println("获取闲置内存数量:" + runtime.freeMemory());
		System.out.println("获取处理任务数的数量:" + runtime.availableProcessors());
	}

}
输出:
获取最大内存数量:2837446656
获取闲置内存数量:190924680
获取处理任务数的数量:4

6、System类

System类:系统类,主要用于获取系统的属性数据,没有构造方法。

System.in:系统标准的输入流(方向:控制台->程序)
System.out:系统标准的输出流(方向:程序->控制台)
System.err:系统标准的错误输出流(方向:程序->控制台)

currentTimeMillis();该方法用于获取当前系统时间,返回的是毫秒值。返回当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量)。

gc();该方法用来建议jvm赶快启动垃圾回收器回收垃圾。只是建议启动,但是Jvm是否启动又是另外一回事。

 getenv(String name); 该方法用来根据环境变量的名字获取环境变量。

 getProperties(); 该方法用于获取系统的所有属性。属性分为键和值两部分,它的返回值是Properties。

getProperty(key);该方法用于根据系统的属性名获取对应的属性值。

exit(int status);该方法用于退出jvm,如果参数是0表示正常退出jvm,非0表示异常退出jvm。 

public class Test01 {
	public static void main(String[] args) {
	
		//获取当前系统所有参数
		Properties properties = System.getProperties();
		System.out.println(properties);
		
		//通过键取值,如果没有该键,就返回默认值
		String value = System.getProperty("os.name1","hahaha");
		System.out.println(value);
		
	}
}
输出:
{java.runtime.name=Java(TM) SE Runtime Environment, sun.boot.library.path=E:\Java\JDK-Install\bin, java.vm.version=25.144-b01, java.vm.vendor=Oracle Corporation, java.vendor.url=http://java.oracle.com/, path.separator=;, java.vm.name=Java HotSpot(TM) 64-Bit Server VM, file.encoding.pkg=sun.io, user.country=CN, user.script=, sun.java.launcher=SUN_STANDARD, sun.os.patch.level=Service Pack 1, java.vm.specification.name=Java Virtual Machine Specification, user.dir=E:\Java\1903workspace\Day12, java.runtime.version=1.8.0_144-b01, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment, java.endorsed.dirs=E:\Java\JDK-Install\lib\endorsed, os.arch=amd64, java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\, line.separator=
, java.vm.specification.vendor=Oracle Corporation, user.variant=, os.name=Windows 7, sun.jnu.encoding=GBK, java.library.path=E:\Java\JDK-Install\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;E:/Java/JDK-Install/bin/server;E:/Java/JDK-Install/bin;E:/Java/JDK-Install/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;F:\matlab R2015b\runtime\win64;F:\matlab R2015b\bin;F:\matlab R2015b\polyspace\bin;D:\Matlab 2016a\1\runtime\win64;D:\Matlab 2016a\1\bin;D:\Matlab 2016a\1\polyspace\bin;C:\Program Files\Java\jdk1.8.0_144\bin;E:\Eclipse\eclipse\eclipse-jee-oxygen-R-win32-x86_64\eclipse;;., java.specification.name=Java Platform API Specification, java.class.version=52.0, sun.management.compiler=HotSpot 64-Bit Tiered Compilers, os.version=6.1, user.home=C:\Users\Administrator, user.timezone=, java.awt.printerjob=sun.awt.windows.WPrinterJob, file.encoding=GBK, java.specification.version=1.8, java.class.path=E:\Java\1903workspace\Day12\bin, user.name=Administrator, java.vm.specification.version=1.8, sun.java.command=com.dream.system_class.Test01, java.home=E:\Java\JDK-Install, sun.arch.data.model=64, user.language=zh, java.specification.vendor=Oracle Corporation, awt.toolkit=sun.awt.windows.WToolkit, java.vm.info=mixed mode, java.version=1.8.0_144, java.ext.dirs=E:\Java\JDK-Install\lib\ext;C:\Windows\Sun\Java\lib\ext, sun.boot.class.path=E:\Java\JDK-Install\lib\resources.jar;E:\Java\JDK-Install\lib\rt.jar;E:\Java\JDK-Install\lib\sunrsasign.jar;E:\Java\JDK-Install\lib\jsse.jar;E:\Java\JDK-Install\lib\jce.jar;E:\Java\JDK-Install\lib\charsets.jar;E:\Java\JDK-Install\lib\jfr.jar;E:\Java\JDK-Install\classes, java.vendor=Oracle Corporation, file.separator=\, java.vendor.url.bug=http://bugreport.sun.com/bugreport/, sun.io.unicode.encoding=UnicodeLittle, sun.cpu.endian=little, sun.desktop=windows, sun.cpu.isalist=amd64}
hahaha

7、大数值运算

public class Test01 {	
	public static void main(String[] args) {		
		//整数类型的大数值运算类	
		BigInteger b1 = new BigInteger("123456789123456789123456789");
		BigInteger b2 = new BigInteger("123456789123456789123456789");
		BigInteger result = b1.add(b2);
		System.out.println(result);
	}
}
public class Test02 {
	
	public static void main(String[] args) {
		
		//小数类型的大数值运算类
		
		BigDecimal b1 = new BigDecimal("0.5");
		BigDecimal b2 = new BigDecimal("0.4");
		
		BigDecimal result = b1.subtract(b2);
		System.out.println(result);
	}

}
public class Test03 {
	
	public static void main(String[] args) {
		
		//小数类型的大数值运算类
		
		BigDecimal b1 = new BigDecimal("10");
		BigDecimal b2 = new BigDecimal("3");
		
		BigDecimal result = b1.divide(b2, 3, BigDecimal.ROUND_HALF_UP);
		System.out.println(result);
	}

}
输出:3.333

 

你可能感兴趣的:(JavaSE)