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

 

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

 

 

   

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值