黑马程序员——Java基础---Java语言中的关键字

------- android培训java培训、期待与您交流! ----------

static:静态修饰符关键字

用法:是一个修饰符,用于修饰成员(成员变量,成员方法)当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。类名.静态成员。

static的特点
1.随着类的加载而加载,也就是说静态会随着类的消失而消失,说明它的生命周期最长
2.优先于对象存在明确一点,静态先存在,对象后存在
3.被所有对象所共享
4.可以直接被类名所调用


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

实例变量生命周期随着对象的消失而消失。


静态的使用:
什么时候定义静态变量呢?
当对象中出现共享数据时,该数据被静态所修饰。
与构造代码块的区别是什么呢?

主要是优化内存,构造代码块使每个对象都创建相同的成员变量、成员方法

什么时候定义静态方法呢?
当功能内部没有访问到非静态数据(对象的特有数据)那么该功能可以定义成静态的。

静态使用注意事项
1.静态方法只能访问静态成员,非静态方法即可以访问静态也可以访问非静态
2.静态方法中不可以定义this、super关键字,因为静态优先于对象存在,所以静态方法中不可以出现this

3.主函数是静态的,我们才能使用静态

<span style="font-size:14px;">class Person3
{
     String name;
     static String country ="CN";
     public void show()
     {
          System.out.println(name+"::"+country);
     }
     public static void greet()
     {
          System.out.println(“你好!”);
     }
}
class Person3Demo
{
     public static void main(String[] a)
     {
         Person3 p=new Person3();
        p.name="xiaoming";
        p.show();//对象调用非静态方法
        System.out.println(Person3.country);//类名直接调用静态成员变量
<span style="white-space: pre;">	</span>Person3.greet();//类名直接调用静态方法
     }
}</span>

this关键字:

代表它所在方法所属对象的引用。简单说:哪个对象在调用this所在方法,this就代表哪个对象

this的应用:

1、通过this调用本类中另一个构造方法,用法是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用,而且this语句要放在构造方法体中第一行。

2、方法参数或者方法中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错。

3、在函数中,需要引用该函所属类的当前对象时候,直接用this。

<span style="font-size:14px;">class Person
{
     private String name;
     private int age;
     Person(String name)//形式参数和实际参数同名方便阅读代码,知道要传输的参数意义
     {
          this.name=name;//假如参数为(String name1),则可以写为name=name1这就不需要this
     }
     Person(String name,int age)
     {
          this(name);//相当于调用Person(String name)构造函数,实现名字初始化增加代码复用
          this.age=age;
     }
}
class PersonDemo
{
     public static void main(String[] args)
     {
          Person p=new Person("liwei");
          Person p1=new Person("xiaoming",10);
     }
}</span>

super关键字:

Super语句主要用于子类对象访问父类中被屏蔽或者覆盖的成员变量、方法及构造函数。与this语句相似,区别在于,this访问的是本类中被屏蔽或者重载的的成员变量、方法及构造函数。

super的应用:

1、通过super调用父类中个构造方法,用法是super(参数列表),只能用于构造方法体中,且必须置于第一行,this(参数列表)也是放第一行,所以在同一个构造方法体中两者只能用其一。

2、子类中成员变量与成员方法与父类中成员变量、成员方法同名时,父类的成员变量、成员方法被覆盖,要访问父类的成员变量、成员方法就用用到了super语句,用法为super.成员变量、super.成员方法(参数)。当然没被覆盖可以直接调用,不需要super。

class Tel
{
	int number;
	Tel(int number)
	{
		this.number=number;
	}
    void show()
    {
        System.out.println("Tel:"+number);         
    }
}
class NewTel extends Tel
{	
	int number;//与父类成员变量同名,父类成员变量被覆盖
	String name;	
	NewTel(int number,String name)
	{		
		super(110);//调用父类构造函数,只有将父类进行初始化,子类才能继承父类的相关数据
		this.number=number;//子类对象初始化
		this.name=name;//子类对象初始化
	}
    void show()
    {
        super.show();//调用父类方法
		System.out.println(name+":"+number+",Tel:"+super.number);//输出子类name、number以及调用父类成员变量number
    }
}
class TelDemo
{
	public static void main(String[] args)
	{
		Tel t=new Tel(110);
		NewTel nt=new NewTel(120,"急救");
		t.show();
		nt.show();
	}
}













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值