如果想要将一个属性设置为公共属性,就要用static修饰。static修饰的内容在公共的全局数据区。

所有的对象都指向全局数据区。

静态属性可以通过类名称直接调用:类名称.静态属性

静态方法可以通过类名称直接调用:类名称.静态方法()

静态方法只能调用静态属性或调用静态方法,不能调用非静态的方法或属性。

使用静态方法时需要注意:

静态的方法只能调用静态的方法或静态的属性;非静态的属性和方法可以调用静态的属性和静态的方法;静态属性和方法可以在没有实例化对象的时候调用,而类中普通方法和普通属性,肯定只有在对象实例化之后才能调用。

如果主方法中要想直接调用方法,那么方法就必须有static关键字。

public class StaticDemo05{

       public static void main(String args[]){

          fun() ;

       }

       public static void fun(){

              System.out.println("Hello World!!!") ;

       }

};

如果没有static那么方法就要通过对象来调用。

public static void main(String  args[])

public:表示最大权限

static:静态可以由类名称直接调用,表示可以由类名称直接调用

void:表示没有返回值

String  args[]:表示在java 命令中设置参数,java 类名   参数1  参数2   参数3

此形式输出的每个参数自动换行输出

若想在接收的参数连接在一起输出,则将参数使用双引号括起来,表示一个完整的参数。

程序的内存分为:

栈内存:对象名称,实际上时对象对堆得引用地址

堆内存:属性的内存空间

全局代码区:保存所有的操作方法

全局数据区:保存所有的static属性。

十一,程序分析,static相关应用,对象数组

1)对象数组

主方法中不能编写过多的代码

对象数组:就是包含了一组对象

动态声明对象数组:类名称  对象数组名称[]=new 类名称[长度]

声明后对象数组中的堆空间是空,然后使用循环对数组进行实例化。

静态初始化对象数组:类名称  对象数组名称[]={new  类名称(参数),new  类名称(参数)}

(2)构造方法私有化

构造方法有权限

使用private关键字可以声明构造方法,但是声明后外部就无法直接进行对象的实例化操作。

若想在外部依然进行构造方法,则私有的方法能在类中的另外一个方法中调用,然后在外部调用这个方法即可,若想调用私有方法则必须在类中创建一个对象。如果一个类只能有一个实例化对象的话,包含构造方法的方法必须是静态的,那么类中调用私有方法的对象也要是静态的。

class Single{

       private static Single instance = new Single() ;

       private Single(){     // 将构造方法私有化

       }

       public static Single getInstance(){

              return instance ;

       }

       public void print(){

              System.out.println("hello world!!!") ;

       }

};

public class SingleDemo{

       public static void main(String args[]){

              Single s = null ;             // 声明对象

              s = Single.getInstance() ;             // 实例化对象

              s.print() ;

       }

};

如上成为单例设计。

(3)static的相关应用

static修饰的方法在公共代码区或属性在公共数据区。

class Person{

       private String name ;

       private static int count ;

       public Person(){

              count++ ;

              this.name = "NONAME - " + count ;    // 通过"NONAME"自动命名

       }

       public Person(String name){

              this.name = name ;

       }

       public String getInfo(){

              return "姓名:" + this.name ;

       }

};

public class StaticDemo08{

       public static void main(String args[]){

              System.out.println(new Person().getInfo()) ;

              System.out.println(new Person("A").getInfo()) ;

              System.out.println(new Person("B").getInfo()) ;

              System.out.println(new Person().getInfo()) ;

       }

};

posted on 2011-01-21 19:41  魔战  阅读(727)  评论(0编辑  收藏  举报