java中的static关键字

有几次面试问道了static关键字的用法,由于当时没有回答上来,现在整理一下。

一、static的用法

static,顾名思义,是“静态的”意思,静态的就是不动的,不动并不是说static修饰的变量、方法不能改变,而是被static修饰的变量、方法不会因为对象(实例)的改变二改变。《Java编程思想》上这样说:static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。被static修饰的变量、方法不需要依赖于对象来进行访问,只要类被加载,就可以通过类名.变量(方法)来进行访问。

static可以用来修饰变量、方法和代码块这三种内容。

1、static修饰变量。

定义方式:static int a;则这个被static修饰的变量称为静态变量。那么不被static修饰的变量自然就被称为非静态变量。静态变量与非静态变量的区别在于:静态变量在内存中只保存一次,每个对象(实例)在初始化时,所用的静态变量都指向同一位置。非静态变量在内存中有多个,有一个对象(实例)就有一个非静态变量。静态变量只在类被初次加载时初始化,只初始化一次。如果没有对静态变量显示初始化,则构造器会将静态变量初始化为0。静态变量可以通过类名.变量名进行赋值。

static不能用来修饰类的方法中的局部变量。

2、static修饰方法

定义方式为:public static void fun()。其中,public和void可换成其他修饰符。

被static修饰的方法称为静态方法。静态方法不依赖于任何对象,可以通过类名.方法名访问。静态方法内部不能使用this关键字。因为不依赖于对象,所以不需要关键字this。在静态方法内部可以调用类的非静态变量和非静态方法。但是非静态方法总可以调用静态变量和静态方法。如果想在不创建对象的情况下调用某个方法,则把那个方法设为静态方法。常见的静态方法是main方法。因为那时候还没有对象,只能通过类名访问main方法。其他,Math类中的所有方法都是静态的

注意:即使没有显示的声明为static,类的构造方法都是static的

3、static修饰代码块

定义:

static
{
    //代码块
}
使用静态代码块主要是用来优化程序性能。因为这部分代码只在类被加载时执行一次。可以创建多个静态代码块。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值