静态变量

static、final

柔情痞子 提交于 2020-01-11 01:41:14
关键字“static”的演示是:静态的。 static可以修饰类中的属性和方法,被static修饰的属性我们称之为类变量,被static修饰的方法我们称之为类方法。 使用static修饰的成员变量为静态变量,使用static修饰的成员方法为静态方法,二者都可以直接通过类名来访问。 类的变量分为静态变量和实例变量2种,static修饰的是静态变量,没有使用static修饰的是实例变量。 静态变量在内存中只有一个内存空间,在加载类的过程中完成静态变量的内存分配,可以直接通过类名来访问。 每创建一个新的实例对象,就会为实例变量分配不同的内存,各个对象访问自己的实例变量 无论创建了一个类的多少个对象,静态变量只初始化一次,所有的实例都可以访问此静态变量,而且可以通过类名直接访问。 static修饰的方法叫做静态方法,可以直接用“类名.方法()”来调用,语法如下: [权限修饰符] static 返回值类型 方法名(类型参数 1,类型参数 2……) { 方法体; } final修饰变量时候,表示该变量的值不可改变,称为常量。例如,圆类包含PI(圆周率)属性,且此属性的值在任何一个实例中都不会变化,将PI定义为常量更符合程序设计要求。 final修饰对象的时候,对象的引用(对象指向的地址)不能改变,但是对象的属性值却可以改变 类的成员变量有两种:静态变量和实例变量。前者是被static修饰的变量

静态变量与成员变量之间的区别

亡梦爱人 提交于 2020-01-09 23:19:05
静态变量与成员变量之间的区别 1、成员变量包含在对象之中。每个对象都有自己独立的成员变量,当一个对象的成员变量发生变化时,不会影响另外的对象。而静态变量独立在对象之外,所有对象共享静态变量,但是,静态变量的改变也会影响所有的对象; 2、静态变量在类加载时创建,他是在对象将之前的,它常驻内存,不会因为对象的产生或者销毁而发生变化;而成员变量会随着对象的产生而产生,销毁而销毁; 3、存放地址:静态变量存放在数据段中,而成员变量跟随对象会放在对空间中; 4、访问方式:成员变量只能通过对象名点的方式来访问;而静态变量可以通过对象点或者类名点的方式访问; 构造器:---构造方法也叫构造器或者构造函数----但是java的构造器不是函数,所以不能被继承 1、使用构造类的newInstance方法可以调拥有参的和私有的构造方法-----创建对象 2、构造器可以重载: 方法名相同,参数不同 构造器(创建)的执行顺序 1、父类静态常量 2、父类静态初始化块 3、子类静态常量 4、子类静态初始化块 5、父类初始化块 6、父类构造器 7、子类初始化块 8、子类构造器 来源: https://www.cnblogs.com/wanggang1987/p/12173877.html

c++模板静态变量

試著忘記壹切 提交于 2020-01-09 10:23:10
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前言 c++模板在编译的时候会被展开,每一个函数或者对象都有自己的静态变量区域,通过一下的代码你就可以看到非常有意思的点. 例子1 #include <iostream> using namespace std; template < typename T> void fun( const T& x) { static int i = 10 ; cout << ++i; return ; } int main() { fun< int >( 1 ); // prints 11 cout << endl; fun< int >( 2 ); // prints 12 cout << endl; fun< double >( 1.1 ); // prints 11 cout << endl; getchar(); return 0 ; } 输出结果为11 12 11 ,原理很简单,编译期间 fun< int >( 1 ); fun< double >( 1.1 );会被自动展开为两个函数,通过nm命令查看最后的进程符号也能确定这一点. 0000000000400929 W void fun<double>(double const&) 00000000004008f9 W void fun<int>(int

关于static 关键字的总结

喜欢而已 提交于 2020-01-09 08:35:52
转发自:https://www.cnblogs.com/xrq730/p/4820992.html 前言 之前讲到final关键字的作用是每次面试的时候我必问求职者的两个问题之一,另外一个问题就是文本会写到的static。final和static一样,都是一个小问题可以看到一个人的基础是否扎实以及平时是否有钻研精神。 静态变量和静态方法 static关键字最基本的用法是: 1、被static修饰的变量属于类变量,可以通过 类名.变量名 直接引用,而不需要new出一个类来 2、被static修饰的方法属于类方法,可以通过 类名.方法名 直接引用,而不需要new出一个类来 被static修饰的变量、被static修饰的方法统一属于类的 静态资源,是类实例之间共享的,换言之,一处变、处处变 。JDK把不同的静态资源放在了不同的类中而不把所有静态资源放在一个类里面,很多人可能想当然认为当然要这么做,但是是否想过为什么要这么做呢?个人认为主要有三个好处: 1、不同的类有自己的静态资源,这可以实现静态资源分类。比如和数学相关的静态资源放在java.lang.Math中,和日历相关的静态资源放在java.util.Calendar中,这样就很清晰了 2、避免重名。不同的类之间有重名的静态变量名、静态方法名也是很正常的,如果所有的都放在一起不可避免的一个问题就是名字重复,这时候怎么办

Java之static关键字

