static修饰符与final修饰符

■ static修饰符与final修饰符:
   ★ static修饰符:
    1. 修饰的对象:
      类中的成员(属性[静态变量或类变量]和方法[静态方法或类方法])
    2. 静态属性的特点:
      1. 静态变量被所有对象共享
      2. 随着类的加载而加载,随着类的消失而消失,和对象的创建无关
      3. 可以直接被类名调用
    3. 静态方法的特点:
      1. 静态方法优先于对象存在,在静态方法中无法访问与对象相关的实例变量(这时候对象还没有创建,其属性也就没有)
      2. 静态方法无法访问实例变量
      3. 静态方法可以访问静态变量
      4. 实例方法可以访问静态变量
      5. 静态方法无法访问实例方法
      6. 静态方法只能访问静态方法或静态变量,无法访问非静态
      7. 实例方法可以访问静态(属性和方法)和非静态(属性和方法)
      8. 静态方法无法访问this,super(this,super是属于对象的)
      9. 使用子类可以访问父类中的静态方法和静态变量
    4. 静态变量与实例变量的区别:
      1. 所属区域不同
        静态变量: 静态变量属于类
        实例变量: 实例变量属于对象
      2. 调用的方式不同
        静态变量: 可以被类名调用,也可以使用对象调用
        实例变量: 只能被对象调用
      3. 存储的位置不同
        静态变量: 存储在方法区
        实例变量: 存储在堆中
      4. 加载顺序
        静态变量: 随着类的加载而加载,随着类的消失而消失,和对象的创建无关
        实例变量: 随着对象的创建而创建,随着对象的销毁而销毁
      5. 如何使用静态方法和实例方法:
        1. 如果方法中不需要访问类中的属性(实例变量),那么就可以把方法定义为静态的,方便使用
        2. 如果方法中需要访问类中的属性(实例变量),那么就必须方法定义为非静态的
      6. 静态代码块:
        1. 语法:
          

        2. 当类第一次被加载到内存时,会在最后调用静态代码块且只调用一次
      7. 构造代码块
        1. 语法:
         

        2. 构造代码块创建对象的时候调用,在构造代码块写一些构造器中的共性,

          会在构造器中最先调用构造代码块,后执行自定义初始化
        3. 创建对象时做的事情:
          1. 先看类是否加载,如果类是第一次使用会加载类
          2. 接着加载类中的静态成员
          3. 调用静态代码块
        4. new:
          1. 在内存中为对象分配空间
          2. 确定对象的首地址
          3. 为实例变量进行默认初始化
          4. 如果有显示初始化,在进行显示初始化
        5. 调用构造器
          1. 调用父类的空参构造器super()
          2. 调用构造代码块
          3. 执行自定义初始化

  ★ final修饰符: 修饰类,方法,属性,局部变量
    1. 当修饰方法时,被final修饰的方法称为最终方法,不能重写
    2. 当修饰类时,被final修饰的类是最终类,不能被继承,例如: String
    3. 被final和static修饰的变量(此时称之为常量)的名字要大写

时间: 2024-10-13 15:18:14

static修饰符与final修饰符的相关文章

Java修饰符------>static、native和final以及super和this关键字

修饰符修饰符的作用是让被修饰的内容具备特定的功能,在程序中合理使用修饰符可以在语法和功能上实现很多需要的效果.Java 语言中的修饰符主要有 5个:static.final.native.abstract 和 synchronized.这里首先讲解 static.final 和 native 的作用. static 修饰符static 关键字的中文意思是静态的,该修饰符可以修饰成员变量,成员常量和成员方法.使用该关键字修饰的内容,在面向对象中 static 修饰的内容是隶属于类,而不是直接隶属于

java修饰符public final static abstract transient

JAVA 修饰符public final static abstract transient 关键字: public final static abstract ... 1.public protected default private 组 位置                        private      默认      protected        public 同一个类                    是            是         是         

Java中的(构造方法、方法重载、final修饰符使用及继承和抽象)

构造方法: 构造方法的名称和类名相同,没有返回类型,参数列表(类型.个数)不同 方法重载:成员方法和构造方法都可以进行重载 方法名相同但是参数列表(类型,个数)不同,成为方法的重载. 继承:直支持单继承,一个类只能有一个父类 继承要用extends关键字修饰 public class Dog extends Pet{ //方法体 } 子类调用父类公用的成员变量和方法需使用关键字super 如super.方法名 super(成员变量,成员变量....) 方法重写: 方法重写的需求: 1.重写方法和

final修饰符的三种使用场景

final有三种使用场景,各自是修饰变量.方法和类.不管哪种修饰.一旦声明为final类型.你将不能改变这个引用了,编译器会检查代码,假设你试图再次初始化,编译器会报错.以下我来详细说说每一种修饰场景. 1.修饰变量 当final修饰一个变量的时候一般把他作为常量.通常和statickeyword配合使用. 比如: private static final String ISSUCCESS_FLAG = "true";一般static修饰的常量都用大写字母来表示. 在这里我写一段代码:

Static.final修饰符、super关键字及常量与变量

一.Static static 静态修饰符,用来修饰类的属性或方法 如果类的某个属性,不管创建多少个对象,属性的存储空间只有唯一的一个,那么这个属性就应该用static修饰,称为静态属性. static属性可以使用对象调用,也可以直接用类名调用,静态属性是类的所有对象共享的,即不管创建了多少个对象,静态属性在内存中只有一个. static块和static的属性以及方法的性质是相同的,用static修饰的代码块表示静态代码块,当Java虚拟机加载类时,就会执行该代码块. 静态块只有在类加载的时候被

JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配

Java栈与堆 堆:顺序随意 栈:后进先出(Last-in/First-Out). Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.newarray.anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放.堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据.但缺点是,由于要在运行时动态分配内存,存取速度较慢. 栈的优势是

类成员(static)和final修饰符

在Java类里只能包含成员变量.方法.构造器.初始化块.内部类(包括接口.枚举)5种成员,类成员是用static来修饰的,其属于整个类. 当使用实例来访问类成员时,实际上依然是委托给该类来访问类成员,因此即使某个实例为null,它也可以访问它所属类的类成员. public class NullAcessStatic { public static void test() { System.out.println("static修饰的类方法"); } public static void

【Java】基础:常见修饰符(权限修饰符以及abstract、static、final等)与变量的描述

1. 修饰符 public.protected.private.default abstract.static.final. abstract:抽象类.抽象方法 static:静态变量.静态方法.静态代码块 final修饰类.方法.变量 transient.violatile.native.synchronized 2. 变量 实例变量.局部变量.类变量 1. 修饰符 · public.protected. private.default 修饰类时的访问权限   当前类 同包 子孙类 其它包 p

public等访问修饰符和final,static的用法

一.访问修饰符 1.public:表明该数据成员.成员函数是对所有用户开放的,所有用户都可以直接进行调用 2.private:表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用. 3.protected:对于子女.朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private. 对比Table: 作用域 当前类 同一package 子孙类 其他package