静态成员

JavaDay11 static关键字

五迷三道 提交于 2019-11-28 08:22:46
tags : java基础 flag: blue @toc JavaDay11 static关键字 一、static关键字的引入 生活情况: 饮水机为例,通常是放在一个公共的环境中,大家共同使用,不会说每个人入学发一个饮水机。 如果每一个人都有一个饮水机,过多电线,过多的水管,占用了大量的空间 代码中的问题: 发现在代码中,存在某一些成员变量的数值是一样的,大量重复,在每一个对象中都有存在,例如: 当前代码中的国家,都是中国。这样会占用过多的内存资源,甚至于硬盘资源。 期望: 把国家中国属性放到一个共享的区域里,然后让每一个对象使用就好 解决问题: 使用static关键字 二、static修饰成员变量 (一)static关键字的使用: 【重点】 如果使用static修饰的成员变量,这些成员变量称之为【静态成员变量】,这个 【静态成员变量】实际存放的内存空间在【内存数据区】,和当前【类对象内存】没有任何关系 。也就是说,这个【静态成员变量】使用内存空间不再【堆区】对象内存中 用static修饰的成员变量,这个【静态成员变量】可以提供给多个类对象使用 。 什么时候用static,真正意义上存在大量重复,并且存在一定共享基础的数据,这种情况下,可以使用static修饰 例如:country属性就适合用static修饰,但是name属性就不适合 小问题: 发现通过类对象来调用【静态成员变量

Kafka消费者组静态成员(static consumer member)

浪尽此生 提交于 2019-11-28 03:17:00
Kafka 2.3发布后官网的Consumer参数中增加了一个新的参数:group.instance.id。下面是这个参数的解释: A unique identifier of the consumer instance provided by end user. Only non-empty strings are permitted. If set, the consumer is treated as a static member, which means that only one instance with this ID is allowed in the consumer group at any time. This can be used in combination with a larger session timeout to avoid group rebalances caused by transient unavailability (e.g. process restarts). If not set, the consumer will join the group as a dynamic member, which is the traditional behavior. 大致意思是:它是用户指定的一个consumer成员ID

第二章 一切都是对象

喜欢而已 提交于 2019-11-27 18:40:40
在这里总结一下,第二章需要掌握和注意的地方。 java是不准许:外层变量与内层变量同名,则外层变量在内层不可见这一规则的。 java是没有“前向引用问题的”,即在前面可以引用后面定义的变量和方法。 静态变量一定不可以访问非静态成员的,因为静态成员属于类,非静态成员属于对象。 这里是我认为在第二章中需要注意的地方。 来源: https://www.cnblogs.com/mgblogs/p/11372626.html

Android系统Surface机制的SurfaceFlinger服务的启动过程分析

