java基础3--面向对象(上)(static关键字与main方法)

原创 2011年01月16日 20:55:00

 

*用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类型,参数之间用空格间隔。
 

 

 

   

 

 

 

 

 

面向对象基础续2(static关键字、理解main方法、代码块、构造方法私有化(单例模式)) .

static关键字如果现在希望一个属性被所有对象所共同拥有,则可以将其声明为static类型,声明static类型的属性或方法之后此属性或方法也成为类方法,可以由类型直接调用。使用static声明属性...

07-Java面向对象构造方法,static关键字,main方法,说明书,math随机数

构造方法构造方法的概述和作用 给对象的数据(属性)进行初始化 class Demo1_Constructor { //Constructor构造 public stati...

黑马程序员——Java基础----面向对象(static、main函数、帮助文档及运用)(3)

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------  面向对象(static、main函数) 一、static关键字 ...

Java笔记2 面向对象<2>static关键字、main函数、静态运用、单例设计模式

06天-01-面向对象(static关键字) l  static 关键字 用于修饰成员(成员变量和函数)。 l  被修饰后的成员变量具备如下特点: 1)       随着类的加载而加载。也就是...

【Java基础】----static关键字、代码块、Main方法、匿名对象详解

转载请标明出处: http://blog.csdn.net/lxy_cn/article/details/52785365; 本文出自:【李晓阳的博客】static关键字 static...
  • lxy_cn
  • lxy_cn
  • 2016年10月11日 14:55
  • 562

Java基础之面向对象(二)--static、静态代码块、Main函数、单例模式

[java] view plaincopy /*  静态:static。  用法:是一个修饰符,用于修饰成员(成员变量,成员函数).  当成员被静态修饰后,就多了一...

Java基础之面向对象(二)--static、静态代码块、Main函数、单例模式

/* 静态:static。 用法:是一个修饰符,用于修饰成员(成员变量,成员函数). 当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外, 还可以直接被类名调用。类名.静态成员。 sta...

面向对象基础-static关键字

  • 2012年09月06日 20:13
  • 617KB
  • 下载

Java面向对象(3)static关键字

static关键字April 16, 2016 11:52 PM By DeiMo特点1.static是一个修饰符,用于修饰成员 2.static修饰的成员被所有对象锁共享 3.static优先于...

Java基础 static关键字 javadoc 面向对象(2)

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ 静态:static 用法:是一个修饰符,用于修饰成员(成员变量,成员函数...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java基础3--面向对象(上)(static关键字与main方法)
举报原因:
原因补充:

(最多只允许输入30个字)