欢迎来到天天文库
浏览记录
ID:1712382
大小:48.37 KB
页数:41页
时间:2017-11-13
《java重难点问题剖析--实例讲解好理解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、·JAVA重难点问题剖析(一) 这次主要剖析以下四个问题:构造函数定义问题、类实例化时的歧义、equals和==、protected成员的访问问题一、(1)构造函数前不加void,否则变为方法,只能加可访问性修饰。publicclassName{ voidName(){ System.out.println("Method"); } publicstaticvoidmain(String[]args){ Namen=newName(); }}无输出,去void则输入Method;(2)如
2、果需要在不同包的类中使用构造函数创建对象必须前面加上public;二、类实例化时的歧义问题(1)单类形导入(即importp1.TestC而非importp1.*)时用此类实类化;(2)完全标示名解决歧义问题p1.TestCb=newp1.TestC()packagep1; //定义第一个类publicclassTestC{ publicTestC(){System.out.println("p1");}}packagep2; //定义第二个类publicclassTestC{ TestC
3、(){System.out.println("p2");}}packagep2; //定义第三个类importp1.*; //(1)publicclassTestB{ publicstaticvoidmain(String[]args){ TestCc=newTestC();//(2) }} 输出p2,若要输出p1,可将(1)处改为importp1.TestC或者将(2)处改为p1.TestCb=newp1.TestC();三、数值、对象比较问题java.lang.object类中的equ
4、al()方法:publicbooleanequals(Objectobj){ return(this==obj); }java.lang.string类中覆盖object中的equals()方法: publicbooleanequals(ObjectanObject){ if(this==anObject){ returntrue; } if(anObjectinstanceofString){ StringanotherString=(String)anObject;
5、 intn=count; if(n==anotherString.count){ charv1[]=value; charv2[]=anotherString.value; inti=offset; intj=anotherString.offset; while(n--!=0){ if(v1[i++]!=v2[j++]) returnfalse; } returntrue; } } returnfalse; }例子:classTest{ Strings
6、; Test(Strings){ this.s=s; }}publicclassFyz{ publicstaticvoidmain(String[]args){ Strings1=newString("hello"); Strings2=newString("hello"); TestT1=newTest("JAVA"); TestT2=newTest("JAVA"); System.out.println(s1.equals(s2));//true:String、Boolean
7、等类的equals覆盖了object的,比较的不再是对象而是数值 System.out.println(T1.equals(T2));//false:没有覆盖object的,所以比较的仍然是对象 System.out.println(S1==s2); //false:==比较的是对象,无论是什么对象; System.out.println(T1==T2); //false:同上 T2=T1; //使引用变量T1
8、、T2都成为同一对象的别名 System.out.println(T1.equals(T2));//true:对象相同 System.out.println(T1==T2); //true:同上 }}四、若在不同包中子类使用对象引用来访问父类的protected成员,必须将对象实例化为子类对象,而不能实例为父类对象来访问,即子类只能以实现继承层次中的身份访问其超类的protected成员。相同包子类中使用对象引用的类型都可以。packagetest1;publicclassA{ pu
此文档下载收益归作者所有