黑马程序员——JAVA的静态static知识点的总结

来源:互联网 发布:软件行业猎头机构 编辑:程序博客网 时间:2024/04/29 20:44
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
 ------- 静态:static。 
(一)用法:是一个修饰符,用于修饰成员(成员变量,成员函数). 当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外, 还可以直接被类名调用。类名.静态成员。
class Person
{
String name;//成员变量,实例变量。
static String country = "CN";//静态的成员变量,类变量。
public static void show()
{
System.out.println("name"+name+"::::"+country);
}
}

class  StaticDemo
{
public static void main(String[] args) 
{
Person p = new Person();
//p.name = "zhangsan";
//p.show();

//System.out.println(p.country);

//System.out.println(Person.country);

Person.show();
}
}
 当成员用了静态以后,就不需要创建对象,可以直接用类名调用,这样写有利于优化代码。 
(二)static特点: 1,随着类的加载而加载。 也就说:静态会随着类的消失而消失。说明它的生命周期最长。 2,优先于的对象存在 明确一点:静态是先存在。对象是后存在的。 3,被所有对象所共享 4,可以直接被类名所调用。

 (三)实例变量和类变量的区别: 1,存放位置。 类变量随着类的加载而存在于方法区中。 实例变量随着对象的建立而存在于堆内存中。 2,生命周期: 类变量生命周期最长,随着类的消失而消失。 实例变量生命周期随着对象的消失而消失。

 (四)静态使用注意事项: 1,静态方法只能访问静态成员。 非静态方法既可以访问静态也可以访问非静态。 
 2,静态方法中不可以定义this,super关键字。 因为静态优先于对象存在。所以静态方法中不可以出现this。 3,主函数是静态的。 

class Person
{
String name;//成员变量,实例变量。
static String country = "CN";//静态的成员变量,类变量。
public static void show()
{
System.out.println("name"+name+"::::"+country);
}
}
这样就不可以,因为name是对象中的成员,静态优先于对象,没有创建对象,就不能访问对象中的特有数据。

(五)什么时候使用静态? 要从两方面下手: 因为静态修饰的内容有成员变量和函数。 什么时候定义静态变量(类变量)呢? 当对象中出现共享数据时,该数据被静态所修饰。 对象中的特有数据要定义成非静态存在于堆内存中。 什么时候定义静态函数呢? 当功能内部没有访问到肺静态数据(对象的特有数据), 那么该功能可以定义成静态的。

 下面代码就是使用静态一个简单应用;
class Person
{
String name;
static String country = "cn";
public  static void show()
{
System.out.println(contry+"haha");
}
}
class  
{
public static void main(String[] args) 
{
Person p = new Person();
p.show();
//Person .show();
}
}
0 0
原创粉丝点击