首页 > 其他分享 >static 知识

static 知识

时间:2022-09-18 10:44:48浏览次数:65  
标签:静态方法 变量 静态 知识 对象 static Feibo

static修饰的内容:

static表示静态的意思,可用来修饰类变量,类方法。static主要用于创建独立于具体对象的域变量或者方法。

static修饰变量时,此静态变量为该类所有对象共享,非静态的变量是对象“私有”的,在每次创建对象时被初始化,存在多个副本,各个副本互不影响。而静态变量是对象共享的,若一个对象改变了其值,其他对象也会受影响。调用:其它类调用它时可以用类名直接调用该属性,也可以用该类对象调用。 静态 不能修饰局部变量!在类的内部,可以在任何方法内直接访问静态变量。在其他类中,可以通过类名访问该类中的静态变量。

public class Feibo {
  static int age = 2; //使用static关键词声明静态变量
  public static void main(String[] args) {
    System.out.println(Feibo.age); //直接用类名访问静态变量
    Feibo practice=new Feibo(); //创建类的对象
    System.out.println(practice.age); //使用对象名访问静态变量
    practice.age=3; //使用对象名修改静态变量
    System.out.println(practice.age); /*使用对象名访问静态变量,发现静态变量的值已被修改,由于静态变量在被任何一个对象改变了数据后,其他对象的数据也会受到影响*/
  }
}

static修饰方法时,叫静态方法或类方法。类方法如其名,也是通过类名直接调用或者对象调用,但由于它不依赖于对象就可以访问,因此对于静态方法来说就没有this.的。由于这个特性,静态方法中就不止直接访问非静态成员方法和非静态成员变量,因为非静态是属于对象的,静态属于类的。非静态的方法是可以访问静态的方法和变量的。静态方法不需要通过它所属的类的任何实例就可以被调用.静态方法中不能使用 this 关键字和 super 关键字。不能直接访问所属类的实例变量和实例方法。可以直接访问所属类的静态变量和静态方法。

对于普通方法: 普通方法是需要加载类new出一个实例化对象,通过运行这个对象才能运行代码块,而静态方法随着类加载就运行了。
对于静态方法: 在类加载时静态方法也加载了,但是必须需要类名或者对象名才可以访问,相比于静态代码块,静态方法是被动运行,而静态代码块是主动运行。

public class Feibo {
public static void print() {
  System.out.println("123456"); //使用static关键词声明静态方法
  }
public static void main(String[] args) {
    Feibo.print(); //直接使用类名调用静态方法
    Feibo pr=new Feibo();//创建类的对象
    pr.print(); //使用对象名调用静态方法
  }
}

static修饰类时,此类为内部类,静态内部类不需要有指向外部类的引用而非静态内部类需要持有对外部类的引用。

static修饰对象时,此对象在编译前就存在于内存中,所以不用new去创建了,可以直接用类名去调用。

stati修饰代码块时,此时该代码块和静态变量属于一个加载的优先级。静态变量丶静态代码块都是随着类的加载而加载,优先于构造方法丶构造代码块。静态变量丶静态代码块同时存在时,谁编写在上面谁先加载,遵循顺序结构。静态代码块中不能有任何方法体的存在,而且它不能直接访问静态实例和实例方法,需要通过类的实例对象进行访问。静态块只在类名首次出现时调用一次,以后再也不调用了。通常用于初始化类,为类的静态变量赋初始值。

public class Feibo {
  static int a;
  static {
    a=3;
    }
public static void main(String[] args) {
  System.out.println(a);
  }
}

二:子方法static去掉的报错(求平方数的静方法)的原因,例子

去掉子方法中的static后,该方法变为非静态方法,不可以被静态的主方法访问。

public class Feibo {
  public static void main(String[] args) {
    int result;

    for (int x = 1; x <= 10; x++) {
      result = square(x);
      System.out.println("The square of " + x + " is " + result + "\n");
    }
   }

// 自定义求平方数的静态方法
public static int square(int y) {
  return y * y;
  }
}

标签:静态方法,变量,静态,知识,对象,static,Feibo
From: https://www.cnblogs.com/syhxx/p/16704357.html

相关文章

  • java中 static关键字
    在类中,使用static修饰符修饰的属性(成员变量)称为静态变量,也可以称为类变量,常量称为静态常量,方法称为静态方法或类方法,它们统称为静态成员,归整个类所有。静态成员不依赖于......
  • NLP 基础知识
    NLP基础知识ñ自然语言处理(NLP)是人工智能的一个子集,它处理计算机如何处理和理解自然语言或人类语言。它用于以语音或文本的形式处理人类语言,以便计算机可以使用它......
  • static关键字
    1.staticstatic翻译为“静态”所有static关键字修饰的都是类相关的,类级别的。所有static修饰的,都是采用“类名.”的方式访问。static修饰的变量:静态变量static修饰的方法:......
  • C++ 静态断言 static_assert
    目录从运行时断言谈起静态断言static_assert(C++11)单参数静态断言(C++17)static_assert使用场景参考资料C++11引入了静态断言static_assert,可以在编译期进行断言。从......
  • 张量分解(一)基础知识
    ......
  • Hive重要知识点及面试题
    知识点:Hive是数据仓库建模工具之一。传统的关系数据库具有结构化程度高、独立性强、冗余度低,主要是操作型数据库和分析型数据库。其中操作型数据库:主要用于业务支撑。一......
  • 10.4类和对象的相关知识
    classFruits:discount=0.8#类变量,静态变量#当所有的变量都用到同一个属性的时候,我们定义一个类变量def__init__(self,name,price):self.nam......
  • C++ 由快排学习到的的随机数等知识
    起:力扣的912题数组排序,想着先用快速排序来写写,在实际用c++编写的时候,有一些之前没注意到的细节问题造成了一些麻烦。912.排序数组-力扣(LeetCode)   快排......
  • 关于VLAN的相关知识回顾
    前情提要1、什么是vlan?2、vlan技术中有哪些东西?3、平常有做过哪些实验?4、…………算了吧,我基础不扎实,扯不动了/(ㄒoㄒ)/~~论在被人问到VLAN相关的知识的时候,该怎么扯......
  • 2022知识图谱发展报告[附下载]
      2022年《知识图谱发展报告》是中国中文信息学会语言与知识计算专委会发布的报告,算是国内最权威的关于知识图谱领域的最全和最新进展了。包括知识表示与建模、知识表示......