`
sky_eye
  • 浏览: 4445 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

黑马程序员_java面向对象2

阅读更多

                                黑马程序员_java面向对象2

 

                ---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

一、static   静态  关键字

使用范围,用于修饰成员变量和成员函数。当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。调用方法是:类名.静态成员。静态成员存于方法区中。

static特点:

1、随着类的加载而加载,就是说随着类产生而产生,随着类的消失而消失,生命周期长

2、优先于对象存在,静态是先存在的,对象是后存在的     

3、被所有类所共享,就是说,一般static所描述的成员一般为对象的共有的东西

4、可以直接被类名所调用

实例变量和类变量的区别:

1、存放位置

      类变量随着类的加载而存在于方法区中

      实例变量随着对象的建立而存在于堆内存中

2、生命周期

      类生命周期长,随着类的消失而消失

      实例变量生命周期随着对象的消失而消失

静态的使用注意事项:

1、静态方法只能访问静态成员

      非静态可以方法既可以访问静态页可以访问非静态

2、静态方法中,不可以定义this  ,super 关键字。因为静态优先于对象存在,所以静态方法中不可以出现this关键字。

什么时候使用静态:

1、当对象中出现而来的共享数据时,注意是数据,不是属性。此时该数据被静态所修饰。

      对象中的特有数据要定义成非静态存于堆内存中。

2、当功能内部没有访问到非静态数据,即对象的特有数据时,该功能定义为静态

class  Person
{
 String name;
 public void show().........功能内部没有访问到非静态数据,此时为name,那么就定义为静态:
 {                                                                                                                                       public void show()
  System.out.println("haha");
 }
}

二、主函数

主函数是一个特殊的函数,可以被jvm调用,作为程序的入口。主函数也是一个静态函数。

static:代表主函数随着类的加载就已经存在了。

main:不是关键字,但是一个特殊的单词,可以被jvm识别

注意:

 public static void main(String[] args)
 public static void main(int x )

以上两个函数都没有错,后者是主函数的重载。jvm要的主函数只有前者。

对于主函数的认识,可以参考函数建立的方法。

三、练习工具相关知识

1、如果一个类运行的时候,内部有其他类,会在指定目录 set  classpath定义下找,如果没有就会在当前目录下找相对应的类的class文件,没有的话就找java文件。

2、设置环境变量 set classpath = .;c:\class    注意加上点号,就是说先在当前目录找,然后在指定目录找。这样不容易丢失。

3、类中的功能不需要对外开放时,注意用private修饰

4、编辑帮助文档,即编写程序说明书

      1)描述这个工具类的功能,作者和版本

      2)凡是public修饰的功能,都用文档注释所描述

5、每个类中有一个默认的空参数的构造函数,她的权限随着类的变化而变化

6、想类不让外部建立对象,那么私有化它的构造函数 格式为:private  类名(){  }     。

四、静态代码块

格式:static

          {

                 静态代码块中的执行语句;

          }

 特点:随着类的加载而加载,只执行一次。用于给类进行初始化的。并优先于主函数执行。

  class  StaticDemo
{

   int  num=9;
 static..................................静态代码块是给类初始化的,类一加载,首先执行。
 {
  System.out.println("a");
 }
 {........................................构造代码块是给对象初始化的,一建对象就会运行
  System.out.println("b");...................可已访问num, System.out.println("b"+num)。
 }
 StaticDemo(int x)..............构造函数是给对应对象初始化的,建对象的时候运行
 {
  System.out.println("c");
 }
}   

执行顺序为:1、静态代码块-----2、构造代码块------3、构造函数

其中,静态代码块不能调用非静态成员,构造代码块可以访问非静态成员。

 

 

 

 

                  ---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics