Java之static

一、静态性

属于类,不属于对象的方法或数据

二、用法(只能出现在成员级别)

可以用来修饰 类、方法、变量、代码块、静态导包

1、修饰变量:static变量

1、可以修饰属性、方法、内部类、代码块
2、使用:访问权限 static 方法变量=初始化值;

private static String str1 = "ly";

3、特点:被两个对象可共享,在内存中有一个副本,尚且仅当在类初次加载时会被初始化
4、若有多个static变量,被定义时有序依次初始化

2、修饰方法:静态方法

方法分为普通方法和静态方法,普通方法对象调,静态方法类来调

1、不依赖任何对象就可以访问
2、静态方法设有this
3、静态方法中不能访问非静态成员方法和非静态变量
4、非静态可以访问静态

**静态方法调用:**
类名.静态方法名();
Myclass.println();

3、修饰代码块:static 代码块–优化程序性能

1、可以置于类的任何地方
2、类中可以有多个static块
3、在类的初次加载时,会按static块的顺序依次执行,static块只执行一次

4、static修饰内部类

1普通类是不允许声明为静态的,只有内部类才可以

2被static修饰的内部类可以直接作为一个普通类来使用,而不需实例一个外部类

静态内部类
 public class Outer {
 public static class Inner{
 Inner(){
 System.out.println(“静态内部类”);
}
 }
}

 public class TestStatic {

 // 不需要new一个对象
 new Outer.Inner();
 }
 }

三、总结

1、方便在没有对象的情况下进行调用
2、static方法不可以调用非静态方法可调用静态
3、static方法就是没有this的方法

四、总的一句话:和类的对象解绑

1、修饰代码块      在类的加载之前没有对象
2、修饰变量
      如果不用static修饰,属性放在--对象
      如果用static修饰,属性放在--类
3、修饰方法
      如果不用static修饰方法
      运行时期:在方法调用时,调用栈,参数中会有一个隐式的引用--this,指向方法的调用对象
      如果用static修饰方法,不能直接使用属性和方法
      运行期间:在方法调用时,调用栈,参数中没有这个隐式的引用
**注:**
1、static关键字无法改变成员的访问权限
2、static程序块,jvm会优先加载静态块中的代码,主要用于系统初始化
3、jvm存储:
一个static变量jvm会将其分配在内存堆上,所有程序对它的引用都会指向一个地址而不会重新分配内存

五、问题:

一、什么时候用静态方法or非静态方法
1、通讯录类:(和对象有关系)使用非静态方法
操作:根据姓名电话
Main直接调用的时候,一般用静态

二、为什么main方法是static?
在Java程序运行时,是没有实例化任何对象的,只能通过调用类方法来运行main方法,所以会用static来修饰

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值