java基础3--面向对象(上)(static关键字与main方法)
2011-01-16 20:55
441 查看
*用static声明属性
static 关键字用于声明属性时,该属性成为 静态属性(也叫公共属性,此属性为所有对象所共有),如果有些属性希望被所有对象共享,则必须将其声明为static 属性。
为什么在一旦使用了static关键字声明属性之后,则会为所有的对象共享?
可以从内存的使用 来理解,JAVA中常用的内存区域有以下几个:
*栈内存空间:保存所有的对象名称(实质上是保存了引用空间的堆内存空间地址)
*堆内存空间:保存每个对象的具体属性内容。
*全局数据区:保存static类型的属性。
*全局代码区:保存所有的方法定义。
static声明的属性保存在全局数据区中,所以可以为该类的所有成员所共享。
*用static声明方法
用static声明 的方法,也可以称为类方法,可以由类名称直接调用。如果定义了一个Person类,那么使用static 声明的方法,可以使用Person.方法名()来直接调用。
注意:
*非static的方法或属性可以调用static方法,但static方法 是不能调用 非static声明的属性或者方法的。
*static 的相关应用
我现在知道的相关应用只有两个,希望在以后学习更多的相关应用:
*使用static关键字,可以统计一个类到产生了多少个实例化对象。因为 只要有一个实例化对象产生,则一定会调用其中的构造方法,我们在构造方法将 一个使用static声明的属性进行自增,这样就能够计算书一个类到底有多少个实例化对象产生了。
例:
class Demo{
private static int count =0;
public Demo(){
count++;
System.out.println("产生了"+count+"个对象!");
}
public static void main(String[] args){
new Demo();
new Demo();
new Demo();
}
}
*static 在单态设计模式中的应用
设计模式就是前人经过在实际开发中的探索和研究,总结出来的一套行之有效的程序设计方法。通过借鉴这些有用的成功的设计模式,可以大大减少自己研究和思考的时间,并学习到前人思想的精髓和要点。
*单态设计模式:
单太设计模式就是:采取一定的方法在整个软件系统中,在某个类只能存在一个实例化对象,并且该类中只提供一个取得该对象实例的方法。如果要一个类在JVM中只产生一个实例化对象,那么就要使用 private 声明构造方法,使其不能在类的外部用 new 进行实例化。但在类内部 仍然可以产生该类的对象。
在此时,类的外部无法创建对象,也无法调用类内部的对象,所以需要一个静态的方法来返回这个创建好的对象。由于静态的方法只能访问静态的属性,所以该对象的属性也必须声明为static属性。
应用例子:
class Chinese{
static Chinese objRef = new Chinese(); //创建的对象声明为static,只会创建一次。
private static int count = 0;
String name;
int age;
private Chinese(){ //封装了构造方法,使得在类外部不能创建对象
System.out.println(++count);
}
public static Chinese getInstance(){ //利用静态方法返回一个对象
return objRef;
}
}
class TestChinese{
public static void main(String[] args){
Chinese obj1 = Chinese.getInstance();
Chinese obj2 = Chinese.getInstance();
System.out.println(obj1==obj2); //虽然类外部创建了2对象,但2个对象的引用地址
//完全相等,就是说他们其实是一个对象。
}
}
*理解main方法
在public static void main(String args){}
中 *public表示此方法为公共的,让编译器可以调用
*由于main方法是程序的起点,必须声明为静态方法,以便使用类名直接调用
*void 表示此方法没有返回值
*main是主方法的名字,没有为什么,就是要那么写,就是JAVA给主方法取名为main。
*(String[] args)就是主方法接收的参数列表 为String类型,参数之间用空格间隔。
static 关键字用于声明属性时,该属性成为 静态属性(也叫公共属性,此属性为所有对象所共有),如果有些属性希望被所有对象共享,则必须将其声明为static 属性。
为什么在一旦使用了static关键字声明属性之后,则会为所有的对象共享?
可以从内存的使用 来理解,JAVA中常用的内存区域有以下几个:
*栈内存空间:保存所有的对象名称(实质上是保存了引用空间的堆内存空间地址)
*堆内存空间:保存每个对象的具体属性内容。
*全局数据区:保存static类型的属性。
*全局代码区:保存所有的方法定义。
static声明的属性保存在全局数据区中,所以可以为该类的所有成员所共享。
*用static声明方法
用static声明 的方法,也可以称为类方法,可以由类名称直接调用。如果定义了一个Person类,那么使用static 声明的方法,可以使用Person.方法名()来直接调用。
注意:
*非static的方法或属性可以调用static方法,但static方法 是不能调用 非static声明的属性或者方法的。
*static 的相关应用
我现在知道的相关应用只有两个,希望在以后学习更多的相关应用:
*使用static关键字,可以统计一个类到产生了多少个实例化对象。因为 只要有一个实例化对象产生,则一定会调用其中的构造方法,我们在构造方法将 一个使用static声明的属性进行自增,这样就能够计算书一个类到底有多少个实例化对象产生了。
例:
class Demo{
private static int count =0;
public Demo(){
count++;
System.out.println("产生了"+count+"个对象!");
}
public static void main(String[] args){
new Demo();
new Demo();
new Demo();
}
}
*static 在单态设计模式中的应用
设计模式就是前人经过在实际开发中的探索和研究,总结出来的一套行之有效的程序设计方法。通过借鉴这些有用的成功的设计模式,可以大大减少自己研究和思考的时间,并学习到前人思想的精髓和要点。
*单态设计模式:
单太设计模式就是:采取一定的方法在整个软件系统中,在某个类只能存在一个实例化对象,并且该类中只提供一个取得该对象实例的方法。如果要一个类在JVM中只产生一个实例化对象,那么就要使用 private 声明构造方法,使其不能在类的外部用 new 进行实例化。但在类内部 仍然可以产生该类的对象。
在此时,类的外部无法创建对象,也无法调用类内部的对象,所以需要一个静态的方法来返回这个创建好的对象。由于静态的方法只能访问静态的属性,所以该对象的属性也必须声明为static属性。
应用例子:
class Chinese{
static Chinese objRef = new Chinese(); //创建的对象声明为static,只会创建一次。
private static int count = 0;
String name;
int age;
private Chinese(){ //封装了构造方法,使得在类外部不能创建对象
System.out.println(++count);
}
public static Chinese getInstance(){ //利用静态方法返回一个对象
return objRef;
}
}
class TestChinese{
public static void main(String[] args){
Chinese obj1 = Chinese.getInstance();
Chinese obj2 = Chinese.getInstance();
System.out.println(obj1==obj2); //虽然类外部创建了2对象,但2个对象的引用地址
//完全相等,就是说他们其实是一个对象。
}
}
*理解main方法
在public static void main(String args){}
中 *public表示此方法为公共的,让编译器可以调用
*由于main方法是程序的起点,必须声明为静态方法,以便使用类名直接调用
*void 表示此方法没有返回值
*main是主方法的名字,没有为什么,就是要那么写,就是JAVA给主方法取名为main。
*(String[] args)就是主方法接收的参数列表 为String类型,参数之间用空格间隔。
相关文章推荐
- 黑马程序员——高新技术---Java基础语法—面向对象_构造方法,static 关键字
- JAVA基础再回首(五)——static关键字、main方法、java Api帮助文档的使用、Math类、代码块
- 【Java基础】----static关键字、代码块、Main方法、匿名对象详解
- 黑马程序员——Java基础---面向对象(构造方法和static关键字)
- 黑马程序员---java基础---面向对象中的构造方法及static关键字,变量的问题
- JAVA基础之static关键字方法总结
- java学习基础面向对象之this和static关键字 五-4
- Java中的static关键字解析(转自海子)__为什么main方法必须是static的,因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。
- java基础_构造方法、this、static关键字
- java基础总结08-面向对象4(static关键字)
- 黑马程序员_Java基础_面向对象(继承、子父类变量和函数以及构造函数特点、final关键字、抽象类、模版方法模式、接口)
- 黑马程序员—Java面向对象(类和对象、封装、构造方法、this关键字、static关键字)
- Java基础 static关键字 javadoc 面向对象(2)
- java--面向对象(static关键字、main、静态什么时候使用、静态代码块、对象的初始化过程)
- 面向对象基础续2(static关键字、理解main方法、代码块、构造方法私有化(单例模式)) .
- Java基础(面向对象二——static关键字、主函数定义和单例设计模式)
- java中main方法的初始化与static关键字
- java基础_面向对象_static关键字
- JAVA基础初探(三)面向对象思想、类与对象、成员变量与局部变量、构造方法、static关键字详解
- JAVA的static关键字和main方法