黑马程序员---面向对象:static关键字
来源:互联网 发布:您的网络存在安全隐患 编辑:程序博客网 时间:2024/05/06 19:09
-------
static(静态)关键字:
用于修饰成员(成员变量和成员函数),不能修饰局部变量。
当被static修饰后,成员不再放于对内存中,而是放于方法区(或叫共享区、数据区)中,在栈和堆之外的空间,同时多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用:类名.静态成员。事物所特有的变量或行为存放与对象当中,共有的存放于共享区中。
1、 特点:
a) 随着类的加载而加载(随着类的消失而消失,说明它的声明周期长);b) 优先于对象的存在(静态是先存在的,对象是后存在的);c) 被所有对象所共享;d) 可以直接被类名调用。
2、实例变量(成员变量)和类变量(静态变量)的区别:
1>存放位置:类变量随着类的加载而 存在于方法区中。
实例变量随着对象的建立而存在于堆内存中。
2>生命周期:类变量生命周期最长,随着类的消失而消失。
实例变量随着对象的消失而消失。
3、 static使用注意事项:
1>静态方法只能访问静态成员,非static方法既可以访问静态也可以访问非静态成员。
2>静态方法中不可以定义this,super关键字(因为static优先于对象存在,所以静态方法不可出现this)。
3>主函数是静态的。
4、 静态利弊:
利:对对象的共享数据进行了单独空间的存储,节省空间,没必要每一个对象中都存储一份。
弊:生命周期长,访问出现局限性(静态方法只能访问静态成员)。
5、静态的定义:
1>静态变量(类变量)的定义:当对象中出现共享数据(不是共享属性,是一个特定的值,属性是对象特有的),该数据被静态所修饰;对象中的特有数据(即属性,属性可以相同)要定义成非静态存在与堆内存中(对象内部)。
2>static函数的定义:当功能内部没有访问到非静态数据数据(对象的特有数据),那么该功能可以定义成static函数。(重点)
对象的出现是为了封装数据,函数是最小的封装体。
6、静态的应用——工具类:
工具类的出现,让程序更严谨,是不需要创建对象的。
将工具类的方法都用static修饰,直接用类名调用。
强制让工具类不能建立对象,可以将构造函数私有化。
7、静态代码块:格式:
static
{
静态代码块中的执行语句。
}
特点:随着类的加载而执行,只执行一次,并优先于主函数(若主函数存在的类中有静态代码块)、构造代码块、构造函数的执行,用于给类进行初始化。
8、设计模式:
java有23种设计模式,单利设计模式:解决一个类在内存中只存在一个对象。
保证对象唯一的方法:
1>为了避免其他程序过多建立该类对象,通过把构造函数私有化来禁止其他程序建立该类对象。
2>为了让其他程序可以访问到该类对象,那么在类中创建一个本类对象。
3>为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式(通过提供一个方法可以获取本类对象)。
class Person{private String name = "lisi"; //成员变量(实例变量)private static String country = "CHINA"; //静态成员变量(类变量:是一个特定的值,生命周期最长)//静态代码块,当调用该类时第一个执行,进行初始化操作。static{System.out.println("Person code.");}//构造代码块。{System.out.println("name="+name+",country="+country);}//名字赋值方法体。public void setName(String name){this.name = name;}//获取名字。String getName(){return name;}//静态方法体,可以直接通过类名调用。public static void showcountry(){System.out.println("country="+country);}}class StaticDemo{public static void main(String[] args) {Person p = new Person(); //建立对象p.setName("李斯"); //赋值名字。System.out.println("name="+p.getName());Person.showcountry(); //静态函数调用。}}
上面代码段仅是为了展示static的简单用法。特别需要注意的是静态函数的定义是仅当该函数不会调用非静态成员时才能定义。且static用于工具类以及设计模式需要我们熟悉,理解设计模式的思想,方便自己写工具类以及一些设计模式,用来严谨代码块,增加代码复用性。
- 黑马程序员---面向对象:static关键字
- 黑马程序员_面向对象关键字static
- 黑马程序员—Java面向对象(类和对象、封装、构造方法、this关键字、static关键字)
- 黑马程序员--面向对象之一:面向对象概念、类和对象的关系、封装、构造函数、this关键字、static关键字
- 黑马程序员 面向对象 static main
- 黑马程序员 Java面向对象(封装,构造函数,this关键字,静态static)
- 黑马程序员--03.Java面向对象--02.【static关键字】【main方法】【静态成员】
- 黑马程序员-----java面向对象之封装、构造函数、this关键字、static静态总结*
- 黑马程序员 Java基础 面向对象:static关键字 main函数 单例设计模式
- 黑马程序员笔记——Java面向对象之static关键字和单例设计模式
- 黑马程序员------毕老师视频笔记第六天------面向对象(static关键字)
- 黑马程序员——面向对象——static关键字——代码块
- 黑马程序员-------- java面向对象 封装、构造函数、this static关键字、单例设计
- 黑马程序员-JAVASE入门( 面向对象、单例设计模式、this、static关键字)
- 黑马程序员——面向对象——构造方法与static关键字
- 黑马程序员——高新技术---Java基础语法—面向对象_构造方法,static 关键字
- 黑马程序员———面向对象之封装及this和static关键字
- 黑马程序员=====面向对象之封装及this和static关键字
- solr multiValued的查询
- 完美配置Tomcat的HTTPS
- ubuntu12.04桌面切换到经典,再从经典切回来12.04;
- android Notification 的使用
- generated file: '../../build/vs71/release/lib_json\json_writer.asm': No such file or directory
- 黑马程序员---面向对象:static关键字
- 25个增强iOS应用程序性能的提示和技巧 — 高级篇
- 关于数据挖掘的几个概念
- HTML5 经量级框架 jQuery Mobile - 7.1
- 【TTS】关于语音合成技术整理
- ps下雪动态教程
- SIP协议
- The Special Number
- jQuery中parents()的使用说明