首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

静态类、静态方法、静态变量的区别

引言 一直疑惑静态类、静态方法、静态变量的内存驻用情况。今天就写了个Demo来深入八一八他们的区别和注意点。...为了演示方便,方法名和变量名采取中文命名 先上结论 静态变量 只在类初始化时加载一次 静态方法和静态方法语法糖 实时加载里面的内容 只读属性 实时加载里面的内容 附有初始值的属性语法糖 只在类初始化时加载一次...(应该是set里面处理的,而不是get里面处理的) 静态有参方法 实时加载里面的内容 无图我还说什么?...请看代码 代码 先看测试Demo 1.非静态类 中静态方法 /// /// 非静态类 /// public class TestCommonService...ConfigHelper.TryGetOtherProject(ProjectsEnum.SurpriseGamePollApi, "ConfigId", "")}"; } } 2.静态类静态方法

1.6K10

PHP类的静态(static)方法和静态(static)变量使用介绍

在php中,访问类的方法/变量有两种方法: 1. 创建对象object = new Class(),然后使用”->”调用: 2....直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件: A. 如果是变量,需要该变量可访问。 B....如果是方法,除了该方法可访问外,还需要满足: b1) 如果是静态方法,没有特殊条件; b2) 如果是非静态方法,需要该方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题...然后奇怪的地方就出来了,既然2和3都一样,那静态方法/变量存在还有什么意义呢? 差异还是显然存在的,如下: 1....静态方法 静态方法可以直接使用class::… 来调用,而非静态方法需要满足一定限制条件才能使用class::.. 的方法调用,如之前所述

