Java学习笔记之---static

static不能修饰类,局部变量

(一)静态成员的特征

static+属性  静态属性

  1. 无论实例化出来多少个对象,都会共用同一块静态空间,类对象共享
  2. 静态成员从第一次被加载之后一直到这个类不再有任何对象被使用,也就是说被彻底的销毁的时候,才会进行资源的释放,生命周期长
public class Pig {
String name;
static int price;
}
class PigTest{
public static void main(String[] args){
Pig a=new Pig();
a.name="小乳猪";
a.price=1000;
Pig b=new Pig();
b.name="宠物猪";
b.price=500;
System.out.println(a.name+":"+a.price);
System.out.println(b.name+":"+b.price);
}

运行结果:

小乳猪:500

宠物猪:500

(二)静态成员访问方法
  1. 对象名.成员
  2. 类名.成员  (推荐使用) 静态的访问方法
(三)静态方法(类方法)

        static+方法

(四)静态方法的调用
  1. 对象名.方法
  2. 类名.方法
(五)总结

1.静态方法中不能直接访问同一个类中的非静态成员,可以通过实例化对象进行调用;只能直接调用同一个类中静态成员,

2.静态方法中不能使用this和super,this和super是对象范畴的,而静态方法是类范畴的

3.父类中的静态方法不能被子类重写

(六)静态代码块

优先级:从低到高

  1. 普通代码块:顺序执行,先出现,先执行
  2. 构造代码块:创建对象时调用,优先于构造方法执行
  3. 静态代码块:类加载时调用,优先于构造代码块执行
 
 public class Pig {

    String name;

   static int price;

   public void eat(String name,int price){

      this.price=price;

      this.name=name;

   }

   public void run(){

       System.out.println("我是普通代码块");

   }

    {

        System.out.println("我是构造代码块");

    }

   static{

       System.out.println("我是静态代码块");
}
}

运行结果:

我是静态代码块

我是构造代码块

我是普通代码块

Java学习笔记之---static的更多相关文章

  1. 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类

    static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...

  2. Java学习笔记之static

    1.static可以用于修饰成员变量.方法以及块,并不会改变类中成员的权限修饰,如:private修饰的成员变量,类外只能类名或非私有方法调用,而不能使用对象名调用. 2.static方法和成员变量, ...

  3. JAVA学习笔记之static——2016.3.10

    static关键字   作用:修饰符,用于修饰成员<成员产量,成员方法>     1'被修饰的成员产量只有一份.     2'被修饰后的成员多了一种方式的访问,除了可以对象调用外,还可以被 ...

  4. Java学习笔记之——static关键字

    static属于类的,不属于任何一个对象的 static关键字的应用场景: 1.静态代码块:在类下用static修饰的代码块 static{ 代码: } 只能执行一次,是在第一次使用类之前执行 类加载 ...

  5. 1.6(java学习笔记)static关键字

    static关键字 1.static修饰变量也称静态变量,静态变量存放在静态区被该类的所有对象共享. 例如,定义了一个类class User{static Sring city = "a城& ...

  6. java学习笔记之基础篇

    java选择语句之switch   //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...

  7. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  8. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  9. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

随机推荐

  1. C++和QML混合的QT程序调试方法

    以前调试只是QML或者只是C++的QT程序很简单,断点打上,直接debug按钮一点,喝一口水,自然就停在断点了. 这次遇到C++和QML混合的程序,把CONFIG+=declarative_debug ...

  2. Android零基础入门第35节:Android中基于回调的事件处理

    原文:Android零基础入门第35节:Android中基于回调的事件处理 通过前面两期掌握了Android中基于监听的事件处理的五种形式,那么本期一起来学习Android中基于回调的事件处理. 一. ...

  3. nyoj7——街区最短问题

    描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间隔相等. 用(x,y)来表示住户坐在的街区. 例如(4,20),表示用户在东西方向第4个街道, ...

  4. Linux简单文本处理

    tr命令:tr [option] set1 [set2] 删除或者替换set1中的字符在文本表示这个问题中,windows系统下,\r\n为换行:而linux系统下,\n为换行.win->lin ...

  5. 分享基于.NET动态编译&Newtonsoft.Json封装实现JSON转换器(JsonConverter)原理及JSON操作技巧

    看文章标题就知道,本文的主题就是关于JSON,JSON转换器(JsonConverter)具有将C#定义的类源代码直接转换成对应的JSON字符串,以及将JSON字符串转换成对应的C#定义的类源代码,而 ...

  6. [转]深入Android内存泄露

    深入内存泄露 Android应用的内存泄露,其实就是java虚拟机的堆内存泄漏. 当然,当应用有ndk,jni时,没有及时free,本地堆也会出现内存泄漏. 本文只是针对JVM内存泄漏应用,进行阐述分 ...

  7. 跨进程访问VCL的一个用例(Delphi6、TurboDelphi测试通过)

    Controls.pas单元中有一个FindControl函数,通过句柄获得对应的TWinControl对象. function FindControl(Handle: HWnd): TWinCont ...

  8. 使用SqlSugar封装的数据层基类

    首先简单封装了个DbContext public class DbContext { #region 属性字段 private static string _connectionString; /// ...

  9. Delphi 10.2 Tokyo的新特性

    Delphi 10.2(Tokyo)出来一段时间了,最重要的新特性就是支持Linux的服务端. 官网有详细的介绍: 这里是主要的特性介绍:https://www.embarcadero.com/pro ...

  10. python 方法无法在线程中使用(附python获取网络流量)

    在python中,定义一个方法,直接调用可以,但是创建一个线程来调用就可能导致失败.这种现象多出现在使用com对象进行系统操作时,而且是以线程的形式调用. 异常提示如下:syntax error.WM ...