第十二讲 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对象,但有一个限定,数组一旦定义,其容量就已经被确定了。
第一: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对象,但有一个限定,数组一旦定义,其容量就已经被确定了。
相关文章推荐
- Java 中被static 修饰的属性,方法和代码块在什么时候加载
- Java中类的继承,属性和方法的四种修饰符的作用范围,final关键字,java的三大特点中的2个:封装和多态,以及多态的一个设计模式,模板方法模式(template method)
- JAVA main方法详解、单例设计模式、继承、关键字(static、extends、super、instanceof、final)
- static 修饰的属性、方法、代码块的使用实例
- java基础之equal()方法、static关键字、单例设计模式
- 面向对象基础续2(static关键字、理解main方法、代码块、构造方法私有化(单例模式)) .
- 方法的重载与重写的关系(区别);static关键字;单例设计模式;继承;
- PHP里边用Static关键字来定义静态属性和方法
- 静态代码块、代码块、构造方法、普通方法、static方法、 *静态属性、普通属性的加载顺序、执行顺序
- day06static关键字,main函数,帮助文档的制作,静态代码块,对象的初始化过程,单例设计模式
- Java 多线程:synchronized 关键字 3ff0 用法(修饰类,方法,静态方法,代码块)
- java、静态代码块、static和单列设计模式
- 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类
- Java static修饰属性(类变量)、static修饰方法(类方法)
- Java final关键字用来修饰类、方法、属性
- Java 多线程5:synchronized 关键字用法(修饰类,方法,静态方法,代码块)
- Java final关键字用来修饰类、方法、属性
- Java的static修饰变量,方法,代码块的初始化顺序
- 7月21日---关键字、抽象方法、抽象类、接口、多态及总结、设计模式
- Java中final和static对修饰类、方法、属性的总结