zoukankan      html  css  js  c++  java
  • 2020.7.22

    一、今日学习内容

       1、static关键字

            通常访问类的属性和方法需要创建该类的实例,而static关键字的访问是不需要某个特定的实例的。如果在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,就能够在它的类的任何对象创建之前被访问,而不必引用任何对象,用户可以将方法和变量都声明为static。

       (1)静态变量

               静态变量只需要在变量前加上static 关键字即可,静态变量不需要通过对象来访问,直接使用“类名.变量名”直接访问,并且该变量不属于具体的哪一对象。
               示例:

    public class VarDemo {
           private static int x=1;
           public static void main (String[] args) {
                VarDemo.x++;
                //使用类名直接访问
               VarDemo V = new VarDemo() ;
                V.x++;
               //使用对象访问
               System. out.println("x="+x);
          }
    }

              输出结果:x=3

              不管使用对象访问还是使用类名访问,对x的值都起到了作用,那是因为静态变量是属于整个类的,并不属于某一个具体的对象。

       (2)静态方法

                示例:

    public class StaticMethodDemo {
           public static void main (String[] args) {
                / /通过类名直接访问
               Static MethodDemo. test() ;
          }
           public static void test() {
                 System. out.println("test...") ;
          }
    }

        (3)静态代码块

               static代码块也叫静态代码块,可以有多个,并且位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,static代码块会优先与构造器执行,如果static代码块有多个,JVM 将按照它们在类中出现的先后顺序依次执行,每个代码块只会被执行一次。

              示例:观察静态代码块的执行的顺序

    public class Stati cBlockDemo {
        static{
            System. out.print1n ("静态代码块") ;
         }
         public Stati cBlockDemo() {
              System. out.print1n ("构造方法");
         }
        public static void main(String[] args) {
             StaticBlockDemo d = new Stati cBlockDemo () ;
             StaticBlockDemo d2 = new StaticBlockDemo ();
        }
    }

            输出结果:静态代码块

                              构造方法

                              构造方法

            静态代码块优先于构造方法执行,并且静态代码块在类加载时,只执行一次。

       2、final关键字         

            final关键字是最终的意思,使用final 修饰类,代表该类是不能被继承的。final 修饰方法表示该方法不能被重写。final 修饰变量,代表该变量是常量。

            (1)final属性

    public class FinalVarDemo {
         private static final int x=5;
         //该属性不能修改
          public static void main(String[] args) {
              x=10;   //报错!
           }
    }

             使用final 修饰的属性不能修改,一旦修改,编译的时候就会报错!通常使用final修饰的属性,表示已经确定的值,不能被修改,如PI=3.14159等。

          (2)final方法

                 使用final 修饰方法时,该方法不能被重写。注意,这里所说的不能被重写,并不是指子类一定不能定义同名方法,如果父类的方法是私有类型,子类是允许定                 义该方法的。

                示例:

    class A{
        public final void t() {
              System. out.println("A t()") ;
         }
    }
    class B extends A{
          //编译错误!父类方法为final类型,子类不能重写
          public void t () {
              System. out.println("Bt()") ;
          }
    }

            该例子在编译时就会报错,因为final 方法是不允许被重写的。

         (3)final类:使用final修饰的类,表示该类不能被继承

                 示例:

    final class A{
       public final void t() {
          System. out.println("At()") ;
      }
    }
    class B extends A{
        / /编译错误!子类不能继承
    }

    二、遇到的问题

         没有遇到很复杂的问题

    三、明日计划

         明天继续学习第五章的内容

  • 相关阅读:
    创建自定义 AJAX 客户端控件(msdn)
    使用jquery的blockui插件显示弹出层
    Sql Server高手必备
    Js获取当前日期时间及其它操作
    在VS2010中创建自定义的代码段
    存储过程分页
    完美辨析各种高度区别
    程序员必备的正则表达式
    Sql日期格式化
    C#调用Quartz实例代码
  • 原文地址:https://www.cnblogs.com/wmdww/p/13362822.html
Copyright © 2011-2022 走看看