`

Java之static关键字解析

阅读更多
一.static关键字的用途
    static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。简而言之,一句话来描述就是:
  方便在没有创建对象的情况下来进行调用(方法/变量)。
  很显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
  static可以用来修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。
static可以用来修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。

1)static方法
  static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
  但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。而对于非静态成员方法,它访问静态成员方法/变量显然是毫无限制的。
  因此,如果说想在不创建对象的情况下调用某个方法,就可以将这个方法设置为static。我们最常见的static方法就是main方法,至于为什么main方法必须是static的,现在就很清楚了。因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。另外,即使没有显示地声明为static,类的构造器实际上也是静态方法。

2)static变量
  static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

  static成员变量的初始化顺序按照定义的顺序进行初始化。

3)static代码块

  static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

  为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。
二.static关键字的误区
1.static关键字会改变类中成员的访问权限吗?
    Java中的static关键字不会影响到变量或者方法的作用域。在Java中能够影响到访问权限的只有private、public、protected(包括包访问权限)这几个关键字。
2.能通过this访问静态成员变量吗?
    静态成员变量虽然独立于对象,但是不代表不可以通过对象去访问,所有的静态方法和静态变量都可以通过对象访问(只要访问权限足够)。

3.static能作用于局部变量么?
  在C/C++中static是可以作用域局部变量的,但是在Java中切记:static是不允许用来修饰局部变量。不要问为什么,这是Java语法的规定。

分享到:
评论

相关推荐

    Java中的static关键字

    Java 中的 static 关键字 Java 中的 static 关键字是用于声明类的成员变量和成员方法的,它可以使得变量和方法属于类本身,而不属于某个对象。静态变量也称为类变量,静态方法也称为类方法。静态变量和静态方法可以...

    Java中的static关键字全面解析

    本文将全面解析`static`关键字的用途、常见误区以及在面试和笔试中可能出现的相关问题。 首先,`static`关键字主要用于声明类级别的成员,包括静态方法(`static` methods)、静态变量(`static` variables)以及...

    java 关键字解析

    ### Java关键字解析 Java是一种广泛使用的面向对象编程语言,它为开发者提供了丰富的特性和功能,以简化复杂的软件开发过程。Java的关键字是预定义的保留字,在Java编程中具有特殊的含义和用途。本文将深入探讨Java...

    Java static关键字解析

    Java static关键字解析静态内部类(默认指外部类的内部类)静态方法静态变量静态语句块 范围:只围绕外部类进行讨论,例如内部类的内部类这种多层套娃式的暂不进行讨论 jdk版本: jdk8 静态内部类(默认指外部类的...

    java中带static关键字的程序内存分析

    在Java编程语言中,`static`关键字扮演着重要的角色,它影响着类和对象的内存分配方式。理解`static`关键字对于深入理解Java程序的内存管理至关重要。在本文中,我们将详细探讨`static`关键字在Java程序内存分析中的...

    java之static关键字用法实例解析

    本文将深入探讨`static`关键字的原理、用法,并通过实例进行解析。 一、`static`关键字的基本概念 1. 静态成员变量(静态字段): 当一个变量前加上`static`关键字时,它就成为了类的静态成员变量。这意味着无论...

    static 关键字详解

    ### static关键字详解 在Java编程语言中,`static`关键字是一个非常重要的概念,它用于定义类成员(变量、方法和内部类)的行为属性。当一个类成员被声明为`static`时,它就成为了该类的静态成员,这意味着无论创建...

    Java关键字解析.pdf

    本文将深入解析几个关键的Java关键字及其用法。 首先,`instanceof`关键字用于判断一个对象是否属于某个类、接口或其子类/实现类。它的基本形式是`boolean result = obj instanceof Class`。需要注意的是,`obj`...

    Java面向对象(高级)- static关键字的使用

    2. **static关键字的说明**: `static`可以修饰属性、方法、代码块和内部类,但不能修饰构造器。被`static`修饰的成员在类加载时就会被创建,它们的生命周期比任何对象都要长。静态成员可以直接通过类名访问,无需...

    从内存地址解析Java的static关键字的作用

    Java的`static`关键字在编程中扮演着至关重要的角色,尤其是在内存管理方面。它主要用于定义类级别的变量和方法,而不是实例级别的。理解`static`的关键在于了解Java内存模型,包括堆内存、栈内存和数据区。 1. **...

    Java关键字大全 Java关键字大全

    2. `boolean`: `boolean` 是 Java 的原始数据类型之一,用于表示逻辑值,即 `true` 或 `false`。例如: ```java boolean isTrue = true; if (isTrue) { // 执行某些操作 } ``` 3. `break`: `break` 语句用于立即...

    浅析java 的 static 关键字用法

    本文将深入解析`static`关键字的五个主要用途:静态成员变量、静态方法、静态初始化块、静态内部类以及静态导包。 1. 静态成员变量(静态变量) 静态成员变量属于类,而不是类的实例。这意味着所有类的实例共享...

    Static关键字共5页.pdf.zip

    《静态关键字Static在Java编程中的深度解析》 在Java编程语言中,`static`关键字扮演着至关重要的角色,它能够修饰类的成员变量和方法,赋予它们特殊的特性。本篇文章将深入探讨`static`关键字的含义、用法以及在...

    java编程全部关键字解释

    Java编程语言的关键字是语言的核心组成部分,它们具有特殊含义,被Java编译器解析和执行。下面我们将逐一探讨这些关键字的详细解释。 1. `abstract`:`abstract` 关键字用于声明抽象类和抽象方法。抽象类不能直接...

    this和static关键字,javadoc文档的产生

    在Java编程语言中,`this`和`static`是两个非常关键的关键字,它们各自扮演着不同的角色,帮助我们更好地理解和使用类与对象。本文将深入探讨这两个关键字以及如何使用Javadoc工具生成文档。 首先,让我们来理解`...

    Java的关键字与保留字

    在编程语言中,关键字是预定义的具有特殊含义的标识符,它们在编译时被解析器识别并执行特定的功能;而保留字则是语言设计者为未来版本预留的标识符,尽管当前版本未使用,但为了兼容性和一致性,程序员应避免将其...

    Java开发腾讯面试重点解析-关键字与语法

    内容概要:本文详细解析了 Java 开发中常见的面试题,涵盖了 static 关键字、transient 和 volatile 关键字以及 synchronized 的原理和应用。针对每个关键字,文章不仅介绍了其基本概念,还通过具体代码示例进行了...

    java之super关键字用法实例解析

    在Java编程语言中,`super`关键字是一个非常重要的概念,它用于引用当前对象的父类中的成员。`super`关键字的使用主要有以下几个方面: 1. 访问父类的成员变量: 当子类和父类有同名的成员变量时,通过`super`...

    java实现查找PDF关键字所在页码及其坐标

    在java中,实现查找PDF关键字所在页码及其坐标可以使用iText库,该库提供了对PDF文件的读取和解析能力。下面是一个简单的示例代码: 首先,需要引入iText库的相关依赖项,例如: ```java import ...

    Java中的Static块与静态方法

    本文将深入探讨Java中的静态块与静态方法,解析它们的区别、联系以及执行顺序,帮助读者更全面地理解`static`关键字在Java中的运用。 ### 静态方法 静态方法是通过`static`关键字声明的,它属于类而不属于类的任何...

Global site tag (gtag.js) - Google Analytics