黑马程序员_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培训、期待与您交流! ----------------------