狂神Java中的常用类API

6.1Sting类和StringBuffer类

6.1.1 String类的初始化

		// 创建一个空的字符串
		String str1 = new String();
		// 创建一个内容为abc的字符串
		String str2 = new String("abc");
		// 创建一个内容为字符数组的字符串
		char[] charArray = new char[] { 'A', 'B', 'C' };
		String str3 = new String(charArray);
		char[] chars = new char[]{'1','被','子'};
		String str4 = new String(chars);
		// 输出结果
		System.out.println("a" + str1 + "b");
		System.out.println(str2);
		System.out.println(str3);
		System.out.println(str4);

//运行结果
ab
abc
ABC
1被子

String常量池,地址允许改动,如果内容一致,不会产生新地址.

6.1.2 String类的常见操作

1.字符串的基本操作

		String s = "abcabcbacdba"; // 初始化字符串
		System.out.println("字符串的长度为:" + s.length());
		System.out.println("字符串中第一个字符:" + s.charAt(0));
		System.out.println("字符c第一次出现的位置:" + s.indexOf('c'));
		System.out.println("字符c最后一次出现的位置:" + s.lastIndexOf('c'));
		System.out.println("子字符串第一次出现的位置:" + s.indexOf("ab"));
		System.out.println("子字符串最后一次出现的位置:" 
                                                    + s.lastIndexOf("ab"));

//运行结果
字符串的长度为:12
字符串中第一个字符:a
字符c第一次出现的位置:2
字符c最后一次出现的位置:8
子字符串第一次出现的位置:0
子字符串最后一次出现的位置:3

2.字符串的转换操作

		String str = "java"; 
		char[] charArray = str.toCharArray(); // 字符串转换为字符数组
         System.out.print("将字符串转为字符数组后的遍历结果:");
		for (int i = 0; i < charArray.length; i++) {
			if (i != charArray.length - 1) {
				// 如果不是数组的最后一个元素,在元素后面加逗号
				System.out.print(charArray[i] + ",");
			} else {
				// 数组的最后一个元素后面不加逗号
				System.out.println(charArray[i]);
			}
		}

		System.out.println("将int值转换为String类型之后的结果:"  
                                + String.valueOf(12));
		System.out.println("将字符串转换成大写之后的结果:"  
                                + str.toUpperCase());

//运行结果
将字符串转为字符数组后的遍历结果:j,a,v,a
将int值转换为String类型之后的结果:12
将字符串转换成大写之后的结果:JAVA

3.字符串的替换和去除空格操作

String类的trim()和replace()方法

		String s = "     http :// localhost : 8080     ";
		// 字符串去除空格操作
		System.out.println("去除字符串两端空格后的结果:" + s.trim());
		// 字符串替换操作
		System.out.println("去除字符串中所有空格后的结果:" 
		                      + s.replace(" ", ""));
		// 字符串替换操作
		System.out.println("去除字符串中所有空格后的结果:"
				+ s.replace("t", "T"));
//运行结果
去除字符串两端空格后的结果:http :// localhost : 8080
去除字符串中所有空格后的结果:http://localhost:8080
去除字符串中所有空格后的结果:     hTTp :// localhosT : 8080     

trim()方法只能去除两端的空格,不能去除中间的空格,若想去除中间的String类的replace()方法.

4.字符串的判断操作

		String s1 = "Starter"; // 声明一个字符串]
		String s2 = "Starter";
		String s3 = new String("ling");
		String s4 = new String("ling");
		System.out.println("判断是否以字符串St开头:" + s1.startsWith("St"));
		System.out.println("判断是否以字符串er结尾:" + s1.endsWith("er"));
		System.out.println("判断是否包含字符串ar:" + s1.contains("ar"));
		System.out.println("判断字符串是否为空:" + s1.isEmpty());
		System.out.println("s1==s1:" + (s1==s2));
		System.out.println("s1.equals(s2):" + (s1.equals(s2)));
		System.out.println("s1 address:" + System.identityHashCode(s1) +
				";\ns2 address:" + System.identityHashCode(s2));
		System.out.println("s3 address:" + System.identityHashCode(s3) +
				";\ns4 address:" + System.identityHashCode(s4));
//运行结果
判断是否以字符串St开头:true
判断是否以字符串er结尾:true
判断是否包含字符串ar:true
判断字符串是否为空:false
s1==s1:true
s1.equals(s2):true
s1 address:1163157884;
s2 address:1163157884
s3 address:1956725890;
s4 address:356573597
equals()和==的区别

Java的八大数据类型:byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。

引用数据类型:类,接口,数组

==

