您的位置:首页 > 编程语言

第十二讲 static关键字修饰属性和方法、代码块、单例设计模式、对象数组案例

2017-12-07 11:35 726 查看
导读

第一:static关键字的概念与本质分析

第二:代码块与其内存分布

第三:单例模式的本质

第四:对象数组的定义与应用

一、static关键字

①、修饰属性:编程类属性,被关键字定义的字段。由JVM加载的时候就已经把这些属性加载到ClassLoader中,也就是说同时就分配了内存空间了,能够直接使用。

如:

class Applet

{

static int count = 10; // 被static关键字修饰的变量:count

}

使用:

System.out.println("第一次count修改后:" + (Applet.count+=1)); // 此时count的值变:11

System.out.println("第二次count修改后:" + (Applet.count-=3));// 此时是在count原有的(11)基础上减去3,等于 8

System.out.println("第三次count修改后:" + (Applet.count +=5));// 从8加上5,等于13了

看出什么了吗?—— 对,您们都很聪明,count的值不断在变化。说明一个问题,就是说被static修饰的属性是一个数据共享区域。每次修改都是修改同一个变量而
已,现在这个问题就已经解释清楚了。

②、方法修饰:其实这个我们可以理解为一段可以被重复调用的代码块,但它是属于类级别的。方法栈一旦执行完毕,那么里面的数据将被全部销毁。还有一个就是说,静
态方法中不能直接调用非静态属性。

代码如下——

class Executer

{

public static void request()

{

System.out.println("=== request connection factory ===");

}

}

③、代码块

|- 静态代码块:说白了,代码块其实就是一个有限区域的空间。也就是在一对花括号的范围内,变量一旦除了这个大括号,那么它的有效性就没有了。



// 在所有的Java元素中,是第一个被执行的:也是唯一执行一次的代码块!!!

static

{

// 我在这里定义的变量

int number =100;

System.out.println("number is : "  + number);

}

System.out.println("number is : "  + number); // 这里是访问不到的,因为number已经除了大括号范围了。

// 非静态代码块——

{

boolean flag = false; 

System.out.println("boolean状态值:" + false);

}

④、设计模式之:单例模式

目的:在程序的运行过程中,单例类只返回唯一的一份对象。

分析:如何设计唯一的一个对象呢,首先我是这样考虑的,构造器是肯定不能在外部new新的对象的,因为是单例嘛。其次可以在内部就可以马上获取到这个对象。

设计:然后编写一个即使在外部都能够调用生成唯一的一个对象。

public class MySingleton

{

private static MySingleton instance = new MySingleton(); // 创建了一个instance对象

private MySingleton()

{

super();

}

p
4000
ublic static MySingleton getInstance()

{

return MySingleton.instance;

}

}

⑤、对象数组

class Student

{

private String name;

public void setName(String name)

{

this.name = name;

}

public String getName()

{

return name;

}

}

/** 创建一个学生类数组,里面可以存放三个对象 **/

Student[] students = new Student[3]; // 这个就是对象数组,里面可以存放三个Student学生对象——

这样可以有效地管理每一个Student对象,但有一个限定,数组一旦定义,其容量就已经被确定了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