【Java-Static】

Static

一、基本概念

叫静态,可以修饰成员变量、成员方法

二、成员变量

1.类变量: 有static修饰,属于类,与类一起加载一次,在计算机里只有一份,会被类的全部对象共享。
2.实例变量(对象的变量):无是static修饰,属于每个对象。

public class Student 
{
static String name;//类变量
int age;//实例变量
}

使用方法

1、类变量使用方法

1.类名 .类变量(推荐)
2.对象 .类变量(不推荐)

2、实例变量使用方法

对象.实例变量

三、应用场景

在开发中,如果某个数据只需一份,且希望能够被共享(访问、修改),则该数据可以定义成类变量来记住。
示例:
系统启动后,要求用户类可以记住直接创建了多少个用户对象了。

public class User{
public static int number;
public User(){
User.number++}
}
public  class Test{
public static void main(String[] args){
User a=new User();
System.out.println(User.number);//number=1;}
} 

四、static修饰成员方法

1.类方法

有static修饰的成员方法,属于类
使用方法
1.类名.类方法(推荐)
2.对象名.类方法(不推荐)

2.实例方法

无static修饰的成员方法,属于对象
使用方法
对象.实例方法

3.main方法补充知识

4.类方法的常见应用场景

类方法最常见的应用场景是工具类

1.工具类

工具类中的方法都是一些类方法,每个方法都是用来完成一个功能的,工具类是给开发人员使用的。

使用类方法来设计工具类的好处: 提高了代码复用,调节方便,提高了开发效率。

为什么工具类中的方法复用类方法,都不用实例方法?
1.实例方法需要创建对象来调用,此时对象只是为了调用方法,对象占内存,这样会浪费内存
2.类方法,直接用类名调用,调用方便,也能节省内存

工具类没有创建对象的要求,建议将工具类的构造器进行私有

五、注意事项

1.类方法中可以直接访问类的成员,不可以直接访问实例成员
2.实例方法中既可以直接访问类成员,也可以直接访问实例成员
3.实例方法中可以出现this关键字,类方法中不可以出现this关键字

六、代码块

1.概述

代码块是类的5大成分之一(成员变量、构造器、方法、代码块,内容类)

2.分类

静态代码块

格式:static{}
特点:类加载时自动执行,由于类只会加载一次,所以静态代码块也只会执行一次
作用:完成类的初始化,例如:对类变量的初始化赋值

实例代码块

格式:{}
特点:每次创建对象时,执行实例代码块,并在构造器前执行
作用:和构造器一样,都是用来完成对象的初始化。例如:对实例变量进行初始化赋值

七、单例设计模式

确保一个类只有一个对象
1.饿汉式单例:拿对象时,对象早就创建好了
写法:
1.把类的构造器私有
2.定义一个类变量记住类的一个对象
3.定义一个类方法,返回对象

public class A{
private A(){}
private static A a=new A();
public static A getobject(){
return a;}
}

2.懒汉式单例:拿对象时,才开始创建对象
写法:
1.把类的构造器私有
2.定义一个类变量用于存储对象
3.提供一个类方法,保证返回的是同一个对象

public class B{
private static B b;
private B(){}
public static B getInstance()
{
if(b==null)
{b=new B();}
return  b;
   }
}
  • 44
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值