基本类型:对比它们的值是否相等(基本数据类型比较(string 除外), == 和 Equals 两者都是比较值.)

引用类型:对比它们的堆内存地址是否相等

s1==s2,地址相同,旧串比如是A,新串也是A,常量池(字符串缓冲池)中,系统就不会产生新的串地址指向.

equals()

基本类型:对比它们的值是否相等

引用类型:默认情况下,对比它们的字符串中的字符内容是否相等;如果equals()方法被重写,则根据重写过程来比较

equals()方法将父类Object中的equals()方法进行了重写.

C#多一个decimal,java.math.BigDecimal.

BigDecimal bigDecimal1 = new BigDecimal(217328.31);BigDecimal bigDecimal2 = new BigDecimal(217328.31);
//返回true
System.out.println(bigDecimal1.equals(bigDecimal2));

StringBuffer buffer缓存地址,旧串比如是A,一个单独的地址,新串也是A,有一个新地址.

5.字符串的截取和分隔

substring()方法:截取字符串的一部分,索引是从0开始的.

split()方法:将字符串按照某个字符进行分割,例如"-".

		String str = "2018-01-24";
		// 下面是字符串截取操作
		System.out.println("从第6个字符截取到末尾的结果:" 
		                       + str.substring(5));
		System.out.println("从第6个字符截取到第7个字符的结果:" 
		                       +str.substring(5, 7));
		// 下面是字符串分割操作
		System.out.print("分割后的字符串数组中的元素依次为:");
		// 通过横线连接符“—”将字符串转换为字符串数组
		String[] strArray = str.split("-");
		// 循环输出数组中的元素
		for (int i = 0; i < strArray.length; i++) {
			if (i != strArray.length - 1) {
				// 如果不是数组的最后一个元素,在元素后面加顿号
				System.out.print(strArray[i] + "、");
			} else {
				// 数组的最后一个元素后面不加顿号
				System.out.println(strArray[i]);
			}
		}

//运行结果
从第6个字符截取到末尾的结果:01-24
从第6个字符截取到第7个字符的结果:01
分割后的字符串数组中的元素依次为:2018、01、24
//字符下标越界	java.lang.StringIndexOutOfBoundsException
		String s = "abcde"; 
		System.out.println(s.charAt(10));  

6.1.3 StingBuffer类

	public static void main(String[] args) {
		System.out.println("1、添加------------------------");
		add();
		System.out.println("2、修改------------------------");
		update();
		System.out.println("3、删除------------------------");
		delete();
	}
	// 添加
	public static void add() {
		StringBuffer sb = new StringBuffer(); // 定义一个字符串缓冲区
		sb.append("ABC");          // 添加字符串
		System.out.println("append添加结果:" + sb);
		sb.insert(3, "DE");        // 在指定位置插入字符串
		System.out.println("insert添加结果:" + sb);
	}
	// 修改
	public static void update() {
		StringBuffer sb = new StringBuffer("ABAAA");
		sb.setCharAt(2, 'C');      // 修改指定位置字符
		System.out.println("修改指定位置字符结果:" + sb);
		sb.replace(3, 5, "DE");    // 替换指定位置字符串或字符 3~4
		System.out.println("替换指定位置字符(串)结果:" + sb);
		System.out.println("字符串翻转结果:" + sb.reverse());
	}
	// 删除
	public static void delete() {
		StringBuffer sb = new StringBuffer("ABCDEFG");
		sb.delete(3, 7);             // 指定范围删除
		System.out.println("删除指定位置结果:" + sb);
		sb.deleteCharAt(2);         // 指定位置删除
		System.out.println("删除指定位置结果:" + sb);
		sb.delete(0, sb.length()); // 清空缓冲区
		System.out.println("清空缓冲区结果:" + sb);
	}

//运行结果
1、添加------------------------
append添加结果:ABC
insert添加结果:ABCDE
2、修改------------------------
修改指定位置字符结果:ABCAA
替换指定位置字符(串)结果:ABCDE
字符串翻转结果:EDCBA
3、删除------------------------
删除指定位置结果:ABC
删除指定位置结果:AB
清空缓冲区结果:

image-20200903191800457

6.2 System类与Runtime类

6.2.1 System类

1.getProperties()方法

image-20200903193101964

		// 获取当前系统属性
		Properties properties = System.getProperties();
		System.out.println(properties);
		// 获取所有系统属性的key(属性名),返回Set对象
		Set<String> propertyNames = properties.stringPropertyNames();
		for (String key : propertyNames ) {
			//获取当前键key(属性名)所对应的值(属性值)
			String value = System.getProperty(key);
			System.out.println(key +"--->"+ value);
		}