4.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    详解java中静态方法有哪些_java类中的静态变量

    定义: 在类中使用static修饰的静态方法会随着类的定义而被分配和装载入内存中;而非静态方法属于对象的具体实例,只有在类的对象创建时在对象的内存中才有这个方法的代码段。...原因: 因为静态方法和静态数据成员会随着类的定义而被分配和装载入内存中,而非静态方法和非静态数据成员只有在类的对象创建时在对象的内存中才有这个方法的代码段。...引用静态方法时,可以用类名.方法名或者对象名.方法名的形式。...第一次使用类的时候)执行一次,往往用来初始化静态变量。...return t; } } } 总结: (1)static修饰的静态方法会随着类的定义而被分配和装载入内存中,编译器只为整个类创建了一个静态变量的副本

    1.4K10

    java学习之路:14.类的构造方法,静态变量,常量和方法,类的主方法

    1.类的构造方法 类中除了成员方法,还有一种特殊的方法,那就是构造的方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的,每当类实例化一个对象时,类都会自动调用构造方法。...2.静态变量,常量与方法 由static关键字修饰的变量,常量与方法被称做静态变量,常量与方法。 静态变量,常量与方法被称为静态成员,静态成员属于类所有。...static int id; //在类中定义静态变量 public static void fun1(){//定义静态方法 //******************* //********.../调用静态变量 array.fun1(); //调用静态方法 } } 虽然静态成员也可以使用“对象.静态成员”的形式进行调用,但是不建议这样做,因为这样容易混淆静态和非静态成员。...需要注意的点: 在静态方法中不可以使用this关键字。 在静态方法中不可以直接调用非静态方法。 java规定不能将方法体内局部变量声明为static。

    93941

    关于静态常量类型 修饰 类方法变量的部分理解

    分两个部分进行记录 目录 静态(static) 修饰类/方法/变量 静态(static) 修饰类 静态(static) 修饰方法/变量 常量(final) 修饰类/方法/变量 常量(final) 修饰类...常量(final) 修饰方法/变量 静态(static) 修饰类/方法/变量 静态(static) 修饰类 Java里面static一般用来修饰成员变量或函数。...静态(static) 修饰方法/变量 静态属性、静态方法和非静态的属性都可以被继承和隐藏而不能被重写{这里之所以不能被重写,是因为重写的目的在与多态的使用,因为是静态的方法,无法实现多态,所以就算重写也是无用的...非静态方法可以被继承和重写,因此可以实现多态。 重写的功能是:"重写"后子类的优先级要高于父类的优先级,但是“隐藏”是没有这个优先级之分的。...常量(final) 修饰类/方法/变量 常量(final) 修饰类 final 修饰的类不能被继承。 常量(final) 修饰方法/变量 1.final修饰的成员和成员变量,可以被继承。

    88920

    JSDoc ,一个可替代 TypeScript 的方案?

    然而,这需要额外的转译步骤,可能会带来麻烦和浪费时间。本文将向您展示如何使用JSDoc来获得相同类型的控制,同时使用纯JavaScript进行最快的开发时间和更好的文档编写!...你也可以在连字符(-)后面加上参数的描述。 关键字 @returns 用于定义函数返回的内容。这对于大型函数特别有用。可能很难浏览所有的代码,包括早期返回,以确定函数的预期行为。...输入完整的类(描述、构造函数和方法) 更进一步,您还可以使用JSDoc输入完整的类语法。...@class 关键字用于表示需要使用 new 关键字调用的函数。 @classdec 用于描述整个类。在编写类时,通过添加类型和描述来进一步完善是很重要的。...构造函数 类中创建的所有方法和变量 我们使用 @params 关键字来提供需要传递给构造函数的参数的类型和描述。类中的方法与函数的类型方式相同,这在前一节中已经介绍过。

    82810

    规范JavaScript注释

    函数多行注释 函数(方法)注释也是多行注释的一种,但是包含了特殊的注释要求,参照JSDoc。...以下字段并不是全部,全部请参考JSDoc中文文档或JSDoc中文文档 常用注释关键字 注释名 语法 含义 示例 @param @param 参数名 {参数类型} 描述信息 描述参数的信息 @param...声明类 /** * 类说明 * @class 类名 * @constructor */@class必须搭配@constructor或@static使用,分别标记非静态类与静态类。...声明函数或类方法 /** * 方法说明 * @method 方法名 * @for 所属类名 * @param {参数类型} 参数名 参数说明 * @return {返回值类型} 返回值说明...({}) 类的属性 类的属性和变量都会生成到jsdoc文档的Member模块中,在类中使用属性标识 var LBSControllerCom = Com.extends({ /**

    13.2K53

    d.ts

    相关的概念Ambient Namespace,指的也是只有声明没有实现的namespace 二.分类 声明文件本身没有类别,但不同类型的类库在API暴露方式等方面存在差异,对应的声明文件也有所区别 例如...3类: global:暴露出全局变量的类库 module:不暴露全局变量,需要通过特定加载机制(如require/define/import)引用的模块形式的类库 plugin:会影响其它类库功能的类库...P.S.另外,声明文件也存在全局声明冲突的问题,建议通过namespace解决 三.引用方式 不同类型的声明文件对应的引用方式也不同,global类库声明通过/// <reference types="...); greeting: string; showGreeting(): void; } declare class声明了一个类Greeter,拥有构造函数和成员变量greeting以及成员方法...静态语义分析比运行时强大很多,能够推断参数类型、识别JSDoc,生成结果如下: /** * 是不是一个emoji * @param {String} str */ declare function isEmoji

    2.9K30

    如何不编译使用 TypeScript

    微软的TypeScript编程语言为 JavaScript 带来了静态类型以及静态类型带来的各种优势。...四月份发布的TypeScript 2.3支持通过注释中的类型说明来对原生 JavaScript 代码进行近代分析。您可以使用类 JSDoc 语法来描述函数功能并添加类型信息。...以下示例将为我们示范如何对一个两个参数并有返回值的函数进行类型描述: // @ts-check /** * @param {number} a * @param {number} b * @return...以下示例显示了如何描述从远程 API 获取的 JSON 对象的结构: /** * @typedef {Object} Issue * @property {string} url * @property...在异步立即执行函数的内部,我们将 GitHub API 的返回结果复制给了 issues 变量,声明上方有一个类型注释表示 issues是 Issue类型对象的数组。

    1.9K40

    大话 JavaScript(Speaking JavaScript):第二十六章到第三十章

    保持变量声明局部 如果你的函数不太长(无论如何都不应该太长),那么你可以在提升方面放松一些,假装var声明是块作用域的。...JSDoc 生成的 HTML 输出。 JSDoc 网站上的自述文件解释了如何安装和调用这个工具。 JSDoc 的基础知识 JSDoc 的全部内容都是关于文档化实体(函数、方法、构造函数等)。...例如: @since 10.2.0 文档化函数和方法 对于函数和方法,您可以记录参数、返回值和可能抛出的异常: @param {paramType} paramName description 描述了参数的名称为...@returns {returnType} description 描述函数或方法的返回值。类型或描述可以省略。...首先,您需要告诉 JSDoc 给定的变量持有一个类。其次,您需要标记一个对象文字为定义类。您可以通过@lends标签来实现后者: /** * A class for managing persons

    16210

    你会了吗 HarmonyOS Next 项目级别的注释规范

    jsDoc提供了对 常量、类、函数、接口、枚举等的修饰符,一般情况下不需要主动添加,因为 DevEco Studio 可以自动识别 @constant @class @function @interface...输入 /** + tab 开快速生成 在带有参数的函数上方,它会自动添加参数的修饰符,包括返回值 @param 和 @returns @param 修饰函数的形参 @returns 修饰返回值...@borrows 表示从另一个模块借用的函数或属性。 @callback 表示一个回调函数。 @class 用于定义一个类。 @classdesc 类的描述。 @constant 表示一个常量。...@requires 表示依赖的模块。 @returns 函数返回值说明。 @see 参考信息。 @since 从某个版本开始。 @static 静态成员。 @summary 摘要信息。...文件中export的变量、方法、接口、类等将生成相应的ArkTSDoc文档,未export的对象不支持生成。

    5600

    为你的 JavaScript 项目添加智能提示和类型检查

    说起来,JavaScript 作为一门动态弱类型解释型语言,变量声明后可以更改类型,并且类型在运行时才能确定,由此容易产生大量代码运行中才能发现的错误,相比 Java 等静态类型语言,开发体验上确实差了一截...更烦躁的是,智能提示就是依赖于静态类型检查的,所以在以前,指望 JavaScript 的智能提示完善度追上 Java 基本不可能。...调研了一段时间后,下文以 VSCode 编辑器作为开发工具,介绍一下如何为 JavaScript 加上智能提示以及类型检查。...基于 TypeScript 类型声明文件 除了使用 JSDoc 提前声明类型,更为激进的做法是直接使用微软开发的 TypeScript,为整个项目带来完善的静态类型检查。...TypeScript 的类型声明文件以 .d.ts 为后缀,用于描述同名的 JavaScript 文件导出代码的类型,功能上类似于 C 语言的 .h 头文件。

    3.6K20

    Angular 工具篇之文档管理

    本文我们将介绍 Compodoc 这款工具,它用于为 Angular 应用程序生成静态文档。...文档注释 comments Compodoc 使用 TypeScript AST 解析器和它的内部 API,因此注释必须是合法的 JSDoc 注释。...JSDoc Tags 由于 TypeScript 编译器的限制 目前 Compodoc 只支持以下的 JSDoc 标签: @returns —— 描述返回值 @ignore —— 表示标记的内容永远不会出现在文档中...@param —— 定义一个参数的类型和描述 @link —— 定义链接另一个方法、文档或外部链接 @example —— 定义一个示例用法 了解完上述标签,我们来看一个比较完整的示例(来源于 ionic-code-documentation...总结 本文简单介绍了如何利用 Compodoc 这款工具,为 Angular 应用程序生成静态文档,Compodoc 基本上能够满足我们的需求。

    1.6K10

    JSDoc 初探:代码内的文档标记

    假设你想要记录诸如模块、名称空间、类、方法、方法参数等内容。 JSDoc注释通常应该放在记录代码之前。为了被 JSDoc 解析器识别,每个注释必须以 /** 序列开头。...它基于标签(tag)的形式,通过注释来提取代码中的类型、描述、参数、返回值等信息,生成文档供其他人参考。使用JSDoc可以提高代码可读性和可维护性,让代码更易于理解和使用。...在阅读和使用第三方库时,可以通过查看JSDoc生成的文档来了解函数和方法的使用方式、参数、返回值等信息。...在JSDoc中,可以使用各种标签来描述代码的不同方面,例如:@param:用于描述函数或方法的参数类型和含义;@returns:用于描述函数或方法的返回值类型和含义;@throws:用于描述函数或方法可能抛出的异常类型和含义...然后在函数的@param标签和@returns标签中使用了这个泛型类型参数,以便更通用地描述参数类型和返回值类型。

    27010

    JavaSE(一)之类与对象

    派生类(子类)可以从它的基类(父类)那里继承方法和实例变量,并且派生类(子类)中可以修改或增加新的方法使之更适合特殊的需要         继承性很好的解决了软件的可重用性问题。...2.1、类与对象的关系 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物.           ...调用这种方法的时候,"可以"使用对象调用,也"可以"使用类来调用,但是推荐使用类进行调用,因为静态方法是属于类的。...,静态方法内不能直接访问到类中的非静态属性.       ...总结:类中方法中的调用,两个方法都是静态或者非静态都可以互相调用,当一个方法是静态,一个方法是非          静态的时候,非静态方法可以调用静态方法,反之不能。

    59250

    使用JSDoc提高代码的可读性

    所以编辑器就会使用一个在 TypeScript 中经常出现用来标识任意类型的 any 关键字来描述函数的参数以及返回值。...而这种情况下我们可以很简单的使用 JSDoc 来手动描述这个函数的作用: ?...那么他可能会有这么几个疑问: getUserInfo的返回值是什么结构 createOrder的返回值又是什么结构 notify中传入的两个变量又都是用来做什么的 我们也只能够从notify函数中找到一些线索...而另外一个函数的返回值,如果我们在函数上添加了@return后,那么调用该函数并获取返回值的变量类型也会被设置为@return对应的类型。...必然会存在着大量的复杂结构类型的变量、参数或返回值。 关于函数参数,在 JSDoc 中两种方式可以描述复杂类型: ?

    1.4K20

    @ts-check

    多亏了 TypeScript和 JSDoc,这两个愿望都有变成现实的可能。...JSDoc 添加类型 如果仅仅使用 // [@ts-check](/user/ts-check)的话,我们只能使用它的自动类型推断功能,这对于大型项目来说是远远不够的,我们希望能像强类型语言一样指定每个变量的类型...} /** * 也可以使用模板来声明类型 * 如 fn4 表示返回值和参数 p1 是相同类型 * @template T * @param {T} p1 * @return {T} */...function fn4(p1){} 写在最后 对于老项目,使用 // [@ts-check](/user/ts-check) 和 JSDoc 引入 TypeScript来享受类型系统的好处是最简单、学习成本最低的方法...对于新项目,相较于激进地使用 .ts 文件,我认为 // [@ts-check](/user/ts-check) 和 JSDoc 是更好的方法,因为 JavaScript在不久的未来很有可能会引入可选的类型系统

    1.8K80
    领券