JAVASE学习笔记三——this,static

java中修饰方法:abstract和final只能用一个去修饰方法,因为abstract表示抽象,是需要被继承实现的,说明是需要修改里面内容的,而final表示不能改变的,所以他不能和abstract一块修饰方法,否则就矛盾了。

static修饰的静态成员不能修饰非静态成员。

java中的引用实际上就是C中的指针,只是java不允许直接访问堆内存里面的对象,只能通过对象的引用来访问。如果堆内存中的对象没有任何引用指向它,那么程序也就无法访问到这个对象,那么这个对象就会变成垃圾,java的垃圾回收机制便会把它回收。

this引用:代表一个默认对象的引用。关于this的使用,用代码来说明:

package com;

public class Dog {
	
	public void Jump()
	{
		System.out.println("跑步");
	}
	public void run()
	{
		Dog dog = new Dog();
		dog.Jump();
                System.out.println("正在执行的run方法");
	}
	public static void main(String[] args)
	{
		Dog d = new Dog();
		d.run();
	}
}
其实在上面的代码中,不一定要定义一个Dog对象才能调用run方法,因为当程序调用年run方法时,一定会定义一个对象,直接使用这个对象就可以了。在run方法中得到调用该方法的对象,可以使用this关键字,只有当该方法被调用的时候,它所代表的对象才被确定下来,谁调用该方法,this就代表谁。而且上面的代码中总共定义了两个对象,一个对象的run方法要依靠另一个对象的jump方法,很不符合逻辑。

package com;

public class Text8 {
	
	public void Jump()
	{
		System.out.println("跑步");
	}
	public void run()
	{
//		Text8 ts = new Text8();
//		ts.Jump();
		this.Jump();
		System.out.println("正在执行的jump方法");
	}
	public static void main(String[] args)
	{
		Text8 t = new Text8();
		t.run();
	}
}
java中允许一个对象成员直接调用另一个对象成员,也就是说this关键字可以省略。

	public void run()
	{
		Jump();
		System.out.println("正在执行的jump方法");
	}
而对于static修饰的方法,里面不能包含有this引用,所以static修饰的方法不能访问非static修饰的成员或者,也就是静态成员不能直接访问非静态成员。非静态方法属于对象,只有创造出对象来才能调用它。

普通方法访问其他方、属性时,无需调用this引用。但是当方法中有局部变量和属性同名时,便要调用this引用。

static修饰的方法属于类,非静态方法属于对象。用static修饰的方法既可以用类来调用,也可以用对象来调用,其调用结果是一样的。

java中只有值传递,无论是传入引用还是值,都看作值传递,形参是引用的话代表的是地址



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章