①main函数:可以被jvm调用,作为程序入口
定义:public:代表该函数访问权限是最大的
static :代表着主函数随着类的加载就已经存在
void:主函数没有具体的返回值
main:不是关键字,是一个特殊的单词,被JVM识别
(String [] args)函数的参数,参数类型是一个字符串数组,
主函数是固定格式的,以便JVM识别
args 接收两种类型:数组,null
jvm在调用main时传入的是new String[0]
②什么时候使用静态static
静态修饰的内容有成员变量和函数
什么时候定义静态变量呢?
当对象的出现共享数据时,该数据被静态所修饰。对象中的持有数据 要定义成非静态存在于堆内存中
什么时候定义静态函数呢?
当功能内部没有访问到非静态数据(对象的持有数据),那么该功能可以定义为静态的
共用功能可独立封装
工具类里定义的多为静态方法(不包含操作特有数据)为了让此类工具类无法建立对象,可把构造函数私有化
默认构造方法权限与所属类一致
③帮助文档javadoc
步骤:
举例:
/**
this is a ...
@author 张三
@version v1.1
@param arr 接收一个int 类型的数组
@return 会返回一个该数组中最大值
*/
可以 javadoc -d c:\myhelp -author -version Array.java查看
④静态代码块
class{
static{
}
}
随着类的加载执行,只执行一次,优先于主方法,用于给类初始化
⑤对象初始化
Person P=new Person();
通过JVM加载class文件到内存
加载static块-----在堆内存开辟内存空间-----默认初始化-----构造初始化----构造方法
具体流程:
-----》
new用到person.class,先找到person.class文件并加载到内存中
执行该类static 块
在堆内存开辟空间,分配内存地址
在堆内存建立对象的特有属性,并默认初始化
对属性显示初始化
对对象进行构造代码块初始化
对构造函数初始化
将内存地址付给栈内存中的p变量。
-----》
⑥对象调用过程
Person P=new Person("zhangsan",20);
p.setName("lisi");