当前位置:首页 » 密码管理 » this访问static变量

this访问static变量

发布时间: 2025-01-05 22:23:11

⑴ PHP中this,self和static的区别

  1. PHP支持类和面向对象结构,PHP的类的静态函数和变量不与任何特定类的实例相关联(换句话说,一个对象)。

  2. 相反,静态函数和变量与类定义本身相关联。换言之,一个类的所有实例都共享相同的静态变量。在一个类的方法(函数)的上下文中,静态变量和函数被访问使用self::,在一个类的对象(实例)的上下文中使用其他方法和变量时用this。

  3. 静态函数只能使用静态变量,静态函数和变量的引用是通过 self::函数名() 和 self::变量名。上述实例中,静态变量的引用是由类名(exampleClass::$foo),或者self::(self::$foo),当在这个类的静态方法[称为 静态函数()]里使用时。类的正则函数和变量需要一个对象上下文来引用,他们不能脱离对象上下文而存在。对象上下文由$this提供。在上述函数中,$bar 是一个正则变量,所以它被 $obj->bar(上下文使用变量obj) 来引用,或者使用 $this->bar(再次在一个对象的方法里在一个对象上下文中) 来引用。

  4. self 不使用前面的 $,因为 self 不意味着是一个变量而是类结构本身。而 $this 引用一个特定的变量,所以有前面的 $ 。

⑵ Java多线程中static变量的使用

线程,是我们项目中绕不开的重点领域。提到线程,就常会听到线程安全的术语。那什么是线程安全呢?通俗点说,就是线程访问时不产生资源冲突。其实,这是一个有点难以定义的概念,不是很容易让人一听就懂的概念。

静态变量、实例变量、局部变量在多线程下的安全问题主要如下:

静态变量:线程非安全。静态变量使用static关键字定义,被类的所有实例共享。用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它的类的对象时,不生成static变量的副本。在静态方法中不能使用非静态变量,不能直接访问所属类的实例变量,也不能直接调用非静态方法,不能使用this和super关键字。修改静态变量会导致其他对象对修改可见,故线程非安全。

实例变量:单例时线程非安全,非单例时线程安全。实例变量属于对象实例私有,系统只存在一个实例对象,则在多线程环境下,修改后其他对象均可见,故线程非安全;如果每个线程都在不同的实例对象中执行,则对象与对象间的修改互不影响,故线程安全。

局部变量:线程安全。局部变量定义在方法内部,每个线程执行时都会把局部变量放在各自的帧栈的内存空间中,线程间不共享,故不存在线程安全问题。

静态方法的线程安全性:静态方法中如果没有使用静态变量,则没有线程安全的问题。静态方法内的变量,每个线程调用时都会新创建一份,不会公用一个存储单元,故不存在线程冲突的问题。

热点内容
寻仙手游多开需要什么配置 发布:2025-01-07 14:56:47 浏览:72
支付宝如何看自己的支付密码 发布:2025-01-07 14:51:41 浏览:553
微信内部浏览器缓存 发布:2025-01-07 14:50:43 浏览:336
安卓微信功能在哪里 发布:2025-01-07 14:49:23 浏览:11
中文编程圈子 发布:2025-01-07 14:44:50 浏览:126
储备服务器怎么配置 发布:2025-01-07 14:28:58 浏览:759
如何用本地电脑连接远程服务器 发布:2025-01-07 14:05:25 浏览:185
微信开发者工具编译文件错误 发布:2025-01-07 14:00:23 浏览:857
编程求4乘5 发布:2025-01-07 13:58:44 浏览:572
沃得收割机密码是多少 发布:2025-01-07 13:42:36 浏览:986