静态函数

java-面向对象-static关键字

天大地大妈咪最大 提交于 2019-12-01 12:22:30
静态:static 用法:是一个修饰符,用于修饰成员(成员变量,成员函数) 当成员被修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用:类名.静态成员 static内存中的特点: 1、随着类的加载而加载(类在内存中创建静态对象创建),随着类的消失而消失,说明它的生命周期最长 2、优先于对象存在 3、被所有对象所共享 4、可以直接被类名所调用 实例变量和类变量的区别: 1、存放位置   类变量随着类的加载而存在于方法区中   实例变量随着对象的建立而存在于堆内存中 2、生命周期   类变量生命周期最长,随着类的消失而消失   实例变量生命周期随着对象的消失而消失 静态使用注意事项: 1、静态方法只能使用静态成员   非静态方法既可以访问静态也可以访问非静态 2、静态方法中不可以定义this,super关键字   因为静态优先于对象存在,所以静态方法中不可以出现this 静态有利有弊: 利:对对象的共享数据进行单独空间的存储,节省空间,没有必要没一个对象中都存储一份。   可以直接被类名调用 弊:生命周期过长。 访问出现局限性。 class Person {   string name; // 不可以被静态,因为每个人名字都不一致,也叫成员变量,实例变量   String country = "CN"; // 因为国籍一致,被静态后country的值都是CN,叫

C Primer Plus 第12章 12.9 总结

时光怂恿深爱的人放手 提交于 2019-12-01 09:55:56
用于存储程序数据的内存可用 存储时期、作用域和链接 来表征。 存储时期可以是静态的、自动的或者分配的。 如果是静态的,内存在程序开始执行时被分配,并在程序运行时一直存在。如果是自动的,变量所用的内存在程序执行到该 变量定义所在的代码块时开始分配 ,在退出代码块时释放。如果是分配 的内存,内存通过调用malloc()分配,通过调用函数free()释放。 作用域决定了哪一部分程序可以访问某个数据 。在所有函数之外定义的变量具有文件作用域,并对该变量声明之后定义的全部函数可见。在代码块内定义或者作为函数参量定义的变量具有代码块作用域,并只在该代码块及其子代码块中可见。 链接描述了程序的某个单元定义的变量可被链接到其他哪些地方。 具有代码块作用域的变量作为局部变量,具有空链接。具有文件作用域的变量可有内部链接或外部链接。内部链接意味着变量只可在包含变量定义的文件内部使用。外部链接意味着变量也可以在其他文件中使用。 下面是C的一种存储类: C的5种存储类 自动 在一个代码块内(或一个函数头部作为参量)声明的变量,无论有没有存储类修饰符auto,都属于自动存储类。该类具有自动存储时期、代码块作用域和空链接。如未经初始化,它的值是不定的。 寄存器 在一个代码块内(或一个函数头部作为参量)使用存储类修饰符register声明的变量属于寄存器存储类。该 类具有自动存储时期、代码块作用域和空链接

PHP面向对象(OOP):.static和const关键字的使用(self::)

馋奶兔 提交于 2019-12-01 08:31:42
static关键字是在类中描述 成员属性 和 成员方法 是静态的;静态的成员好 处在哪里呢?前面我们声明了“Person”的人类,在“Person”这个类里如果我们加上一个“人所属国家”的属性,这样用“Person”这个类实 例化出几百个或者更多个实例对象,每个对象里面就都有“所属国家”的属性了,如果开发的项目就是为中国人而开发的,那么每个对象里面就都有一个国家的属性 是 “中国“其它的属性是不同的,如果我们把“国家”的属性做成静态的成员,这样国家的属性在内存中就只有一个,而让这几百个或更多的对象共用这一个属性, static成员能够限制外部的访问,因为static的成员是属于类的,是不属于任何对象实例,是在类第一次被加载的时候分配的空间,其他类是无法访问的,只对类的实例共享,能一定程度对类该成员形成保护 ; 从内存的角度我们来分析一下,内存从逻辑上被分为四段,其中对象是放在“堆内存”里面,对象的引用被放到了“栈内存“里,而静态成员则放到了“初始化静态段”,在类第一次被加载的时候放入的,可以让堆内存里面的每个对象所共享,如下图: 类的静态变量,非常类似全局变量,能够被所有类的实例共享,类的静态方法也是一样的,类似于全局函数。 <? class Person { //下面是人的静态成员属性 public static $myCountry = "中国"; // var $name;

django 组件 自定义标签 静态文件配置

核能气质少年 提交于 2019-12-01 06:57:59
组件 将一些功能标签写在一个html文件里,这个文件作为一个组件,如果那个文件需要就直接拿过来使用即可; 这是title.html文件,写了一个导航栏,作为一个公用的组件 <div style="background-color: cyan;width: 100%;height: 40px;"> <span style="font-size: 20px;">首页</span> <span style="font-size: 20px;">搜索</span> <span style="font-size: 20px;">登录</span> <span style="font-size: 20px;">注册</span> </div> 引用方式: {% include 'title.html' %} 将这个语句放在你html文件需要的位置;就会将这这个导航栏应用过来 自定义标签 首先在app应用下边创建一个文件夹 ---- templatetags (必须是这个名字,不能改变) 在这个文件夹里边写入自己的python的逻辑文件,名字随意 ,这个文件的名字是tag # 下面是一个自定义的过滤器 from django import template # 导入django自带的包 register = template.Library() # register 名字不能改变,注册器

读书笔记《深度探索c++对象模型》(6) - 执行期语意

只谈情不闲聊 提交于 2019-12-01 05:38:45
一、对象的构造与析构 因声明定义一个类对象,若需要构造或析构函数时,其构造函数和析构函数将被编译器插入到代码中的合适位置,然而因为需要对析构函数的正确且合理的位置调用,可能会出现多个可能的位置插入析构函数的调用代码,如不同处的 return , goto 语句、 {}代码段结束位置等复杂场景中,故建议定义一个类对象时最好放置在需要使用的地方且防止可能在多处插入析构函数的情况,如可用{}早点儿结束析构操作,即最好不要将类对象声明定义在最开始处。 全局对象, C++ 全局对象均放置在数据段中,且被初始化为给定的初值或默认值为 0 ;故而一般情况下全局对象在进入 main 函数前已被初始化,而 main 函数结束时把其析构释放掉;故而需要编译器提供必要的静态初始化的支持,即全局对象的静态初始化以及对应的析构释放。 全局对象应需要被静态初始化,其不能被放置在 try 区段内,对静态调用的构造函数可能会抛异常时将引发 terminate 函数调用;另外便是需要控制跨模块做静态初始化的对象的依赖顺序产生的问题和复杂度,建议不要用需要做静态初始化的全局对象。 局部静态对象,需要保证其所在函数被调用多次时,始终仅调用一次构造函数和析构函数,需要编译器来支持实现,插入必要的初始化一次和析构一次的临时保护代码,不同编译器有不同的实现方式(可能通过插入另外一个全局静态的一个对象

三、面向对象(高琪java300集+java从入门到精通笔记)

二次信任 提交于 2019-12-01 02:58:25
面向对象基础: 对象的进化史 基本数据类型阶段 数据少 无数据管理时代 数组 数据多了,将同类型的数据放到一起 弱管理 结构体 数据多了,数据复杂了。将不同类型的数据放到一起 强管理 对象 数据多了、类型复杂了、行为复杂了。将不同类型的数据放到一起 超强管理 前三个:面向过程 数据和行为是分开的 行为去组织数据 最后一个:面向对象 通过对象组织数据 对象和类: 对象是具体的,类是抽象的(类是对对象的共性的总结)。类也是一个模版,通过类这个模版我们也可以new对象。 对象分为两部分: 静态部分:属性→成员变量 动态部分:行为→方法 类是封装了对象的属性和行为的载体 定义类: public class 类名 { //属性 private(建议) 数据类型 属性名; //建议增加相应的getter、setter方法 //方法 (往往是对上面数据的操作,建议static修饰,方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的 方法的调用方式: 对象名.方法名(实参列表) return 语句终止方法的运行并指定要返回的数据 Java中进行方法调用中传递参数时,遵循值传递的原则(传递的都是数据的副本): 基本类型传递的是该数据值的copy值。 引用类型传递的是该对象引用的copy值

java入门

有些话、适合烂在心里 提交于 2019-12-01 02:50:21
Java 基础 IDEA 快捷键 快捷键 功能 Alt+Enter 导入包,自动修正代码 Ctrl+Y 删除光标所在行 Ctrl+D 复制光标所在行的内容,插入光标位置下面 Ctrl+Alt+L 格式化代码 Ctrl+/ 单行注释 Ctrl+Shift+/ 选中代码注释,多行注释,再按取消注释 Alt+Ins 自动生成代码,toString,get,set等方法 (牢记) Alt+Shift+上下箭头 移动当前代码行 Ctrl+Alt+v 根据右边值生成左边变量 (牢记) 数据类型 数据类型分类 Java的数据类型分为两大类: 基本数据类型:包括 整数 、 浮点数 、 字符 、 布尔 。 引用数据类型:包括 类 、 数组 、 接口 。 基本数据类型 四类八种基本数据类型: 数据类型 关键字 内存占用 取值范围 字节型 byte 1个字节 -128~127 短整型 short 2个字节 -32768~32767 整型 int(默认) 4个字节 -231次方~2的31次方-1 长整型 long 8个字节 -2的63次方~2的63次方-1 单精度浮点数 float 4个字节 1.4013E-45~3.4028E+38 双精度浮点数 double(默认) 8个字节 4.9E-324~1.7977E+308 字符型 char 2个字节 0-65535 布尔类型 boolean 1个字节

static的作用

天涯浪子 提交于 2019-11-30 22:55:12
一、静态局部变量   1.static修饰的局部变量,不像其他局部变量一样函数退出时就消失,它的生命周期在全局区;   2.但是静态局部变量的作用域还是和其他局部变量一样在函数中,只能在该函数中调用,退出函数后还存在但不能使用;   3.在声明时如果没有初始化,编译器会将它自动初始化为0。 二、静态全局变量:   1.静态全局变量只能在本文件中访问,其他文件不可访问;   2.其他文件中可以定义与它同名的变量,互不影响。 三、静态函数   1.静态函数只能在声明它的文件中可见,其他文件中不能使用该函数;   2.其他文件中可以定义与它同名的函数,互不影响。 四、静态属性   1.static修饰的属性称为静态属性,静态属性属于类而非某个对象,无论实例化了多少个对象,它只有一份;   2.任何一个对象都可以对它操作,一个对象改变了它的值,其他对象中的也会改变;   3.所以,就算没有实例化对象,也可以直接操作静态数据成员;   4.相当于加了一个类约束和访问控制属性限制的全局变量,表示只能在这个类里面使用(作用域),它存储(生命周期)在全局区;   5.静态属性必须在类外定义和初始化;   5.和普通数据成员一样,静态数据成员也遵从public, protected, private访问规则;   6.初始化格式:数据类型 类名::静态成员名=值 (int Class::num=0)

XCode Static Analysis 静态分析工具分析代码

巧了我就是萌 提交于 2019-11-30 20:29:28
Clang静态分析和Instruments来剖析代码有一些不同,Clang更致力于在编译的过程中通过自身的一套判断机制来找出代码中潜在的隐患。   在XCode 3.2之后的版本里,Clang已经被集成进来,Static Analysis 是基于 Clang 的非常好的静态代码分析工具。可以从xcode直接运行Static Analysis 分析器。   Static Analysis 优点:   1、使用操作容易。   2、能够在编码阶段,开发自行进行 代码检查 。早期发现代码隐患。   3、直接分析源代码来发现程序中的错误,而不需要实际运行。   4、自动检测objective-C程序中的BUG,发现内存泄露和其它问题。   5、内存问题发现越早,解决的代价就越小。   使用方法:   1、确保你的程序没有被编译过(编译过了就使用Clean all targets清除编译)   2、点击Product > Analyze如下图:   3、如果你的程序代码有问题,在编译完成之后,右下角的原来提示warning 和 error的地方现在变成了这样:   4、现在你可以像解决以前的warning 或者 error一样,对提示的地方点进去。   5、可能会存在问题的一些情况:   各处内存泄漏:   对象引用隐患(内存已释放可能又被使用了) 未使用到的函数:   未初始化的变量  

C++语言程序化设计——第三次作业

我的未来我决定 提交于 2019-11-30 17:05:09
C++语言程序化设计——第三次作业 第五章知识重难点剖析 一、知识点——类的静态成员 定义: 静态成员,指的是在c++类中声明成员时可以加上 static 关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数)。即声明为static的类成员或者成员函数便能在类的范围内同享。 ——来源:百度百科·静态成员 目的: 解决同一个类的不同对象之间数据和函数共享问题 优点: 可以兼顾数据的共享与保护 静态数据成员 静态数据成员具有静态生存期。由于静态数据成员不属于任何一个对象,因此可以通过类名对它进行访问,一般的用法是“ 类名::标识符 ”。 静态函数成员 静态函数成员可以直接访问该类的静态数据和函数成员。而访问非静态成员,必须通过对象名。 二、代码实例——具有静态数据和函数成员的Point类 class Point{ //Point类定义 public: Point(int x=0,int y=0):x(x),y(y){ count++; } Point(Point &p){ x=p.x; y=p.y; count++; } ~Point(){count--;} int getX(){return x;} int getY(){return y;} static void showCount(){ //静态函数成员 cout<<" Object count="<<count<