java语言一些要点_1

以下是自己学习java语言时,记录的要点


1.java类的域与局部变量不同点:如果没有在构造器中显示地给域赋予初值,那么域就会被自动赋予默认值,数值为0,布尔值为false,对象为null。而局部变量则不会。


2.编写一个类,如果没有写构造器(没有提供任何构造器),系统默认会提供一个无参构造器,构造器将所有实例域设为默认值。


3.关键字this(....)可以用来调用同一个类的其它构造器


4.java三种初始化数据域方法


5.调用构造器的具体处理步骤:

1)所有数据域被初始化为默认值(0,false,null) 
2)按照在类中出现的次序,依次执行所有域初始化语句和初始化块 
3)如果构造器第一行调用了第二个构造器,则执行第二个构造器主体 
4)执行这个构造器的主体 


6.一个类可以使用所属包中的所有类,以及其他包中的公有类。


7.如果没有指定publicprivate,这个部分(类,方法或变量)可以被同一个包的所有方法访问


8.方法可以访问所属类的私有域


9.子类不能直接访问超类的私有域及私有方法,可以通过super实现对超类方法调用。


10.子类构造器若使用super调用父类构造器,super调用的语句必须是子类构造器的第一条语句。


11.thissuper都可以用来调用构造器。


12.super视为调用父类方法的一个特殊关键字。


13.子类方法可以定义与父类方法签名相同(签名相同指方法参数列表相同,方法名字也相同)的方法,此时子类方法会覆盖超类的方法,返回类型可以不同,并允许子类覆盖方法的返回类型定义为原方法返回类型的子类型。

    并且,在覆盖父类方法时,如果父类方法时public,子类方法也一定是public(子类方法可见性不低于父类方法)


14。如果是private方法,static方法,final方法或者构造器,编译器可以准确地知道调用哪个方法,这种调用方法称为静态绑定


15.有final关键字定义的类,目的是阻止继承。一个类的特定方法也可声明为final,那么子类就不能override此方法,特别地,final类中的所有方法默认都是final方法(因为类都已经不允许继承),但不包括域(域被声明为final,构造对象之后就不允许改变他们的值了)。



final声明的类不涉及动态绑定


16.类的类型转换:只能在继承层次内进行类型转换,将超类转换成子类之前,应该使用instanceof进行检查。


17.abstract声明的方法不需要方法的实现,包含一个或多个抽象方法的类本身需要声明为抽象类(抽象类也可以不含任何抽象方法),在一个抽象类中可以包含具体数据和具体方法。

    抽象类不能被实例化,但可以定义一个抽象类的对象变量来指向非抽象子类的对象。

   子类继承抽象类,可以选择全部实现父类的抽象方法或者实现部分(但需要全部定义,此时子类也必须声明为抽象类)

18.




19.只要对象与字符串通过+连接,会自动调用对象的toString()


20.Integer对象的静态方法pareseInt()返回值为int,此方法与Integer类没有什么关系,只是将该方法放置在包装器中。


21.下面这段程序是否可以对x的值进行更改,请思考(设计java的传递机制,对象的装箱和拆箱)

public static void triple(Integer x){
		x = 3 * x;
}



22.获取Class类对象可以有三种方法:

  • 直接T.class,T是任意的Java类型,包括基本类型int等(int.class是一个Class类的对象)。所以说一个Class对象表示的类型未必是一种类。
  • E.getClass(),E是java对象
  • Class c1 = Class.forName("java.util.Date")
23.可以用newInstance方法,创建一个类的实例,E.getClass().newInstance()创建了一个与E有相同类型的实例,这里newInstance()调用默认的构造器,若没有默认构造器,抛一个异常。(若希望调用有参数的构造器,使用Constructor类的newInstance方法)
例:

String s = "java.util.Date";
Object m = Class.forName(s).getInstance;//创建了一个Date对象


24.Class类中的getFields(), getMethods(), getConstructor(),返回类提供的public域,方法和构造器数组,其中包括超类的共有成员

     而getDeclaredFields()等方法将返回类中声明的全部域,方法和构造器数组,其中包括private,protected,但不包括超类成员


25.关于接口

  •  可以声明一个接口变量,但此变量必须引用实现了接口的类对象。
  •  接口也可以被继承。
  •  接口中不能包含实例域或静态方法,但可以包含常量
  •  尽管每个类智能拥有一个超类,但可以实现多个接口。(用逗号,将实现的各个接口分隔开)

26.cloneable接口是java提供的几个标记接口之一,使用标记接口的唯一目的是可以用instanceof进行类型检查

27.仔细思考为什么Ojbect类的clone方法设置为protected?(特例:所有数组类型包含一个publicclone方法)

28.内部类是一种编译器现象,与虚拟机无关,编译器会把内部类翻译成$,分隔外部类名和内部类名的常规文件,而虚拟机则对此一无所知。

29.  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值