2019-9-1 48 0
Java-编程

this关键字this代表,该对象,对自身的引用;this关键字的作用:(1)如果存在同名的成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定访问成员变量的数据;(2)在一个构造函数中可以调用另外一个构造函数初始化对象;this关键字要注意的事项:(1)存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量(Java采取的是“就近原则”的机制访问的);(2)如果在一个方法中访问了一个变量,该变量只存在成员变量的情况下,那么Java编译器会在该变量的前面添加this关键字;this关键字调用构造方法要注意的事项:(1)this关键字调用其他的构造方法时,this关键字必须要位于构造函数中的第一个语句;(2)this关键字在构造方法中不能出现相互调用的情况,因为是一个死循环;super关键字super关键字代表了父类空间的引用;super关键字的作用:(1)子父类存在着同名的成员(包括变量和方法)时,在子类中默认是访问子类的成员,可以通过super关键字指定访问父类的成员;用法:super.父类方法或变量(2)创建子类对象时,默认会先调用父类无参的构造方法,可以通过super关键字指定调用父类的构造方法。详情看代码第7行和9行。classA{//A(){}A(intage){}}classBextendsA{B(){/*如果这里没有显式的添加super(),那么编译器会自动添加一个隐式的super()来初始化父类,*///super();/*如果父类定义了有参构造方法,而没有定义无参的,那么需要用户自己在子类构造方法中定义带实参的super*/super(17);}}(3)super关键字调用父类的构造函数时,该语句必须要是子类构造函数中的第一个语句。(4)super与this关键字不能同时出现在同一个构造函数中调用其他的构造函数。因为两个语句都需要第一个语句。(里面还是可以写this.num=num,并不是说不能出现this)

2019-8-26 76 0
Java-编程

定义:JDK1.5中提供,如果在定义方法时在最后一个形参类型后增加3个点即(...);则表明该形参可以接受多个参数值,多个参数值会被当做数组传入。例:publicvoidprin(int...a){}使用方法:publicclassTest{publicstaticvoidmain(String[]args){Testt=newTest();t.prin();t.prin(1);t.prin(1,2,3);}publicvoidprin(int...a){//存在下标的,和数组一样。for(intb:a){System.out.println(b);}}}注意:长度可变参数只能被定义在方法形参中的最后一个,因为定义在第一个或者其他位置会导致后面的形参接收不到,本来他就可以接收很多个。形参个数可变的秘密形态编译器会在背地里把这最后一个形参转化为一个数组形参,并在编译出的class文件里作上一个记号,表明这是个实参个数可变的方法。publicvoidsumUp(int[]values){}由于存在着这样的转化,所以不能在本类中在定义一个,和此方法相同类型的,数组形参方法。publicvoidsumUp(int[]values){}//报错publicvoidsunUp(int...values){}//报错形参个数固定先优先:publicclassTest{publicstaticvoidmain(String[]args){Testt=newTest();t.testOverloading(1);//打印A}publicvoidtestOverloading(inti){System.out.println("A");}publicvoidtestOverloading(int...j){System.out.println("B");}}左右都不是,为难了编译器:publicclassTest{publicstaticvoidmain(String[]args){Testt=newTest();t.testOverloading(1,2,3);}publicvoidtestOverloading(int...i){//...}publicvoidtestOverloading(inti,int...j){//...}}编译器不知道到底调用哪个了,第一个方法可以全部接收,因为就是个长度可变形参,第二个方法也可以接受,因为这两个都可以进行匹配。所以报错。

2019-8-23 59 0
2019-8-15 40 0
2019-8-12 38 0
2019-8-11 86 0
2019-8-11 63 0