1、Java知识点总结系列第十章基础类篇知识点预览Object类equals方法toString方法getClass方法包装类的概念包装类的转换内部类Object类1. Object类的概念a) java.lang.Object是Java中所有类的直接或者间接父类class Aclass B extends Ab) 所有类的对象都可以声明成Object引用(多态)Object o1 = new A();Object o2 = new B();c) Object的子类继承了Object的方法getClass()方法equals()方法toString()方法d)所有方法子类均可覆盖getClass(
2、)方法1. getClass方法返回一个对象的实际类型,不是引用类型equals方法1. equals方法比较两个对象的内容是否相等public boolean equals(Object o);String s1 = new String(“suns”);String s2 = new String(“suns”);System.out.println(s1 = s2);/falseSystem.out.println(s1.equals(s2);/true2.equals方法的默认实现为对比对象的引用(地址)是否相等Student s1 = new Student(“suns”,30);S
3、tudent s2 = new Student(“suns”,30);System.out.println(s1.equals(s2);/false3. equals的覆盖javaview plaincopy1. packagechp10.ex03;2. 3. /*4. *5. *authorWentasy6. *FullName:TestObject3.java7. *Description:本程序演示了equals方法的覆盖8. *Author:Wentasy9. *CreateDate:2012-8-1410. */11. publicclassTestObject312. public
4、staticvoidmain(Stringargs)13. Students1=newStudent(suns,30);14. Students2=newStudent(suns,30);15. System.out.println(s1.equals(s2);16. 17. 18. 19. classStudent20. privateStringname;21. privateintage;22. publicStudent(Stringname,intage)23. this.name=name;24. this.age=age;25. 26. 27. publicbooleanequa
5、ls(Objecto)28. /判断传入对象是否是空29. if(o=null)returnfalse;30. /判断当前对象和参数是否是同一个对象31. if(this=o)returntrue;32. /判断当前对象和参数是否是同一类型的33. if(this.getClass()!=o.getClass()returnfalse;34. Students=(Student)o;35. if(this.name.equals(s.name)&this.age=s.age)36. returntrue;37. else38. returnfalse;39. 40. 41. toString(
6、)方法1.toString方法返回一个对象的字符串表示形式public String toString();TestStringStudent128f6ee(无意义,覆盖toString方法)128f6ee:连续存储空间的首地址javaview plaincopy1. packagechp10.ex04;2. 3. /*4. *5. *authorWentasy6. *FullName:TestToString.java7. *Description:本程序演示了toString方法的使用8. *Author:Wentasy9. *CreateDate:2012-8-1410. */11. c
7、lassStudent12. Stringname;13. intage;14. publicStudent(Stringname,intage)15. this.name=name;16. this.age=age;17. 18. publicStringtoString()19. returnname:+this.name+age:+this.age;20. 21. 22. publicclassTestToString23. publicstaticvoidmain(Stringargs)24. Students=newStudent(suns,30);25. System.out.pr
8、intln(s);26. 27. 包装类1.包装类的概念基本类型-转换成的类2.包装类的转换javaview plaincopy1. /a)int转换成Integer2. 3. inti=10;4. IntegerI=newInteger(i);5. /b)Integer转换成int6. 7. IntegerI=newInteger(10);8. inti=I.intValue();9. /c)String转换成Integer10. 11. Strings=12;12. IntegerI=newInteger(s);13. /d)Integer转换成String14. 15. IntegerI
9、=newInteger(23);16. Strings=I.toString();17. 18. /e)String转换成int19. 20. Strings=20;21. inti=Integer.parseInt(s);22. /f)int转换成String23. 24. inti=20;25. Strings1=String.valueOf(i);26. Strings2=+i;内部类1. 内部类的概念一个类定义在另一个类的里面public booleanequals(Object o);String s1 = newString(“suns”);String s2 = newStrin
10、g(“suns”);System.out.println(s1= s2);/falseSystem.out.println(s1.equals(s2);/true2. 内部类的分类成员内部类静态内部类局部内部类匿名内部类3. 成员内部类a) 成员内部类的语法javaview plaincopy1. packagechp10.ex08;2. 3. /*4. *5. *authorWentasy6. *FullName:TestInner.java7. *Description:本程序演示了成员内部类的创建8. *Author:Wentasy9. *CreateDate:2012-8-1410.
11、*/11. classMyOuterClass12. StringoutValue;13. classMyInnerClass14. StringinValue;15. publicvoidtestInner()16. System.out.println(thisistestInner();17. 18. 19. b) 如何获得成员内部类的对象javaview plaincopy1. packagechp10.ex09;2. 3. /*4. *5. *authorWentasy6. *FullName:TestInner.java7. *Description:本程序演示了局部内部类的创建和
12、在外部类访问8. *Author:Wentasy9. *CreateDate:2012-8-1410. */11. classMyOuterClass12. StringoutValue;13. classMyInnerClass14. StringinValue;15. publicvoidtestInner()16. System.out.println(thisistestInner();17. 18. 19. publicvoidtestOuter()20. MyInnerClassin=newMyInnerClass();21. in.testInner();22. 23. 24.
13、25. publicclassTestInner26. publicstaticvoidmain(Stringargs)27. MyOuterClassout=newMyOuterClass();28. out.testOuter();29. 30. c) 成员内部类的特点: 可以获得外部类的私有属性javaview plaincopy1. packagechp10.ex11;2. 3. /*4. *5. *authorWentasy6. *FullName:TestInner.java7. *Description:本程序演示了在其他类中访问内部类8. *Author:Wentasy9. *
14、CreateDate:2012-8-1410. */11. classMyOuterClass12. privateStringoutValue;13. classMyInnerClass14. StringinValue;15. /可以获得外部类的私有属性16. publicvoidtestInner()17. System.out.println(thisistestInner()+outValue);18. 19. 20. publicvoidtestOuter()21. MyInnerClassin=newMyInnerClass();22. in.testInner();23. 24
15、. 25. 26. publicclassTestInner27. publicstaticvoidmain(Stringargs)28. 29. /首先创建外部类对象30. MyOuterClassout=newMyOuterClass();31. /然后通过外部类创建内部类32. MyOuterClass.MyInnerClassin=out.newMyInnerClass();33. in.testInner();34. 35. 36. d) 成员内部类的封装:内部类加上privatejavaview plaincopy1. packagechp10.ex12;2. 3. /*4. *5
16、. *authorWentasy6. *FullName:TestInner.java7. *Description:本程序演示了局部内部类的封装加上private8. *Author:Wentasy9. *CreateDate:2012-8-1410. */11. classMyOuterClass12. privateStringoutValue;13. privateclassMyInnerClass14. StringinValue;15. publicvoidtestInner()16. System.out.println(thisistestInner()+outValue);1
17、7. 18. 19. publicvoidtestOuter()20. MyInnerClassin=newMyInnerClass();21. in.testInner();22. 23. 24. 25. publicclassTestInner26. publicstaticvoidmain(Stringargs)27. MyOuterClassout=newMyOuterClass();28. /ThetypeMyOuterClass.MyInnerClassisnotvisible29. /MyOuterClass.MyInnerClassin=out.newMyInnerClass(
18、);30. /in.testInner();31. 32. 4. 静态内部类a) 静态内部类的语法:在声明内部类时加上staticb) 如何创建静态内部类对象javaview plaincopy1. packagechp10.ex13;2. 3. /*4. *5. *FullName:TestInner1.java6. *Description:本程序演示了静态内部类的创建和在外部类使用7. *Author:Wentasy8. *CreateDate:2012-8-149. */10. classMyOuterClass11. StringoutValue;12. staticclassMyS
19、taticInnerClass13. StringinValue;14. publicvoidtestInner()15. System.out.println(thisistestInner();16. 17. 18. publicvoidtestOuter()19. MyStaticInnerClassm=newMyStaticInnerClass();20. m.testInner();21. 22. 23. 24. publicclassTestInner125. publicstaticvoidmain(Stringargs)26. MyOuterClassm=newMyOuterC
20、lass();27. m.testOuter();28. 29. 30. 31. packagechp10.ex13;32. 33. /*34. *35. *Author:Wentasy36. *FullName:TestInner2.java37. *Description:本程序演示了静态内部类的创建和在其他类中访问38. *CreateDate:2012-8-1439. */40. classMyOuterClass141. StringoutValue;42. staticclassMyStaticInnerClass43. StringinValue;44. publicvoidte
21、stInner()45. System.out.println(thisistestInner();46. 47. 48. publicvoidtestOuter()49. MyStaticInnerClassm=newMyStaticInnerClass();50. m.testInner();51. 52. 53. 54. publicclassTestInner255. publicstaticvoidmain(Stringargs)56. 57. /创建静态局部类58. MyOuterClass1.MyStaticInnerClassin=59. newMyOuterClass1.My
22、StaticInnerClass();60. in.testInner();61. 62. 5.成员内部类和静态内部类的区别a) 在其他类创建内部类对象时,创建的语法不同b)在静态内部类中只能访问外部类的静态成员,可以定义静态方法c)在成员内部类中能访问所有静态成员、非静态成员,但不可以定义静态方法javaview plaincopy1. packagechp10.ex14;2. 3. /*4. *5. *Author:Wentasy6. *FullName:TestInner1.java7. *Description:成员内部类和静态内部类的区别:在静态内部类中只能访问外部类的静态成员,可以定义静态方法8. *CreateDate:2012-8-149. */10. classMyOuterClass11. privateintvalue;12. privatestaticintsvalue;13. publicvoidtestOuter()14. publicstaticvoidtestStaticOuter()15. 16. staticclassMyStaticInnerClass17. publicvoidtestInner()18. /System.out.println(value);/错误19.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1