Java关键字总结

Java关键字总结


一.大致总结

abstract表明类或者成员方法具有抽象属性
assert断言,用于程序调试
extends表明一个类型是另一个类型的子类型,Java里只允许单继承(抽象接口可以多继承),常见的类型有类和接口
final用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
finally用于处理异常情况,用来声明一个肯定会被执行到的语句块
instanceof用来测试一个对象是否是指定类型的实例对象
static表明具有静态属性
synchronized表明一段代码需要同步执行
transient表明不用序列化的成员域

二.详细介绍

关键字abstract

  • abstract可以修饰类和方法。
  • abstract类可以扩展(增加子类),但不能直接实例化。
  • abstract方法不在声明它的类中实现,但是必须在某个子类中重写。
  • 仅当abstract类的子类实现其超类的所有abstract方法时,才能实例化abstract类的子类。这种类也称为具体类。
  • 如果abstract的类的子类没有实现其超类的所有abstract方法,该类也是abstract类。
  • abstract关键字不能应用于static,final,private方法,因为这些方法不能被重写。
  • final类的方法都不是abstract,因为final类不能有子类。

  • 关键字public protected default private
    在这里插入图片描述

关键字static

  • 在类中,用static生命的成员变量为静态成员变量,它为该类的公用变量。在第一次使用时候被初始化,对于该类的所有对象来说,static成员变量独此一份
  • 用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所有在static方法中不可访问非static的成员。(静态方法只能访问静态成员,因为非静态方法的调用要先创建对象,在调用静态方法时可能对象还没有被初始化。
public class Cat {
	//静态变量,不属于某个对象,可以用来计数,即使没有对象,也可以通过类名访问,在静态区保存
   private static int sid;
   //非静态成员变量,new一个对象,就产生一块,在堆内存保存
   private String name;
   private int id;
   
   public Cat(String name) {
   	this.name = name;
   	this.id = sid++;
   }
   public void info() {
   	System.out.println("My name is "+name+" No is :"+id);
   }
   public static void main(String[] ars){
   	Cat.sid = 100;
   	Cat mimi = new Cat("mimi");
   	Cat nini = new Cat("nini");
   	mimi.info();
   	nini.info();
   	 
打印结果:
My name is mimi No.id=100 sid= 102
My name is pipi No.id=101 sid= 102
   }
}

过程图

  • 在这里插入图片描述

  • 执行完7Cat.sid时,静态变量sid值为100。内存分布状态如下:在这里插入图片描述

  • 第一步:执行第7句Cat mimi=new Cat(“mimi”);字符串常量“mimi”分布在data segment部分,内存分布如下
    在这里插入图片描述

  • 第二步:调到上面后就该到Cat的构造方法了,执行第4句this.name = name;这时根据传入构造方法的name形参,栈中就会为其开辟一块名为name的空间,实参“mimi”传了进来,这时候栈中name的引用指向了data segment中的字符串常量“mimi”,因为this.name = name,所以自身成员变量的this.name也指向了data segment中的字符串常量“mimi”。
    在这里插入图片描述

  • 第三步:执行id=sid++;mimi对象的成员变量i值为原来sid的值100,接下来sid++,将sid的值改为101,内存状态如下图:
    在这里插入图片描述

  • 第四步:构造方法执行完成后,为执行这个方法在栈中分配的形参变量的内存空间收回,name在栈中的空间消失(当然,为执行方法而在栈中分配的局部变量空间,方法执行完毕后都应该被收回了)
    在这里插入图片描述

  • 执行Cat pipi=new Cat(“pipi”); 方法跟执行上面那个构造方法原理是一样的
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值