- 浏览: 82607 次
- 性别:
- 来自: 北京
文章分类
一.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语法的规定。
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语法的规定。
发表评论
-
常用脚手架
2021-02-09 17:33 272Java 工程脚手架: https://st ... -
idea常用插件
2021-01-20 17:35 3981、Alibaba Java Coding Guideli ... -
Dubbo multicast Can't assign requested address问题解决
2020-01-15 18:22 432dubbo multicast模式启动项目报错 java. ... -
Mac使用多个git账号
2020-01-13 17:08 491话不多说,直接上干货。 1、生成密钥(SSH Key) ... -
Mac 安装指定版本thrift
2019-04-17 14:15 2546前言: 在mac中使用 brew install ... -
Mac 使用 brew安装指定版本protobuf
2019-04-12 09:54 3030前言: 在mac中使用 brew install ... -
dubbo服务telnet命令
2018-12-26 10:14 2322dubbo服务发布之后,我们可以利用telnet命令进行调 ... -
Google Guava缓存
2018-12-13 11:45 748适用性 缓存在很多情况下非常实用。例如,计算或检索一 ... -
java获取ip地址与主机名
2018-08-28 16:10 805System.out.println("本机IP:& ... -
Spring框架四大原则
2018-06-27 10:09 0Spring框架本身有四大原则 1、使用POJO进行轻量级 ... -
工具下载
2018-06-27 09:37 01、IntelliJ IDEA 下载地址 https:// ... -
23种设计模式全解析
2018-05-28 17:03 801一、设计模式的分类 总体来说设计模式分为三大类: ... -
.sh脚本执行java程序
2018-05-02 17:45 14131、不引用外部资源 首选创建HelloWorld.jav ... -
Java根据url生成二维码
2018-03-29 18:32 1603package com.dc.test; import ... -
使用ibatis时遇到Error parsing XPath '/sqlMapConfig/sqlMap'低级错误
2018-01-12 12:16 2233使用ibatis时,遇到一错误。是疏忽造成的,留作记录。错 ... -
java压缩与解压
2017-12-20 15:37 913package com.dc.util; impor ... -
生僻字与16进制的转换
2017-12-20 10:36 1493字符串中的生僻字在传输和存储的过程中存在着各种各样的问题,为 ... -
java时间处理工具类
2017-12-20 08:20 934package com.dc.util; import ... -
SHA加密
2017-12-20 08:20 875package com.dc; import jav ... -
RSA加密解密
2017-12-19 10:34 1030package com.dc; import java ...
相关推荐
Java 中的 static 关键字 Java 中的 static 关键字是用于声明类的成员变量和成员方法的,它可以使得变量和方法属于类本身,而不属于某个对象。静态变量也称为类变量,静态方法也称为类方法。静态变量和静态方法可以...
本文将全面解析`static`关键字的用途、常见误区以及在面试和笔试中可能出现的相关问题。 首先,`static`关键字主要用于声明类级别的成员,包括静态方法(`static` methods)、静态变量(`static` variables)以及...
### Java关键字解析 Java是一种广泛使用的面向对象编程语言,它为开发者提供了丰富的特性和功能,以简化复杂的软件开发过程。Java的关键字是预定义的保留字,在Java编程中具有特殊的含义和用途。本文将深入探讨Java...
Java static关键字解析静态内部类(默认指外部类的内部类)静态方法静态变量静态语句块 范围:只围绕外部类进行讨论,例如内部类的内部类这种多层套娃式的暂不进行讨论 jdk版本: jdk8 静态内部类(默认指外部类的...
在Java编程语言中,`static`关键字扮演着重要的角色,它影响着类和对象的内存分配方式。理解`static`关键字对于深入理解Java程序的内存管理至关重要。在本文中,我们将详细探讨`static`关键字在Java程序内存分析中的...
本文将深入探讨`static`关键字的原理、用法,并通过实例进行解析。 一、`static`关键字的基本概念 1. 静态成员变量(静态字段): 当一个变量前加上`static`关键字时,它就成为了类的静态成员变量。这意味着无论...
### static关键字详解 在Java编程语言中,`static`关键字是一个非常重要的概念,它用于定义类成员(变量、方法和内部类)的行为属性。当一个类成员被声明为`static`时,它就成为了该类的静态成员,这意味着无论创建...
本文将深入解析几个关键的Java关键字及其用法。 首先,`instanceof`关键字用于判断一个对象是否属于某个类、接口或其子类/实现类。它的基本形式是`boolean result = obj instanceof Class`。需要注意的是,`obj`...
2. **static关键字的说明**: `static`可以修饰属性、方法、代码块和内部类,但不能修饰构造器。被`static`修饰的成员在类加载时就会被创建,它们的生命周期比任何对象都要长。静态成员可以直接通过类名访问,无需...
Java的`static`关键字在编程中扮演着至关重要的角色,尤其是在内存管理方面。它主要用于定义类级别的变量和方法,而不是实例级别的。理解`static`的关键在于了解Java内存模型,包括堆内存、栈内存和数据区。 1. **...
2. `boolean`: `boolean` 是 Java 的原始数据类型之一,用于表示逻辑值,即 `true` 或 `false`。例如: ```java boolean isTrue = true; if (isTrue) { // 执行某些操作 } ``` 3. `break`: `break` 语句用于立即...
本文将深入解析`static`关键字的五个主要用途:静态成员变量、静态方法、静态初始化块、静态内部类以及静态导包。 1. 静态成员变量(静态变量) 静态成员变量属于类,而不是类的实例。这意味着所有类的实例共享...
《静态关键字Static在Java编程中的深度解析》 在Java编程语言中,`static`关键字扮演着至关重要的角色,它能够修饰类的成员变量和方法,赋予它们特殊的特性。本篇文章将深入探讨`static`关键字的含义、用法以及在...
Java编程语言的关键字是语言的核心组成部分,它们具有特殊含义,被Java编译器解析和执行。下面我们将逐一探讨这些关键字的详细解释。 1. `abstract`:`abstract` 关键字用于声明抽象类和抽象方法。抽象类不能直接...
在Java编程语言中,`this`和`static`是两个非常关键的关键字,它们各自扮演着不同的角色,帮助我们更好地理解和使用类与对象。本文将深入探讨这两个关键字以及如何使用Javadoc工具生成文档。 首先,让我们来理解`...
在编程语言中,关键字是预定义的具有特殊含义的标识符,它们在编译时被解析器识别并执行特定的功能;而保留字则是语言设计者为未来版本预留的标识符,尽管当前版本未使用,但为了兼容性和一致性,程序员应避免将其...
内容概要:本文详细解析了 Java 开发中常见的面试题,涵盖了 static 关键字、transient 和 volatile 关键字以及 synchronized 的原理和应用。针对每个关键字,文章不仅介绍了其基本概念,还通过具体代码示例进行了...
在Java编程语言中,`super`关键字是一个非常重要的概念,它用于引用当前对象的父类中的成员。`super`关键字的使用主要有以下几个方面: 1. 访问父类的成员变量: 当子类和父类有同名的成员变量时,通过`super`...
在java中,实现查找PDF关键字所在页码及其坐标可以使用iText库,该库提供了对PDF文件的读取和解析能力。下面是一个简单的示例代码: 首先,需要引入iText库的相关依赖项,例如: ```java import ...
本文将深入探讨Java中的静态块与静态方法,解析它们的区别、联系以及执行顺序,帮助读者更全面地理解`static`关键字在Java中的运用。 ### 静态方法 静态方法是通过`static`关键字声明的,它属于类而不属于类的任何...