静态方法

C++ 类的静态成员(static)

会有一股神秘感。 提交于 2020-02-22 18:30:15
静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里,我们主要讲述类的静态成员来实现数据的共享。 静态数据成员 在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。 使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对 象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。    静态数据成员的使用方法和注意事项如下:   1、静态数据成员在定义或说明时前面加关键字static。   2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:     <数据类型><类名>::<静态数据成员名>=<值>   这表明: (1) 初始化在类体外进行 ,而前面不加static,以免与一般静态变量或对象相混淆。   (2) 初始化时不加该成员的访问权限控制符private,public等。   (3) 初始化时使用作用域运算符来标明它所属类,因此, 静态数 据成员是类的成员,而不是对象的成员。   3

Spring框架:通过工厂方法配置bean

泄露秘密 提交于 2020-02-22 08:24:19
工厂方法:静态工厂方法、实例工厂方法 静态工厂方法 • 调用 静态工厂方法 创建 Bean 是将 对象创建的过程封装到静态方法中 . 当客户端需要对象时 , 只需要简单地调用静态方法 , 而不同关心创建对象的细节 . • 要声明通过静态方法创建的 Bean, 需要在 Bean 的 class 属性里指定拥有该工厂的方法的类 , 同时在 factory-method 属性里指定工厂方法的名称 . 最后 , 使用 < constrctor-arg > 元素为该方法传递方法参数 . 实例工厂方法 • 实例工厂方法 : 将对象的创建过程封装到另外一个对象实例的方法里 . 当客户端需要请求对象时 , 只需要简单的调用该实例方法而不需要关心对象的创建细节 . • 要声明通过实例工厂方法创建的 Bean – 在 bean 的 factory-bean 属性里指定拥有该工厂方法的 Bean – 在 factory-method 属性里指定该工厂方法的名称 – 使用 construtor-arg 元素为工厂方法传递方法参数 科普:Static static 是静态修饰符,可用来修饰成员变量和方法,修饰的变量和方法属于类而不属于某个实例(直接通过类名来访问),当然任何实例也能访问; static{} 则表示静态块,再jvm加载类时就会被执行且只会被执行一次。 public class Test {

什么?接口中方法可以不是抽象的「JDK8接口新语法的深度思考」

青春壹個敷衍的年華 提交于 2020-02-21 18:31:33
先赞后看,养成习惯 文本已收录至GitHub开源仓库 Lu_JavaNodes 码云仓库地址 Lu_JavaNodes ,包含教程涉及所有思维导图,案例代码和后续讲解视频,欢迎Star增砖添瓦。 前言 在传统的接口语法中,接口中只可以有抽象方法 。在是在实际的使用中,我们往往会需要用到很多和接口相关的功能(方法),这些功能会单独的拿出开放在工具类中。 工具类:类中所有的方法都是静态的 例如:Collection 和 Collocations,Collection 是一个集合接口,而我们需要很多集合相关的操作,像集合的排序,搜索等等, 这时候人们会把这些静态方法放在 Collections 工具类中。 在传统Java中我们经常会看到这样的情况,有一个接口叫 A,这时候就会有一个类叫 As,As中全是和A接口有关的静态方法。 例如:Executor 和 Executors 这样的一种方式总归来说是有点不方便。 于是在JDK8中Java对于接口做了一些改动,允许将静态方法直接写入接口中 。(接口中可以定义静态方法,静态方法肯定不是抽象的,是有实现的)。 接口的静态方法 代码案例 根据上述内容,我们来定义一个接口,在接口中写入一个静态方法。 public class TestStaticInterface { public static void main(String[] args) {

static关键字修饰类

寵の児 提交于 2020-02-21 05:48:13
可以将一个类的定义放在另一个类的内部定义,这样的类就被称为嵌套类,包含嵌套类的类被称为外部类(outer class),也可以叫做封闭类。 嵌套类可以分为两种: 静态嵌套类(Static Nested Classes):使用static声明,一般称为嵌套类(Nested Classes); 非静态嵌套类(Non-static Nested Classes):非static声明,一般称为内部类(Inner Classes); 嵌套类是它的外部类的成员。非静态嵌套类(内部类)可以访问外部类的其他成员,即使该成员是私有的,而静态嵌套类只能访问外部类的静态成员。 嵌套类作为外部类的一个成员,可以被声明为:private, 包访问,protected,public (注意:外部类只能被声明为 public 或者包范围)。 使用嵌套类的主要优点有以下几个方面: 嵌套类可以访问外部类的数据成员和方法,即使它是私有的; 提高可读性和可维护性:因为如果一个类只对另外一个类可用,那么将它们放在一起,这更便于理解和维护; 提高封装性:给定两个类A和B,如果需要访问A类中的私有成员,则可以将B类封装在A类中,这样不仅可以使得B类可以访问A类中的私有成员,并且可以在外部隐藏B类本身; 减少代码的编写量; 静态嵌套类可以使用外部类的名称来访问它。例如: OuterClass.StaticNestedClass

下面来看

别说谁变了你拦得住时间么 提交于 2020-02-20 16:55:29
来避免两个打印作业同时输出到打印机中, 即在整个的打印过程中我只有一个打印程序的实例。 简单说来, 下面来看 从上面的类图中可以看出,在单例类中有一个构造函数 Singleton , 但是这个构造函数却是私有的(前面是“ - ”符号), 然后在里面还公开了一个 GetInstance()方法, 通过上面的类图不难看出 单例模式 的定义 Singleton 类 namespace Singleton { public class Singleton { //定义一个私有的静态全局变量来保存该类的唯一实例 private static Singleton singleton; /// <summary> /// 构造函数必须是私有的 /// 这样在外部便无法使用 new 来创建该类的实例 /// </summary> private Singleton () { } /// <summary> /// 定义一个全局访问点 /// 设置为静态方法 /// 则在类的外部便无需实例化就可以调用该方法 /// </summary> /// <returns></returns> public static Singleton GetInstance () { //这里可以保证只实例化一次 //即在第一次调用时实例化 //以后调用便不会再实例化 if ( singleton == null )

优化网页速度的7种方法

大憨熊 提交于 2020-02-20 15:22:08
为什么网站优化要把网页静态化? SEO优化过程中,把动态网页转化为静态页面是许多SEO优化人员常常做的事情,面对这种SEO优化操作的行为很多人可能有疑问,那就是 为什么网站优化要把网页静态化? 下面就给大家详细的介绍一下关于网页静态化的一些问题。 什么是动态页面?什么是静态页面? 动态网页:是以.asp、.jsp、.php、.perl、.cgi等形式为后缀,并且在动态网页网址中有一个标志性的符号——“?” 。动态页面是以ASP、PHP、JSP、Perl、或CGI等编程语言制作的,用上面两个指标基本上可以判断出是不是动态页面,如果你想知道详细介绍,可以自己百度搜索一下。 静态页面:静态网页是实际存在的,无需经过服务器的编译, 直接加载到客户浏览器上显示出来。静态页面需要占一定的服务器空间,且不能自主管理发布更新的页面,如果想更新网页内容,要通过FTP软件把文件DOWN下来用网页制作软件修改(通过fso等技术例外)常见的静态页面举例:.html扩展名的、.htm扩展名的。 除了静态页面和动态页面还有一种的伪静态页面,在网站页面转化的时候大多转化成伪静态页面。 网页静态化对于SEO优化有哪些好处? 1、网页静态化有利于搜索引擎收录 静态页面和动态页面想对比来说,搜索引擎更喜欢静态页面,对于静态页面也更好抓取收录,这样对于网站优化来说有很大的好处,更利于排名,你可以去观察那些大型的门户网站

Java面向对象大致梳理

别说谁变了你拦得住时间么 提交于 2020-02-20 13:01:03
面向对象思想、 面向对象思想概述: Java设计语言面向对象: Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面 向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算 机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去 操作实现。 类和对象: 类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该 类事物 属性:就是该事物的状态信息。 行为:就是该事物能够做什么。 对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性 和行为。 类与对象的关系 : 类是对一类事物的描述,是抽象的。 对象是一类事物的实例,是具体的。 类是对象的模板,对象是类的实体。 面向对象之封装: 概述: 面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。 封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的 方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。

java笔记3(动手动脑)

一曲冷凌霜 提交于 2020-02-20 07:07:09
1.以下代码为何无法通过编译?哪儿出错了? 原因:已有的Foo()是带一个int型参数的构造方法,不存在无参的构造方法Foo() "构造方法" 当创建一个对象时,它的构造方法会被自动调用。构造方法与类名相同,没有返回值 ,它的作用是对类进行初始化, 如果类没有定义构造函数,Java编译器在编译时会自动给它提供一个没有参数的“默认构造方法” 但是如果已经有了一个有参数的构造方法,,即重写了构造方法,那么原来的默认的无参构造方法会被重写的构造方法所覆盖 2.根据下列代码的输出结果,总结java 字段初始化的规律 1 /** 2 * 3 */ 4 5 /** 6 * @author 信1605-3 20163471 吴鑫 7 * 8 */ 9 class InitializeBlockClass { 10 { 11 field=200; 12 } 13 public int field=100; 14 public InitializeBlockClass(int value) { 15 // TODO 自动生成的构造函数存根 16 this.field=value; 17 } 18 public InitializeBlockClass(){ 19 } 20 /** 21 * @param args 22 */ 23 public static void main(String[]

关于python的类成员、实例成员、静态成员的对比与联系

六眼飞鱼酱① 提交于 2020-02-20 02:15:39
preface:本文是https://blog.csdn.net/qq_31780525/article/details/72639491一文的补充。 Python中的静态成员、非静态成员,与C#的静态成员、非静态成员有着一种千丝万缕的区别,此文专门针对这种区别,进行详细讨论。 推荐大家先看代码段,再看结论。边看代码段边思考。 首先,我们不妨将这种不带get、set方法的类成员属性称作为“字段”(C++,C#的说法)。此时,有如下代码段: 代码段_1 class people: name="Skar" #这个“字段”,既是类的,也是实例的,本文给它起个名字,叫“调皮字段” age=20 #同样,这个“字段”,既是类的,也是实例的 p=people() #p是people的一个实例 print(p.name) #打印结果:"skar"。所以,p的名字叫“skar”,符合认知 print(people.name) #打印结果:"skar"。所以,people的名字叫“skar”,但不符合认知 print(p.age) #打印结果:20。所以,p的年龄为20,符合认知 print(people.age) #打印结果:20。所以,people的年龄为20,但不符合认知 所以,在代码段_1中,并没有真正的“类字段”,也就是C#中的静态字段。同样的,也没有真正的“实例字段”,也就是C#中的

静态方法,Arrays类,二维数组

旧街凉风 提交于 2020-02-19 03:17:27
一、静态方法 静态方法属于类的,可以直接使用类名.方法名()调用。 静态方法的声明 访问修饰符 static 类型 方法名(参数列表) { //方法体 } 方法的作用:一个程序分解成几个方法,有利于快速调试程序,也有利于提高程序代码的利用率。因为方法是可以多次被调用的,调用次数和调用场合没有限制。 方法分类:①返回值为(空)void的方法②带具体返回类型的方法③不带参数的方法④带参数的方法 方法的返回值:如果方法中有返回值,方法中必须使用关键字return返回该值,返回值类型为该方法所定义的返回值类型。 ①不带返回值的方法 1 public class BubbleSort{ 2 public static void main(String []argas) 3 { 4 int[] array={80,53,12,90,35,22,65,45,82,33}; 5 bubble(array); 6 print(array); 7 } 8 9 //冒泡方法 10 public static void bubble(int[] array) 11 { 12 //N个数比较的轮数为N-1次 13 for(int i=0;i<array.length-1;i++) 14 { 15 //每一轮比较的次数为N-1-i次 16 for(int j=0;j<array.length-i-1;j++)