---------------------android培训、java培训、java学习型技术博客、期待与您交流! -------------------
今天复习了下之前老师讲的课,这里总结下老师讲到的知识。
1、this关键字
1.1、this关键字使用的范围
每个类的每个非静态方法(没有被static修饰)都会隐含一个this关键字,它指向调用这个方法的对象。
用一句话来说:就是哪个对象调用this所在函数,this就代表哪个对象
举个简单的例子,如下面这段代码:
public class Demo {
public static void main(String[] args){
Test t = new Test(); //创建对象
t.outPut(100,"联合利华"); //调用方法,并传两个参数
}
}
class Test {
int num;
String brand;
public void outPut(int num, String brand){
System.out.println("数量:" + num + ",品牌:" + brand); //这里的属性前面没有加this,代表的是定义在方法内的变量
//在调用函数的时候,传入了两个值,因此这句输出的分别是 100和联合利华
System.out.println("数量:" + this.num + ",品牌:" + this.brand); //这里加了this,代表的是对象的num和brand,因为没有赋值,所以输出的是 0和null
}
}
1.2、this语句可用于调用构造函数
如下面这段代码
public class Demo {
public static void main(String[] args){
Test t = new Test(); //创建对象,创建完之后会调用与之对应的构造函数
}
}
class Test {
int age;
String name;
public Test(){ //无参构造函数
this(22,"李四"); //有this,会调用与其参数类型一致的构造函数
}
public Test(int age , String name){ //带两个参数的构造函数
System.out.println("年龄:" + age + ",姓名:" + name); //输出的是传入的值,不是成员变量的值
}
}
上面这段代码中,this语句用来调用构造函数
注意:两个构造函数之前不能相互调用,如果相互调用的话,会形成死循环;
2、static关键字
static关键字用于修饰类、变量、方法。
用static修饰的变量称为静态变量,用static修饰的方法称为静态方法。
访问静态方法和变量不用创建对象,直接用 类名.属性名 或者 类名.方法名就可以访问。
如下代码所示:
public class Demo {
public static void main(String[] args){
System.out.println(Test.age); //类名.属性名调用
Test.speak(); //类名.方法名调用
}
}
class Test {
static int age = 22; //静态变量
static String name = "张三"; //静态变量
public static void speak(){ //静态方法
System.out.println("年龄:" + age + ",姓名:" + name);
}
}
这面这段代码中,属性和方法都是static(静态)的,不用创建对象就可以访问。
static特点:
a、随着类的加载而加载,随着类的消失而消失,生命周期最长;
b、优先于对象存在,静态先存在,对象后存在
c、被所有对象共享
d、可以直接被类名调用
优点:对对象的共享数据进行单独空间的存储,节省空间。
3、实例变量和类变量的区别:
a、存放位置:
类变量随着类的加载而存放于方法区中,实例变量随着对象建立存在于堆内存中
生命周期:
类变量生命周期最长,实例变量随着对象消失而消失。
---------------------android培训、java培训、java学习型技术博客、期待与您交流! -------------------