欢迎来到天天文库
浏览记录
ID:9179591
大小:513.68 KB
页数:11页
时间:2018-04-20
《14.声明static属性》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、1、课程名程:static关键字2、知识点2.1、上次课程的主要知识点1、string类特点·字符串的内容一旦声明则不可改变,改变的是内存地址的指向;·String类有两种实例化方式:·直接赋值:开辟一块堆内存空间,并且可以自动入池;·构造方法实例化:开辟两块堆内存空间,不会自动入池,可以利用intern()手工入池;·开发的使用:直接赋值使用,一般不会频繁改变、比较使用equals()。2、String类方法3、This关键字::·明确的表示本类中的属性,利用”this属性“操作;·明确调用本类的方法;·利用”this.方法()”调用本类方法;·利用”th
2、is()”调用本类构造,但是要求必须放在构造方法的第一行。·表示当前对象:当前正在调用类中方法的对象。2.2、本次预计讲解的知识点Static关键字定义属性以及定义方法的操作。3、具体内容()Static是java中定义的一个关键字,主要是描述全局的概念,所以利用static关键字可以定义属性、定义方法。但是在90%的情况下,我们开发代码很少会直接编写static.3.1、利用static定义属性现在假设定义一个描述中国人的类,那么在这个类里面肯定包含姓名、年龄、国家,所以按照之前所学习的概念来进行设计,就可以得出如下的结果:classPerson{priv
3、ateStringname;privateintage;Stringcountry="中华人民共和国";//此属性暂时不封装publicPerson(Stringname,intage){this.name=name;this.age=age;}publicStringgetInfo(){return"姓名:"+this.name+",年龄:"+this.age+",国家:"+this.country;}}publicclassTestDemo{publicstaticvoidmain(Stringargs[]){PersonperA=newPerson("
4、张三",10);PersonperB=newPerson("李四",20);PersonperC=newPerson("王五",10);System.out.println(perA.getInfo());System.out.println(perB.getInfo());System.out.println(perC.getInfo());}}但是对于以上程序内存关系中就会发现内存所在了。如果说现在玩穿越了,中国退回了唐朝。中国14亿人口,14亿对象,14亿对象修改一个属性,这样的话对于整个代码的维护实在是太可怕了,而造成这种问题的根源在于:类中的普通属
5、性是每一个对象独自拥有的,但是这样的设计并不符合于当前的环境,所以最好的做法是将国家的属性设置为公供属性。所有人都可以共享此属性,如果要想实现这样的操作,就可以通过static关键字来进行定义。范例:使用static关键字来定义classPerson{privateStringname;privateintage;staticStringcountry="中华人民共和国";//此属性暂时不封装publicPerson(Stringname,intage){this.name=name;this.age=age;}publicStringgetInfo(){r
6、eturn"姓名:"+this.name+",年龄:"+this.age+",国家:"+this.country;}}publicclassTestDemo{publicstaticvoidmain(Stringargs[]){PersonperA=newPerson("张三",10);PersonperB=newPerson("李四",20);PersonperC=newPerson("王五",10);perA.country="中国-唐朝";//修改了一个对象的一个属性System.out.println(perA.getInfo());System.o
7、ut.println(perB.getInfo());System.out.println(perC.getInfo());}}通过执行结果可以发现,修改了一个对象的属性之后,所有对象对应的属性都发生了改变。所以这样的属性称为公共属性,公共属性必须通过static定义,而对于公共属性的内容保存不会在栈也不会在堆,而是会存在于全局数据区之中,而同时所有的方法保存在全局代码区之中。但是现在出现了一人问题,既然static属于全局属性,那么由一个对象进行修改是否合适呢?现在通过一个对象改的:perA.country="中国-唐朝";//修改了一个对象的一个属性很明
8、显,这是不合适的,最好的做法是利用所有对象的一个最高
此文档下载收益归作者所有