描述static, final, synchronized, volatile的作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了描述static, final, synchronized, volatile的作用相关的知识,希望对你有一定的参考价值。

参考技术A static : 在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在
final : 用final修饰一个类就表明这个类不能被继承,对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改
synchronized: 用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码
volatile : 修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。
线程:就相当于程序有两个main函数同时运行
还不明白哪里请回复本回答被提问者采纳

类的继承

一.高级类特性

static:修饰属性、方法、块、内部类

final:修饰类、常量属性、方法、局部常量

abstract:修饰类、方法

 synchronized:修饰方法、同步代码块

二.static的使用

1.定义:static被称为静态,可以用来修饰类的属性或者方法。

2.作用:当static修饰类,方法,变量是,第一时间在内存中开辟一个空间,以后使用不管是调用还是修改,都是在该地址内。

3.静态方法:使用static修饰的方法。例如 public static void font(){   “静态方法 ”   };

(1)作用:表示该方法跟对象无关,是个类的方法。

(2)静态方法的调用:static方法可以使用对象调用,也可以直接用类名调用,建议用类名直接调用

例:

public class dfd {
        private static  int tak=11;
        
        public static void tak(){
          int i;
          
          for(i=1;i<10;i++){
              tak=tak-1;
              System.out.println(tak);
          }
            System.out.println(tak);
            
        }
    }        
 public class ip{
    public static void main (String [] args){
        dfd.tak();               //静态方法的调用可以用类名直接调用
    }
}

4..静态块

(1)定义:直接在代码块前,加上关键字static即成为静态块。例如

static{

  System.out.print(“静态块”);

}

(2)静态块总是在类执行的时候执行,且只能执行一次,但一个类中可以有多个静态块,按照顺序执行。

三.final修饰符

(1)修饰范围:属性(成员变量)  局部变量    类       方法

(2)作用:修饰变量表示值不能被修改,修饰类表示不能被继承,修饰方法表示不能被子类覆盖。

四.this关键词

this关键字代表自身。

作用:   1) this 关键字是类内部当中对自己的一个引用,可以方便类中方法访问自己的属性;

      2)可以返回对象的自己这个类的引用,同时还可以在一个构造函数当中调用另一个构造函数。

    3)在一个类的内部,成员方法之间的互相调用时也可以使用“this.方法名(参数)”来进行引用,只是所有这样的引用中this都可以省略。

public class ThisDemo {  
    String name;
    int age;
    public ThisDemo (){ 
        this.age=21;
   }     
    public ThisDemo(String name,int age){
        this();
        this.name="Mick";
    }     
  private void print(){
         System.out.println("最终名字="+this.name);
         System.out.println("最终的年龄="+this.age);
    }
    public static void main(String[] args) {
       ThisDemo tt=new ThisDemo("",0); //随便传进去的参数
       tt.print();
    }
}

注意:this关键字必须放在非静态方法里面

五.继承

定义:指一个类的定义可以基于另外一个已经存在的类,即子类基于父类,从而实现父类代码的重用,子类能吸收已有类的数据属性和行为,并能扩展新的能力。

形式:【访问权限修饰符】【修饰符】子类名 extends 父类名{子类体}      //【】中的内容可以省略

作用:代码的复用,子类对象可以直接调用父类的属性和方法。

六.super关键字

super关键字代表父类的引用。

作用:

(1) 当子类方法体中的局部变量或者子类的成员变量与父类成员变量同名时,即子类局部变量覆盖父类成员变量时,用“super.成员变量名”来引用父类成员变量

(2)当子类的成员方法覆盖了父类的成员方法时,也就是子类和父类有完全相同的方法定义(方法体可以不同),此时,用“super.方法名(参数列表)”的方式访问父类的方法。

注意(1)与this的区别,this通常指代当前对象,super通常指代父类。

      (2)在子类构造方法中要调用父类的构造方法,需要注意:super语句只能出现在子类构造方法体的第一行。

以上是关于描述static, final, synchronized, volatile的作用的主要内容,如果未能解决你的问题,请参考以下文章

1.使用哪个修饰符修饰的类不能实例化。 〖 〗 A)final B)abstract C)synchronized D)static 2.下面定义了

java基础知识

类的继承

Java基础:常见修饰符(权限修饰符以及abstractstaticfinal等)与变量的描述

错题集01

笔试题。