和自甴很熟 提交于 2020-01-08 22:25:24
static关键字概述: 在Java中,定义static关键字用于修饰类的成员, 如成员变量、成员方法以及代码块等,被static修改的成员具备些特殊性。 static关键字使用范围: 在Java类中,可用static修饰属性、方法、代码块、内部类。 被static关键字修饰后的成员特点: 1.随着类的加载而加载。 2.优先于对象存在。 3.修饰的成员,被所有对象所共享。 4.访问权限允许时,可不创建对象,直接被类调用。 静态变量: 1.在Java类中,可以使用static关键字来修饰成员变量,该变最被称作静态变量。 2.静态变量被所有实例共享,可以使用“类名.变量名”的形式来访问。 3. static 关键字只能用于修饰成员变量,不能用于修饰局部变量,否则编译会报错。 1 class Student { 2 //定义静态变量schoolName 3 static String schoolName; 4 } 5 6 public class StaticDemo{ 7 public static void main(String[] args) { 8 //创建学生对象 9 Student stu = new Student(); 10 Student.schoolName = "MIT"; //为静态变量赋值 11 System.out.println("我的学校是" +

测试markdown

試著忘記壹切 提交于 2020-01-08 14:49:38
引言 部署 发生gas但看见阿拉基爱过后阿里加了个哈罗咖喱火锅拉市纪委IE人哈嘎两年来 查的出 擦上档次 cadsc 嗷嗷的阿达adac 擦上档次 擦上档次 1、 接口 www.coolpoker.cn/assess?round=&position=&self_cards=&public_cards&chips=&public_chips=&self_chips= 2、参数介绍 round:int,范围0~3 position:int,范围0~7,0代表dealer 牌的标识: 1~13分别为A23456789TJQK 梅花(Clubs):c,方片(Diamonds):d,红桃(Hearts):h,黑桃(Spades):s 比如2c代表梅花2,Ah地表红桃A self_cards:string,自己的手牌,比如5d7h,代表方片5和红桃7两张牌 public_cards:string,代表当前的公牌,格式同上 chips_index: uint,当前round是第几次加注,大于0 chips:int,跟注的筹码数 public_chips:int,底池的筹码数 self_chips:int,自己手中的筹码数 3、返回结果 json格式 { "ret_code": 0, // 接口正常返回0,只有在该字段为0的情况下才能按其它字段操作 "ret_msg": "ok", "op": 0

普通内部类和静态内部类的区别

佐手、 提交于 2020-01-07 21:51:38
普通内部类: 1、创建普通内部类,需要外部类的实例 2、普通内部类可以访问外部类的静态域和非静态域+静态方法和非静态方法 3、普通内部类不可以拥有静态变量和静态方法,可以拥有常量(static final) 静态内部类: 1、创建静态内部类,不需要外部类的实例 2、静态内部类只可以访问外部类的静态域和静态方法(非静态域和方法无法访问) 3、静态内部类可以拥有静态变量和静态方法+非静态变量和非静态方法 来源: CSDN 作者: 安卓小师傅 链接: https://blog.csdn.net/GracefulGuigui/article/details/103881078

函数中静态变量的Python等效项是什么?

主宰稳场 提交于 2020-01-07 18:57:39
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 此C / C ++代码的惯用Python等效项是什么? void foo() { static int counter = 0; counter++; printf("counter is %d\n", counter); } 具体来说,如何在函数级别(而不是类级别)实现静态成员? 并将函数放入类中是否会发生任何变化? #1楼 我个人更喜欢以下装饰器。 给每个人自己。 def staticize(name, factory): """Makes a pseudo-static variable in calling function. If name `name` exists in calling function, return it. Otherwise, saves return value of `factory()` in name `name` of calling function and return it. :param name: name to use to store static object in calling function :type name: String :param factory: used to initialize name `name` in calling

【OC 知识】静态变量

蓝咒 提交于 2020-01-07 17:04:45
静态变量是类似于java中类变量的一种变量 在定义变量前面加static可以定义静态变量 静态变量的作用域是它定义所处的位置 在源文件中定义静态变量 怎么让静态变量变为外部全局的-通过类方法操作。 静态变量的特性: 静态变量的作用域是与它定义的位置有关系 定义在文件中它的作用域就是整个文件,并且是私有的,其他的类或其他的文件是不可以访问该静态变量的 定义在方法内,它的作用域就是这方法,其他的方法是不可以访问该静态变量 静态变量只初始化一次(和java中是一样的) 类方法和实例方法甚至函数都可以使用静态变量 参考: https://www.jianshu.com/p/d4f294f681b7 来源: https://www.cnblogs.com/mamamia/p/12162301.html

为什么静态变量被认为是邪恶的?

一曲冷凌霜 提交于 2020-01-07 04:22:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我是一位Java程序员,对公司领域来说是新手。 最近,我已经使用 Groovy 和Java开发了一个应用程序。 我编写的所有代码都使用了大量的静态变量。 高级技术人员要求我减少使用的静电数量。 我已经在谷歌上搜索了相同的内容,并且发现许多程序员都反对使用静态变量。 我发现静态变量更易于使用。 而且我认为它们也是有效的(如果我错了,请纠正我),因为如果我必须对一个类中的函数进行10,000次调用,我将很高兴使该方法静态化并使用简单的 Class.methodCall() ,而不是使该类的10,000个实例混乱,对吗? 而且,静态函数减少了对代码其他部分的相互依赖。 他们可以充当完美的国家拥有者。 除此之外,我发现在诸如 Smalltalk 和 Scala的 某些语言中广泛实现了静态方法。 那么,为什么在程序员中(尤其是在Java世界中)普遍存在对静态的这种压迫? PS:如果我对静态的假设是错误的,请纠正我。 #1楼 如果您使用的是'static'关键字,而没有'final'关键字,则这应该是仔细考虑您的设计的信号。 甚至“最终”的存在也不是免费通行证,因为可变的静态最终对象可能同样危险。 我估计大约有85%的时间会看到“静态”而没有“最终”,这是错误的。 通常,我会发现奇怪的解决方法来掩盖或隐藏这些问题。