zoukankan      html  css  js  c++  java
  • static,匿名对象

    特点:

      随着类的加载而加载

      优先于对象存在

      被所有对象所共享

      可以直接被类名调用

    使用注意:

          静态方法只能访问静态成员 但是非静态成员可以访问静态成员;

      静态方法中不可以使用this,super关键字

      主方法(main)是静态的 public static void main(String[] agrs){}

     方法的调用:
     1 /*
     2         特点:
     3             随着类的加载而加载
     4             优先于对象存在
     5             被所有对象所共享
     6             可以直接被类名调用
     7 
     8             方法的调用:
     9                 1.对象调用:  对象.方法(实参);
    10                                 
    11                 2.类调用     这个方法所在的类的名字.方法(实参);
    12                             //前提:  这个被调用的方法必须使用 static修饰
    13 
    14             static in num = 100;//表示人类的总数
    15         
    16 
    17             在JVM内存区中有一块存储区域:  静态区域,专门存储类成员
    18 
    19         */
    20 
    21 
    22 //描述人类
    23 class Person
    24 {
    25     
    26 
    27     //static Person(){}//StaticDemo.java:27: 错误: 此处不允许使用修饰符static
    28     /*
    29         没有使用static修饰的方法或字段,属于对象  -- >  实例成员
    30         
    31                 
    32         使用static修饰的方法或字段,属于类         --->  类成员
    33 
    34 
    35         调用:
    36                 若是实例成员:只能通过对象来调用;
    37                 若是类成员: 可以使用类名调用; 也可以使用对象来调用;
    38                             建议使用:类名来调用;        其实在底层,对象调用类成员,也会转换类名调用
    39 
    40 
    41 
    42 
    43                 static方法,主要用在做工具类的方法的时候(工具方法)
    44     */
    45     String name;
    46 
    47     int age;
    48 
    49     
    50     static int num = 100;//人类总数
    51 }
    52 
    53 class StaticDemo 
    54 {
    55     public static void main(String[] args) 
    56     {
    57         System.out.println("通过类名来调用类成员= " + Person.num);
    58         //System.out.println("通过类名来调用实例成员= " + Person.age);
    59         System.out.println("通过对象来调用实例成员= " + new Person().age);
    60         System.out.println("通过对象来调用类成员= " + new Person().num);
    61 
    62 
    63         //故意使用对象来调用类成员
    64 
    65         Person p1  = new Person();
    66 
    67         //p1去修改人类总数
    68         p1.num = 95;
    69         
    70         System.out.println("p1.num= " + p1.num);//95
    71         Person p2 = new Person();
    72 
    73         System.out.println("p2.num= " + p2.num);//95 //因为staric是被所有对象所共享
    74 
    75         
    76         //对方法或字段只进行一次调用时;
    77         //new Person();表示匿名对象,没有名字的对象
    78 
    79         new Person().age = 17;//使用一次之后就被销毁了
    80         System.out.println(new Person().age);//0
    81         
    82         
    83 
    84         //==  判断对象时候是同一个对象,其实比较的是  堆里面的地址
    85         System.out.println("p1 == p1" +(p1 == p1));//true
    86         System.out.println("new Preson() == new Person()" + (new Person() == new Person()));//false
    87 
    88     }
    89 }

     

    访问字段和方法:

    • 类和实例访问字段和方法的语法:
      • 访问类成员: 类.字段 类.方法
      • 访问实例成员: 实例.字段 实例.方法

    static 修饰的字段和方法,既可以通过类调用,也可以使用实例调用;

    没static 修饰的字段和方法,只能使用实例来调用

    匿名独享:

      

    特点:

      对方法或字段只进行一次调用时;

        new Car().show();

        new Car().run();

      可作为实际参数进行传递;

        public void show(Car c){ }

        new Car().show(new Car());

      只在堆内存中开辟空间,而没有在栈内存的引用。  

    如果只调用一次:匿名对象

    如果要调用多次:实例

  • 相关阅读:
    第三第四周的笔记
    第一二周的笔记
    jQuery的一些笔记
    函数的执行环境与调用对象
    从click事件理解DOM事件流
    慕课编程题JS选项卡切换
    adb(11)-重新挂载 system 分区为可写
    adb(10)-屏幕截图/录制
    adb(9)-查看设备信息
    adb(8)-查看日志
  • 原文地址:https://www.cnblogs.com/WestVillagedevil/p/6092744.html
Copyright © 2011-2022 走看看