zoukankan      html  css  js  c++  java
  • 狂神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) +
    				";
    s2 address:" + System.identityHashCode(s2));
    		System.out.println("s3 address:" + System.identityHashCode(s3) +
    				";
    s4 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

  • 相关阅读:
    volatile 能使得一个非原子操作变成原子操作吗?
    什么是线程局部变量?
    使用idea插件进行java代码生成
    mybatis plus+dynamic事务导致多数据源切换失败
    10_docker-compose
    Ubuntu的Python从2.x升级到3.x
    idea查看控制台数据mybatis的sql完整语句
    iframe高度处理
    angular路由
    去掉iPhone、iPad的默认按钮、输入框样式
  • 原文地址:https://www.cnblogs.com/gdf456/p/13836951.html
Copyright © 2011-2022 走看看