落花浮王杯 提交于 2019-11-27 08:37:16
分享一下我老师大神的人工智能教程!零基础,通俗易懂! http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 在前面一篇文章中,我们简要介绍了 Android 系统 Surface 机制中的 SurfaceFlinger 服务。 SurfaceFlinger 服务是在 System 进程中启动的,并且负责统一管理设备的帧缓冲区。 SurfaceFlinger 服务在启动的过程中,会创建两个线程,其中一个线程用来监控控制台事件,而另外一个线程用来渲染系统的 UI 。在本文中,我们就将详细分析 SurfaceFlinger 服务的启动过程。 《Android系统源代码情景分析》一书正在进击的程序员网( http://0xcc0xcd.com )中连载,点击进入! 从前面 Android系统进程Zygote启动过程的源代码分析 一文可以知道, System 进程是由Zygote进程启动的,并且是以Java层的SystemServer类的静态成员函数main为入口函数的。因此,接下来我们就从SystemServer类的静态成员函数main开始,分析 SurfaceFlinger 服务的启动过程,如图1所示。 图1 SurfaceFlinger服务的启动过程 SurfaceFlinger

Java基础笔记五 面向对象

為{幸葍}努か 提交于 2019-11-27 05:49:54
5. 面向对象 5.1. 面向对象的简介 面向过程 是一种看待问题、解决问题的思维方式。着眼点在于,问题是怎样一步步的解决的,然后亲力亲为的去解决这个问题。 面向对象 是一种看待问题、解决问题的思维方式。着眼点在于,找到一个能够帮助解决问题的实体,然后委托这个实体帮助解决问题。 Java是一种面向对象的语言。 可以使用Java这门编程语言,更容易的写出具有面向对象编程思想的代码。 Java是一种面向对象的语言,因此用Java写的程序一定是面向对象的程序。 5.2. 类的设计与对象的实例化 对象 : 可以帮助解决问题的实体,就是一个对象。 万物皆对象 类 : 是由若干个具有相同的特征和行为的对象组成的一个集合。 类和对象的关系 : 类是对象的集合 , 对象是类的个体 备注: 在程序设计中,一定是现有的类,再有的对象。 5.2.1. 类的设计 语法 [ 访问权限修饰符 ] class 类名 { // 类体 // 类的所有的对象共有的特征 // 类的所有的对象共有的行为 } 语法说明: 1. 类名: 是一个标识符, 遵循大驼峰命名法。 2. 特征: 又叫属性, 在类中的体现是一个全局变量。 3. 行为: 在类中的体现,是一个方法。 类是一种自定义的数据类型 5.2.2. 对象的实例化 对象的实例化,需要使用到关键字new,也就是说,类是一种自定义的引用数据类型。 5.3. 构造方法

学习C++:静态成员函数

我是研究僧i 提交于 2019-11-27 03:40:00
静态成员函数: 1 不能直接调用类的非静态成员,包括静态成员变量和静态成员函数; 2 可以调用该类的其他成员; 3 设计层面:类的静态成员是属于类的,不属于类的任何一个对象,但同时又被该类的所有对象共享; 4 技术层面: 静态成员函数没有this指针; 来源: https://blog.csdn.net/weixin_42615026/article/details/99329696

02_static修饰的成员可以直接被什么访问?

北战南征 提交于 2019-11-27 03:04:09
被static修饰的成员可以并且建议通过类名直接访问。 访问静态成员的格式: 类名.静态成员变量名 类名.静态成员方法名(参数) 对象名.静态成员变量名 ------不建议使用该方式,会出现警告 对象名.静态成员方法名(参数) ------不建议使用该方式,会出现警告 代码演示: class Demo { //静态成员变量 public static int num = 100 ; //静态方法 public static void method ( ) { System . out . println ( "静态方法" ) ; } } class Test { public static void main ( String [ ] args ) { System . out . println ( Demo . num ) ; Demo . method ( ) ; } } 来源: https://blog.csdn.net/Ricky_Monarch/article/details/99303622

静态成员与实例成员

核能气质少年 提交于 2019-11-27 01:29:46
1、类的成员分为静态成员和实例成员。为什么设计出静态成员和实例成员?   静态成员对类以及类的所有实例有意义,实例成员对每个实例有意义。考虑,Person类,有个age字段和maxAge字段。每个Person实例都有自己的age,但所有的Person实例都有相同的maxAge(最大年龄极限),因此,maxAge只需要一份就好了,大家共享。有两个好处:节约内存和保持一致。 2、成员分为字段和方法,首先考虑字段:   静态字段:只有一块内存。   实例字段:每个实例都有专属于自己的一块内存。 3、对于方法:   无论静态方法和实例方法,只有一块内存。那么问题来了,在成员方法中会使用实例的字段,怎么区分是哪个实例的字段呢? 4、实例成员方法的实现细节:   考虑Person的GetAge方法,int Person::GetAge(),实际上可以认为,该方法在编译后,变成int GetAge(Person* const this)这种形式。也就是说,成员方法编译后变成普通方法,在这个普通方法中,使用this指针。调用方法的时候,使用.或者->调用方法,可认为.或者->前面的这个东西(方法的拥有者),就是普通方法int GetAge(Person* const this)的实参。 5、在考虑一下,为什么int GetAge(Person* const this

静态成员与实例成员

假装没事ソ 提交于 2019-11-27 01:29:34
1、从语义上讲,静态成员对类有意义,类和所有实例共享。实例成员对实例有意义,每个实例都有专属于自己的。如何理解?举例来说,Person类的Age应该是实例成员,每个Person实例都有自己的Age,而MaxAge(年龄的最大极限,比如说200岁),应该是静态成员,因为MaxAge对于人类(包括所有人)有意义,也就是说,所有人的年龄最大极限都是200岁。 2、从内存分配上看,成员分为字段和方法(C#当中的属性是一种特殊的方法,其本质上也是方法),对于静态字段,在内存中只有一份拷贝,类与所有实例共享。对于实例字段,每个实例都有一个拷贝。而对于方法,不论是静态方法还是实例方法,在内存中都只有一个拷贝,区别只是通过类来访问和通过实例来访问。如何理解?字段是存储数据的,静态字段存储相同内容的数据,因此只需要一块内存。而实例字段存储不同内容的数据,因此每个实例都需要一块内存。而方法是数据的加工器,提供一个入口,所有实例的加工器都是一样的,因此不论是静态方法还是实例方法,在内存中只需要一快内存。 3、由此引发出,类的实例化执行顺序。因为静态成员是属于类的,即使没有创建实例,静态成员已经存在,并被分配内存了。因此类的实例化执行顺序是先静态成员后实例成员。在考虑继承关系,子类什么时候需要知道父类的信息,在实例化之前的时候。因此执行顺序是:子类静态成员-->【父类静态成员-->父类实例成员】--

C++--第11课 - 类的静态成员

廉价感情. 提交于 2019-11-27 00:11:18
第11课 - 类的静态成员 1. 成员变量的回顾 通过对象名能够访问public成员变量。 每个对象都可以有只属于自己的成员变量。 成员变量不能在对象之间共享。 2. 新的需求 统计类在程序运行期间有多少个对象同时存在;保证程序的安全性,并随时可以获取对象的数目。 3. 类的静态成员 在C++中可以定义静态成员变量和静态成员函数。 静态成员属于整个类所有,不需要依赖任何对象。 可以通过类名直接访问public静态成员。 可以通过对象名访问public静态成员。 静态成员函数可以直接访问静态成员变量。 l 静态成员变量的定义 在定义时直接通过static关键字修饰。 静态成员变量不依赖于任何对象,需要在类外单独分配空间。 语法规则:Type ClassName::VarName。 l 静态成员函数的定义 在定义时直接通过static关键字修饰。 其余部分与普通成员函数定义相同。 l 示例: 例子: #include <stdio.h> class Test { private: static int cI; public: static int GetI() { return cI; } static void SetI(int i) { cI = i; } void print() { printf("cI = %d\n", cI); } }; int Test::cI = 0;