------- android培训、java培训、期待与您交流! ----------
1、static静态关键字:
(1)、是一个修饰符,用于修饰成员(成员变量,成员函数)
(2)、静态修饰的内容被对象所共享,可以节省内存。
(3)、当成员被static修饰后就多了一个调用的方式,不但可以被对象调用 还可以被类所调用。
格式:类名.成员变量
(4)、static是提取出对象共有的内容 ,对象特有的内容随对象而存储
2、内存中的方法区:
在方法区中存放着方法 有静态的也有非静态的。其中静态的方法区是共享数据的。
3、static的特点:
(1)、随着类的加载而加载,类一加载其中的static方法就在方法区中开辟好了空间,
最后随着类的消失而消失。
(2)、被所有对象共有。
(3)、优先于对象存在。
(4)、可以直接被类名调用。
被static修饰后的成员生命周期是最长的,
在对象中的数据存在共享数据和特有数据。
static成员是先存在的,对象是后存在的 ,所有不能用对象去调用static修饰过的成员,
因为在static存在时,对象还没有生成。
4、实例变量和类变量的区别:
(1)、存放的位置不同:
类变量随着类的加载而加载,并存在方法区中。
实例变量时随着对象的建立而存储在堆内存中的。
(2)、生命周期:
类的生命周期最长,因为是随着类的加载而加载 随着类的消失而消失。
实例变量时随着对象的创建而建立 随着对象的消失而消失的。
5、静态使用注意事项:
(1)、静态方法只能访问静态的成员不能访问非静态成员(包括变量和方法)
而非静态成员既可以访问非静态也可以访问静态的。
(2)、静态方法中不可以出现this关键字 因为静态方法是优先于对象存在的 所以要使用super的
关键字。
6、使用静态的利与弊:
利:对对象可以共享数据 进行单独空间的存储,没有必要每个对象都要存储一份的共有数据。
一遍节省内存空间,并且可以用类名直接调用。
弊:生命周期过长,而且访问的时候出现限制 只能是静态访问静态不可以用非静态进行范访问。
7、主函数式静态的:
主函数式一个特殊的函数,作为程序的入口,可以被jvm所调用。
public staitc void main(String args[])各部分代码的意义:
public:是表示该函数的访问权限最大是public类型的。
static:是说明该函数式静态的。随着类的加载就已经存在了。
void:是说明这个函数的返回值。
main:不是关键字,但是一个特殊的单词。可以被jvm所识别。
(String args[]):函数的参数列表,说明参数的类型为一个数组类型的,该数组中的元素是字符
串,字符串类型的数组。
主函数式固定的格式 是为了让jvm所识别。
主函数也可以被重载:
代码如下:
class main
{
public static void main(String args[]) //主函数。
{}
public void main() // 主函数被重载
{}
}
8、args是参数:
是arguments的缩写,java在调用主函数的时候是传递的是 new String[0]。
9、什么时候使用static:
因为静态修饰的是成员 包括变量和函数
(1)、使用静态变量(类变量):
在对象中出现了共享数据的时候就用static来定义存在于方法区中,而对象中特有
的变量就用非静态的来修饰,存在于堆内存中。
(2)、使用静态函数:
当功能的内部没有出现访问非静态的数据(对象的特有数据)的时候就使用static来说
修饰。
10、静态的应用:
没一个应用程序中都有共性的功能,可以吧这些共性的功能抽取出来,独立封装,以便复用。
在定义方法的时候可以定义成静态的,因为静态的方法不用建立对象,而直接用类名调用就可
以使用。
11、javadoc的制作:
使用命令行方式进行 javadoc -d @author @version 名字
12、默认的构造函数的权限是随着类的变化而变化的。
13、静态代码块:
随着类的加载而加载,而且只执行一次,并优先于主函数用于给类进行初始化。
示例代码:static code();//不执行因为没有创建它所对应的对象。
static code(int x)//执行构造函属给对应的对象进行初始化的。
static(){}//静态代码块是给类进行初始化的。
{}//是构造代码块是给对象进行初始化的
14、程序的执行步骤:
Person p = new Person();
先加载内存,然后执行静态代码块(如果有的话)然后再开辟空间,然
后是默认初始化,在后是现实初始化,构造代码块初始化,构造函数初始化。