静态方法

java 基础 --- static 本质

坚强是说给别人听的谎言 提交于 2020-03-08 20:41:20
java 基础 --- static 本质 今天遇到了 Static ,想深入了解一下 Static 的具体作用。 一, 静态成员变量和静态方法 Static 是一个用于修饰成员变量和方法的,被其修饰的成员变量/方法被称作静态成员变量/静态成员方法 ,也叫做类变量。既然是被这个关键字修饰,那么注定静态成员变量/方法与普通的成员变量/方法是有区别的。 静态与非静态的区别: 1.static 修饰的成员变量和方法,从属于类。普通变量和方法,从属于对象的。 2.静态修饰的变量/方法的生命周期和类相同,在整个应用程序执行期间都有效。普通成员变量/方法只有在类创建对象后才开始存在的,对象被销毁,他也会被销毁。 3.静态变量/方法可以使用“类名.静态成员”的形式进行调用。非静态变量/方法必须用“对象.变量”来调用。 4.静态变量是全类共享的,普通变量是每个对象单独使用的。 5.在静态方法中不可以使用 this 关键字。 6.在静态方法中不可以直接调用非静态方法 7.在 java 中规定,不能将方法体内的局部变量声明为 static。 二,静态代码块 在类中,用 static 声明的成员变量为静态成员变量,也成为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。 构造方法用于对象的初始化,静态初始化块用于类的初始化操作。在静态初始化块中,不能直接访问非 static 成员。

C++面试题

时光怂恿深爱的人放手 提交于 2020-03-08 08:06:32
语言基础类 1. 指针和引用的区别? (1)指针有自己的一块空间,而引用只是一个别名;  (2)使用 sizeof 看一个指针的大小为 4 字节(32位,如果要是64位的话指针为8字节),而引用则是被引用对象的大小。 (3) 引用必须在定义时被初始化,指针不必; (4)不存在指向空值的引用,但存在指向空值的指针。 2.static和 const的用法,(能说出越多越好)(重点) 首先说说const的用法(绝对不能说是常数) 1.限定变量为不可修改。 2.限定成员函数不可以修改任何数据成员。 3.使用const关键字修饰的变量,一定要对变量进行初始化 下面的声明都是什么意思? const int a; a是一个常整型数 int const a; a是一个常整型数 const int *a; a是一个指向常整型数的指针,整型数是不可修改的,但指针可以 int * const a; a为指向整型数的常指针,指针指向的整型数可以修改,但指针是不可修改的 int const * a const; a是一个指向常整型数的常指针,指针指向的整型数是不可修改的,同时指针也是不可修改的 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。

java 内部类(摘抄自网络)

放肆的年华 提交于 2020-03-08 07:46:23
Java内部类 1、内部类分为成员内部类、静态嵌套类、方法内部类、匿名内部类。 几种内部类的共性: A、内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。 B、内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。 2、 成员内部类 形式如下: class Outer { class Inner{} } 编译上述代码会产生两个文件:Outer.class和Outer$Inner.class。 成员内部类内不允许有任何静态声明!下面代码不能通过编译。 class Inner{ static int a = 10; } 能够访问成员内部类的唯一途径就是通过外部类的对象! A、从外部类的非静态方法中实例化内部类对象。 class Outer { private int i = 10; public void makeInner(){ Inner in = new Inner(); in.seeOuter(); } class Inner{ public void seeOuter(){ System.out.print(i); } } } 表面上,我们并没有创建外部类的对象就实例化了内部类对象,和上面的话矛盾。事实上

关于工具类static静态方法调用@Autowired注入的service类问题

假如想象 提交于 2020-03-07 21:26:25
参考链接: https://www.cnblogs.com/chenfeng1122/p/6270217.html //用@PostConstruct注解 @Component public class Test { private static UserService userService; @Autowired private UserService userService2; @PostConstruct public void beforeInit() { userService = userService2; } public static void test() { userService.test(); } } 来源: CSDN 作者: zongmaomx 链接: https://blog.csdn.net/zongmaomx/article/details/104717708

PHPCMS V9静态化HTML生成设置及URL规则优化