2.currentTimeMillis()方法image-20200903193119947

计算程序在进行求和操作时所消耗的时间

		long startTime = System.currentTimeMillis();// 循环开始时的当前时间
		int sum = 0;
		for (int i = 0; i < 100000000; i++) {
			sum += i;
		}
		long endTime = System.currentTimeMillis();// 循环结束后的当前时间
		System.out.println("程序运行时间为:"+(endTime - startTime)+ "毫秒");

3.arraycopy()方法image-20200903193659213

6.2.2 Runtime类

getRuntime():处理器的个数

freeMemory():空闲内存大小

maxMemory():最大可用内存大小

exec():运行记事本

		Runtime rt = Runtime.getRuntime(); // 获取Java程序关联的运行时对象
		System.out.println("处理器的个数: " 
		                       + rt.availableProcessors() + "个");
		System.out.println("空闲内存大小: "
		                       + rt.freeMemory() / 1024 / 1024 + "M");
		System.out.println("最大可用内存大小: " 
		                       + rt.maxMemory() / 1024 / 1024 + "M");
		//用exec打开记事本,3秒后关闭
        // 创建一个Runtime实例对象
		Runtime rt = Runtime.getRuntime();
		// 得到表示进程的Process对象
		Process process = rt.exec("notepad.exe");
		// 程序休眠3秒
		Thread.sleep(3000); 
		// 关闭进程
		process.destroy();

6.3 Math类和Random类

两个静态常量PI和E,E的Value: 2.718281828459045.

image-20200904221405670

6.4 包装类

包装类:将基本数据类型的值包装为引用数据类型的对象.

八大基本类型:char,byte,int,short,float,double,long,boolean

image-20200904223045731

装箱:将基本数据类型的值转为引用数据类型.

拆箱:将引用数据类型的值转为基本数据类型.

自动拆装箱

image-20200904225356868

6.5 Date类,Calendar类和DateForm类

6.5.1 Date类

date参数表示1970年1月1日 00:00:00(称为历元)以来的毫秒数,即时间戳.

6.5.2 Calendar类

		// 获取表示当前时间的Calendar对象
		Calendar calendar = Calendar.getInstance();
		// 设置指定日期,将MONTH设为13
		//默认lenient模式,月份可以设置为13,加一年
		calendar.set(Calendar.MONTH, 13);
		System.out.println(calendar.getTime());
		// 开启non-lenient模式
		calendar.setLenient(false);
		calendar.set(Calendar.MONTH, 13);
		//这行报错IllegalArgumentException: MONTH
		System.out.println(calendar.getTime()); 

6.5.3 DateForm类

		// 创建Date对象
		Date date = new Date();
		// Full格式的日期格式器对象
		DateFormat fullFormat = 
				DateFormat.getDateInstance(DateFormat.FULL);
		// Long格式的日期格式器对象
		DateFormat longFormat = 
				DateFormat.getDateInstance(DateFormat.LONG);
		// MEDIUM格式的日期/时间 格式器对象
		DateFormat mediumFormat = DateFormat.getDateTimeInstance(
				DateFormat.MEDIUM, DateFormat.MEDIUM);
		// SHORT格式的日期/时间格式器对象
		DateFormat shortFormat = DateFormat.getDateTimeInstance(
				DateFormat.SHORT, DateFormat.SHORT);
		// 下面打印格式化后的日期或者日期/时间
		System.out.println("当前日期的完整格式为:" 
		                    + fullFormat.format(date));
		System.out.println("当前日期的长格式为:" 
		                    + longFormat.format(date));
		System.out.println("当前日期的普通格式为:" 
		                    + mediumFormat.format(date));
		System.out.println("当前日期的短格式为:" 
		                    + shortFormat.format(date));

//运行结果
当前日期的完整格式为:2020年9月5日 星期六
当前日期的长格式为:2020年9月5日
当前日期的普通格式为:2020-9-5 22:35:14
当前日期的短格式为:20-9-5 下午10:35

Java 中计算两个时间的相差小时数

//时间处理类
SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date begin = dfs.parse("2004-01-02 11:30:24");

Date end = dfs.parse("2004-01-02 13:31:40");

long between = (end.getTime() - begin.getTime())/1000;

long min = between/60/60;
System.out.println(min);

JAVA 时间差距,两个时间相差多少天,时,分,秒
https://www.cnblogs.com/nongzihong/p/11368058.html

posted @ 2020-10-18 20:27  凌易说-lingyisay  阅读(593)  评论(0编辑  收藏  举报