学习日志day10(2021-07-16)(1、Math类 2、静态 3、单例模式 4、包装类)

学习内容:学习JavaSE(Day10)

1、Math类
2、静态
3、单例模式
4、包装类


1、Math类

(1)Math类中的方法都是static的,调用静态方法可以直接使用类名.方法名来调用,不需要先创建类的一个对象。Math这个类在java.lang软件包中,这个包会自动引入,所有这个软件包中的类不需要再import就可以直接使用。
绝对值:
int a = Math.abs(-10);
int b = Math.abs(10);
最大值,最小值:
int max = Math.max(12, 23);
int min = Math.min(12, 23);
随机数(产生10以内的整数):
double d = Math.random();
System.out.println((int)(d * 10));

2、静态

(1)静态方法:静态方法可以使用类直接调用,使用static关键字修饰的方法就是静态方法。当一个方法中没有使用实例变量时,这个时候就可以考虑将该方法声明为静态方法,只会执行一次。静态方法中不能调用普通变量和方法,可以调用静态变量或方法,普通方法可以调用静态方法。

public static int getMax(int numA, int numB) {
   
    System.out.println("max");
    getMin(12,13);
    return numA > numB ? numA : numB;
}
int max = Math.getMax(12, 13);
System.out.println(max);

(2)静态方法与非静态方法:

生命周期:
静态方法:与静态成员变量一样,属于类的本身,在类装载的时候被装载到内存,不自动进行摧毁,会一直存在内存中,直到JVM关闭。
非静态方法:又叫实例化方法,属于实例对象,实例化后才会分配内存,必须通过类的实例来引用。不会常驻内存,当实例对象被JVM回收之后,也跟着消失。

效率:
静态方法的使用效率比非静态方法效率高。

按照上面的概念,只要内存够用,都可以使用静态的。使用静态方法也会带来一些问题。静态方法:是共享代码段,静态变量是共享数据段。既然是“共享”就有并发的问题。非静态方法:是针对确定的一个对象的,所以不会存在线程安全的问题。
静态方法和实例方法是一样的,在类型第一次被使用时加载。调用的速度基本上没有差别。

(3)静态变量:静态变量属于类,实例变量属于实例。静态变量会在该类调用静态方法之前进行初始化,静态变量会在创建对象之前进行初始化,只初始化一次。

静态变量是共享的,同一个类的所有实例共享一份实例变量。
实例变量:每个实例一个 。
静态变量:每个类一个。

static String name = buildName();
private static String buildName() {
   
    System.out.println("buildName");
    return "Jerry";
}
Math.name = "Rose";
Math math = new Math();
math.name = "Alex";

Math math1 = new Math();
math1.name = "Hanks";

System.out.println(math.name);
System.out.println(math1.name);

结果是:
buildName
Hanks

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值