大兔子大兔子 提交于 2020-03-07 19:23:16
先讲讲 Phpcms V9 在后台怎么设置生成静态化HTML,之后再讲解怎么自定义URL规则,进行URL地址优化。在这一篇中,伪静态就不涉及了,大家可以移步到 Phpcms V9全站伪静态设置方法 。 一、静态化HTML生成设置 进入PHPCMS V9后台设置,找到分类栏目,位置:内容->管理栏目->添加栏目(或者管理栏目、点击对应栏目“修改”): 注意设置第二选项卡,“生成HTML设置”,具体抓图: 确认提交后,记得更新栏目缓存,然后进行发布管理:批量更新栏目页、批量更新内容页。 二、PHPCMS V9自定义URL规则及URL地址优化 先了解下PC v9的html生成原理: Phpcms生成的静态页目录规则是按照URL规则生成的, 静态页内容是ob_clean前台模板文件产生的phpcms\templates\default,静态页的调试 :修改静态页,重新生成静态页再看效果,也可以调用前台控制/index.php?m=openservice&c=index&a=openservice修改好前台模板再生成。 只要是静态页的链接都要及时同步文件,防止死链接,数据错误。 基于此,我们可以在后台扩展URL规则管理中自定义URL生成规则,具体位置:扩展 > URL规则管理 。 1、默认的栏目生成规则是: {$categorydir}{$catdir}/index.html|{

PHPCMS V9静态化HTML生成设置及URL规则优化

左心房为你撑大大i 提交于 2020-03-07 19:22:59
最近有客户在进行网站优化的时候,具体问道Phpcms V9怎么样静态化、伪静态的问题,之前有分享过“ Phpcms自定义URL规则技巧 ”,不过那只是原理,今天在这里,与大家从使用的角度上,具体分享实际的使用操作方法。 先讲讲Phpcms V9在后台怎么设置生成静态化HTML,之后再讲解怎么自定义URL规则,进行URL地址优化。在这一篇中,伪静态就不涉及了,大家可以移步到 Phpcms V9全站伪静态设置方法 。 一、静态化HTML生成设置 进入PHPCMS V9后台设置,找到分类栏目,位置:内容->管理栏目->添加栏目(或者管理栏目、点击对应栏目“修改”): 注意设置第二选项卡,“生成HTML设置”,具体抓图: 确认提交后,记得更新栏目缓存,然后进行发布管理:批量更新栏目页、批量更新内容页。 二、PHPCMS V9自定义URL规则及URL地址优化 先了解下PC v9的html生成原理: Phpcms生成的静态页目录规则是按照URL规则生成的, 静态页内容是ob_clean前台 模板 文件产生的phpcms\templates\default,静态页的调试 :修改静态页,重新生成静态页再看效果,也可以调用前台控制/index.php?m=openservice&c=index&a=openservice修改好前台 模板 再生成。 只要是静态页的链接都要及时同步文件,防止死链接

类的静态数据成员初始化问题

孤者浪人 提交于 2020-03-07 10:29:08
1. 静态数据成员在类声明中声明,在包含类方法的文件中初始化。初始化时使用作用域运算符来指出静态成员所属的类。但如果静态成员是整形const或枚举型const,则可以在类声明中初始化。 C++ primer plus P426-P427类静态成员的声明和初始化 //strnbad.h class StringBad { private: static int num_strings; … }; //strnbad.cpp int StringBad::num_strings = 0; 不能在类声明中初始化静态成员变量,这是因为声明描述了如何分配内存,但并不分配内存。请注意,初始化语句指出了类型,并使用了作用域运算符,但没有使用关键字static。初始化是在方法文件中,而不是在类声明文件中进行的,如果在头文件中,当头文件被包括在其他几个文件中时,将出现多个初始化副本,从而引发错误。 来源: https://www.cnblogs.com/lakeone/p/5271400.html

java设计模式-代理模式

雨燕双飞 提交于 2020-03-07 08:00:17
代理模式是java最常见的设计模式之一。spring的aop就是使用了代理模式。 一般而言,代理模式分为静态代理和动态代理两种。 作为结构类的设计模式,作用在于不修改类内部代码的情况下,对类进行拓展,是对继承机制的一种补充。 eg :下面就用户登录这个例子实现一下代理模式。    基本需求是:实现用户的登录和修改昵称功能。 上代码,先是IUser接口和user实现类 public interface IUser { //登录 void login(String userId,String password); //修改昵称 void editNickname(String nickname); } public class User implements IUser { private String nickname; private String userId; private String password; public User(String userId,String password){ this.userId = userId; this.password = password; } @Override public void login(String userId, String password){ if(this.userId == userId && this

设计模式学习(二)

懵懂的女人 提交于 2020-03-06 20:48:41
一、单例模式 单例模式分为以下8种: 饿汉式: 静态常量 静态代码块 懒汉式: 线程不安全 线程安全,同步方法 线程安全,同步代码块 双重检查 静态内部类 枚举 单例模式的使用场景: 需要频繁创建和销毁的对象;创建时耗时过多或消耗资源过多,但又经常用到的对象(比如session工厂、数据源等) (1)饿汉式 - 静态常量写法 代码实现: /** * 设计模式之单例模式 * 饿汉式(静态常量) * * @author song * @create 2020/3/4 15:08 */ public class SingletonTest01 { public static void main(String[] args) { Singleton instance1 = Singleton.getInstance(); Singleton instance2 = Singleton.getInstance(); System.out.println("两次获取的实例一样吗:" + (instance1 == instance2)); //true } } class Singleton { //私有构造方法,使其不可在外部通过构造器实例化 private Singleton() { } //定义为常量,保证实例对象不变 private final static Singleton

《C#高级编程(第6版)》第3章筆記----第3章对象和类型

不羁岁月 提交于 2020-03-06 09:54:13
结构与类的区别是它们在内存中的存储方式(类是存储在堆(heap)上的引用类型,而结构是存储在堆栈(stack)上的值类型)、访问方式和一些特征(如结构不支持继承)。较小的数据类型使用结构可提高性能。但在语法上,结构与类非常相似,主要的区别是使用关键字struct代替class来声明结构。 类成员----类中的数据和函数称为类的成员. 数据成员包含了类的数据-- 字段、常量和事件。数据成员可以是静态数据(与整个类相关)或实例数据(类的每个实例都有它自己的数据副本)。通常,对于面向对象的语言,类成员总是实例成员,除非用static进行了显式的声明。 函数成员提供了操作类中数据的某些功能,包括方法、属性、构造函数和终结器(finalizer)、运算符以及索引器。 构造函数是在实例化对象时自动调用的函数。它们必须与所属的类同名,且不能有返回类型。构造函数用于初始化字段的值。 终结器类似于构造函数,但是在CLR检测到不再需要某个对象时调用。它们的名称与类相同,但前面有一个~符号。 给方法传递参数 参数可以通过引用或值传递给方法。在变量通过引用传递给方法时,被调用的方法得到的就是这个变量,所以在方法内部对变量进行的任何改变在方法退出后仍旧发挥作用。而如果变量是通过值传送给方法的,被调用的方法得到的是变量的一个副本,也就是说,在方法退出后,对变量进行的修改会丢失。对于复杂的数据类型