Runtime类

二、Runtime类

含义:代表着Java的运行环境(JRE、JVM)

常用方法:

  1. availableProcessors():获取处理数
  2. maxMemory():获取最大内存数,单位为字节单位
  3. freeMemory():获取闲置内存数(字节)
public static void main(String[] args) {

    //获取运行时类的对象
    Runtime run = Runtime.getRuntime();

    System.out.println("获取处理数:" + run.availableProcessors());//8
    System.out.println("获取最大内存数(字节):" + run.maxMemory());
    System.out.println("获取闲置内存数(字节):" + run.freeMemory());

}

2.1消耗时长和消耗内存 考虑一段代码的效率

public static void main(String[] args) {

    Runtime runtime = Runtime.getRuntime();
    long startMemory = runtime.freeMemory();
    long startTime = System.currentTimeMillis();
    String str = "甜甜";
    for (int i = 0; i < 10000; i++){
        str += "的冰激凌";
        //str = new StringBuilder(str).append("拍电影").toString();
    }
    long endMemory = runtime.freeMemory();
    long endTime = System.currentTimeMillis();

    System.out.println("消耗时长:" + (endTime - startTime));
    System.out.println("消耗内存:" + (startMemory - endMemory));

    System.out.println("-------------------");

    long startMemory1 = runtime.freeMemory();
    long startTime1 = System.currentTimeMillis();
    StringBuilder stringBuilder = new StringBuilder("苦苦");
    for (int i = 0; i < 10000; i++){
        stringBuilder.append("的巧克力");
    }
    long endMemory1 = runtime.freeMemory();
    long endTime1 = System.currentTimeMillis();

    System.out.println("消耗时长:" + (endTime1 - startTime1));
    System.out.println("消耗内存:" + (startMemory1 - endMemory1));

}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2w6cRfB0-1652098343862)(C:\Users\Hp\AppData\Roaming\Typora\typora-user-images\image-20220509185056570.png)]

2.2设计模式之单例模式

前言:new对象的过程叫做实例化

理解:该类的对象只有一个

单例模式:

  • 私有化构造方法
  • 创建静态常量:private static final A a = new A();
  • 添加静态的get方法
public class A {
	
	/**
	 * 为什么使用private修饰:
	 * 		私有化属性,并且添加get方法让外界获取a对象
	 * 为什么使用static修饰:
	 * 		使用到该类,该类的class文件加载到方法区时(类加载机制),就会在静态区中创建A类的对象
	 * 		getInstance方法是静态方法,静态方法只能调用静态属性
	 * 为什么使用final修饰:
	 * 		应该该对象创建后,不允许外界改变
	 */
	private static final A a = new A();

	private A() {
	}
	
	public static A getInstance(){
		return a;
	}
}

**问题1:**为什么使用private修饰:

  • 私有化属性,并且添加get方法让外界获取a对象

**问题2:**为什么使用static修饰:

  • 使用到该类,该类的class文件加载到方法区时(类加载机制),就会在静态区中创建A类的对象
  • getInstance方法是静态方法,静态方法只能调用静态属性

问题3: 为什么使用final修饰:

  • 应该该对象创建后,不允许外界改变
public static void main(String[] args) {
    //单例模式
    Runtime run = Runtime.getRuntime();
    Calendar calendar = Calendar.getInstance();
    A a = A.getInstance();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值