xiguayaaaaa
文章28
标签4
分类7
0727日志

0727日志

0727日志

今天学习了什么

String类的方法

  • split(String s):对字符串以s进行分割,返回的是一个字符串数组,分割符为最后一个字符时,该方法会省略末尾字符后的空字符。
  • split(String s,int limit):与上个方法类似,但是limit可以设定分割成多少个数组元素,负数代表无数个,该方法不会忽略末尾后的空字符。
  • join(String s,String…s1):第一个字符s是用来连接字符的,后面的可变参数可以输入任意的需要连接的字符串。
  • concat(String s):连接字符串。
  • valueOf():八个基本类型转字符串,也可在基本类型后+””。
  • contains(String s):判断字符串中是否包含s。
  • toCharArray():将字符串转为字符数组
  • intern():将字符串放入常量池中,jdk6及以前是将字符串放入,jdk7及以后是将引用地址放入常量池。
  • isEmpty():判断字符是否为空,不能判断空格字符。
  • isBlank():判断字符是否为空,可以判断空格字符。

StringBuilder

构造器

StringBuilder():创建了一个空StringBuilder对象,本质上是初始化了底层数组。根据不同的字符编码,长度为16或者32。

StringBuilder是创建了一个StringBuilder对象,通过传入的字符串来判断是ISO-8856-1还是UTF16编码,字符串中有中文是是UTF16编码,对象长度为(参数长度+16)<<1;字符串中只存在字母和数字时,使用ISO-8856-1编码,对象长度为参数长度+16。

StringBuilder(String str):根据传入的字符串创建一个StringBuilder对象,该方法内完成两件事情:

  1. 参数长度+16,或者(参数长度+16)<<1作为底层数组的初始长度。
  2. 将参数放置到数组中

StringBuilder(Charsequence str):同上

StringBuilder(int capacity):指定底层数组初始容量。

StringBuilder的方法

  • append(String s):在字符串末尾添加字符串。
  • delete(int start,int end):删除start和end区间的字符。
  • deleteCharAt(int index):删除index索引处的字符。
  • replace(int start,int end,String s):在start和end区间的字符都替换为s。
  • subString(int start,int end):截取start到end的字符,end也可省略,默认截取到最末尾字符。
  • insert(int a,String s):在索引a处插入字符串s。
  • reverse():将字符串序列反转。
  • toString():对象转成字符串,String类型对象可以不用加上该方法。

String,StringBuilder和StringBuffer的区别

同:

  • 都是Charsquence接口的子类。
  • 都是final修饰的,不能被继承,没有子类。

异:

  • String是不可变类,字符串序列不能被修改,而StringBuffer和StringBuilder是可变类,可以修改字符序列。
  • StringBuffer是线程安全的,synchronized修饰,StringBuilder是非线程安全的,非线程安全的效率更高。不考虑线程安全或者单线程的情况下优先考虑StringBuiler。

Math工具类

  • sqrt():求平方根,负数会返回NAN。
  • pow(x,a):x的a次方。
  • floor(a),ceil(a):a为小数时,floor向下取整,ceil向上取整。
  • floorMod(x,y):x%y取余。
  • toDegree(),toRadians():弧度转角度,角度转弧度。
  • sin(),cos(),tan():正弦,余弦,正切。
  • abs():绝对值。
  • max(),min():两数求最大值,最小值。
  • random():产生0.0000000000000000到1.0000000000000000的随机数。

System类

System类代表当前运行Java程序的平台。System为开发者提供了获取系统环境变量,系统属性等方法。下面通过示例来使用System类访问操作系统的环境变量和系统属性。

  • Map<String,String> getenv():获取系统所有的环境变量,保存在map集合中。
  • String getenv(String name):获取指定的环境变量
  • Properties getProperties():获取系统的属性。
    public static void main(String[] args) {
        
        //获取所有的环境变量
        Map<String,String> map = System.getenv();
        //遍历map
        for(String s : map.keySet()) {
            System.out.println(s+"======"+map.get(s));
        }
        //获取指定名称的环境变量值,如果环境变量的名称不存在则返回null
        System.out.println(System.getenv("JAVA_HOME"));
        //获取系统参数
        Properties properties = System.getProperties();
        
        Set<Entry<Object, Object>> entry =  properties.entrySet();
        
        for (Entry<Object, Object> e : entry) {
            System.out.println(e.getKey()+"============="+e.getValue());
        }
    }
  • long currentTimeMillis():获取当前时间的毫秒数,返回当前时间与UTC 1970年1月1日 00:00:00的时间差,以毫秒为单位
  • int identityHashCode(Object x):获取指定对象的精确hashCode值。
public static void main(String[] args) {
        //获取当前时间的毫秒数
        System.out.println(System.currentTimeMillis());
        System.out.print(System.identityHashCode("Hello"));
    }
  • void arraycopy(Object src, int srcPos, int destPos, int length):该方法的作用是复制数组,第一个src是指被复制的数组,srcPos是指定复制的起始位置,dest则是指将元素粘贴到哪个数组,destPos是指目标数组粘贴的起始位置,length则可以理解为复制元素的个数。
  • void exit(int status):退出虚拟机。
public class CopyArray {
    public static void main(String[] args) {
        int[] a = {5,9,1,4,3};
        int[] b = new int[10];
        //复制数组a元素粘贴的b数组
        System.arraycopy(a, 0, b, 3, 5);
        System.out.println(Arrays.toString(b));
    }
}

Runtime类

Runtime类代表Java程序的运行时环境,每个Java程序都有一个与之对应Runtime实例。可以访问JVM相关信息,处理器数量,内存信息等

  • int availableProcessors():获取处理器数量
  • long freeMemory():获取jvm空闲内存
  • long totalMemory():获取最大内存
  • long maxMemory():获取虚拟机可以用最大内存
public class RuntimeDemo {
    public static void main(String[] args) {
        Runtime runtime = Runtime.getRuntime();
        System.out.println("处理器数量:"+runtime.availableProcessors());
        System.out.println("总内寸数:"+runtime.totalMemory()/Math.pow(1024,2)+"MB");
        System.out.println("JVM空闲内存:"+runtime.freeMemory()/Math.pow(1024, 2)+"MB");
        System.out.println("可用最大内存:"+runtime.maxMemory()/Math.pow(1024, 3)+"GB");
    }
}
  • Runtime还提供了exec()方法,用于启动一个进程来运行操作系统的命令。
runtime.exec("notepad.exe");

运行示例中的代码可以打开记事本,其他命令可以自行查找。

今天没学会什么

System类和Runtime类不太会用

学习心得

System类和Runtime类还是第一次学,这些类还是挺有趣的,可以使用Runtime类获取JVM的处理器数量,获取的内存等等。用Runtime对象的exec方法打开画图软件,用while循环让他循环了1000次,直接让电脑卡死了。

本文作者:西瓜
本文链接:https://xiguayaaaaa.github.io/2022/07/27/0727%E6%97%A5%E5%BF%97/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可