---------------------- android培训、 java培训、期待与您交流! ----------------------
7、this关键字:
当成员变量和局部变量重名的时候,为了区分这种情况我们可以使用一个关键字来完成,就是this
它代表的是什么呢?This关键字代表的就是一个对象的引用。
代表哪个对象? 代表当前对象,它自己不是对象,只是一个引用。
只要是成员,必须被对象所调用。
总的一句话:定义功能时,如果功能中用到了本类对象,这时就使用this这个关键字表示这个对象。
实现代码:
Eg:
Class Person
{
Private String name;
Private int age;
Person()
{
Name=name;
}
Person(String name,int age)
{
This();//像这样的就是构造函数之间的调用,调用语句必须定义在第一行,这是规则。
This,name=name;//左右两边都是局部变量,并没有把name赋值给成员中的name和age,加this之后指的就是成员变量Name;
This.age=age;
}
Public void speak()
{
Int age=300;
Sop(this.name+this.age);
}
Public void method()
{
This.speak();
}
}
Class personDemo
{
Public static void main(Stirng[] args)
{
Person p1=new person('"lisi",30);
P1.speak();s
}
}
总结:构造函数之间的调用,构造函数中调用其他构造函数的this语句必须定义在构造函数的第一行,因为构造函数是用来初始化的。初始化的动作必须先执行。

8、static静态关键字
1、它是一个修饰符,只能修饰成员(成员变量和成员函数)
2、被static修饰的成员变量的数据,可以被所有的对象们共享。
3、被静态修饰的成员多了一种调用方式,就是除了被对象调用以外,还可以被类名直接调用,类名.静态成员。
4、静态之所可以被类名调用,那是因为静态成员是随着类的加载而加载进内存的。非静态的特点随着对象的加载而加载。
5、静态优先于对象加载进内存,所以不能访问对象的内容,但是对象可以访问它的内容。
6、被静态修饰的成员为共有数据,对象里面自身村存储的是特有数据。
Eg:饮水机是共有的,但是喝水的杯子是特有的。
怎么理解共性?只要在描述事物的时候发现这特点是大家都有的。
10、静态的使用注意事项:
1、静态成员函数只能访问类中的静态成员,不能访问非静态的。非静态方法可以访问静态方法。
2、静态方法中不可能定义this spuer关键字,因为This代表的是对象,但是静态加载的时候都没有对象存在。
3、主函数是静态的。
实现代码:
Eg:class MainDemo
{
int x=4;
public static void main(String[] args)//String[] args=new String[0];
//public : 因为主函数是被JVM调用、权限必须足够大。
//static :
//void :没有返回值。不用返回值给JVM;
//main:比较特殊,jVM只能识别它,
//(String[] args):参数列表,数组类型。arguments
{
sop(args);//[Ljava.lang.String;@c17614 输出的数组实体地址。
//new MainDemo().show();//创建一个对象即可。
}
public static void main()//是可以存在的,重载。
{
}
void show()
{
sop(x);
}
}
编译失败:
被修饰后的成员具备以下特点:
class Person
{
String name;
static String country='CN';//每个对象都有国籍,都相同我们可以单独拿出来。
static void show()
//如果被静态修饰。name是不能被访问的。
//函数被静态修饰只能访问被静态修饰的成员,非静态成员不能访问。
//为什么?
{
Sop(country+name);//country之前省略了Person类,Person.country
}
}
class StaticDemo
{
public static void main(String[] args)
{
Person p=new Person();
p.name="zhangsan";
p.show();
Person p=new Person();
p.name="lisi";
p.show();
System.out.println(Person.country);被类名直接调用。
Person.show();
//直接调用show方法,说明自始至终在堆内存中没有name这个成员。
//当show方法进行输出语句的时候访问conutry和name,但是name
//是没有的,访问不到。
}
}
---------------------- android培训、 java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima