《Java知识点总结系列》第十章基础类篇.docx
《《Java知识点总结系列》第十章基础类篇.docx》由会员分享,可在线阅读,更多相关《《Java知识点总结系列》第十章基础类篇.docx(19页珍藏版)》请在冰豆网上搜索。
![《Java知识点总结系列》第十章基础类篇.docx](https://file1.bdocx.com/fileroot1/2022-11/25/dfbb5754-de4a-49a3-b175-a05134a76a5d/dfbb5754-de4a-49a3-b175-a05134a76a5d1.gif)
《Java知识点总结系列》第十章基础类篇
知识点预览
Object类
equals方法
toString方法
getClass方法
包装类的概念
包装类的转换
内部类
Object类
1.Object类的概念
a) java.lang.Object是Java中所有类的直接或者间接父类
classA{
}
classBextendsA{
}
b) 所有类的对象都可以声明成Object引用(多态)
Objecto1=newA();
Objecto2=newB();
c) Object的子类继承了Object的方法
getClass()方法
equals()方法
toString()方法
d) 所有方法子类均可覆盖
getClass()方法
1. getClass方法
返回一个对象的实际类型,不是引用类型
equals方法
1.equals方法
比较两个对象的内容是否相等
publicbooleanequals(Objecto);
Strings1=newString(“suns”);
Strings2=newString(“suns”);
System.out.println(s1==s2);//false
System.out.println(s1.equals(s2));//true
2.equals方法的默认实现为对比对象的引用(地址)是否相等
Students1=newStudent(“suns”,30);
Students2=newStudent(“suns”,30);
System.out.println(s1.equals(s2));//false
3.equals的覆盖
[java] viewplaincopy
1.package chp10.ex03;
2.
3./**
4. *
5. * @author Wentasy
6. * @FullName:
TestObject3.java
7. * @Description:
本程序演示了equals方法的覆盖
8. * @Author:
Wentasy
9. * @Create Date:
2012-8-14
10. */
11.public class TestObject3 {
12. public static void main(String args[]){
13. Student s1 = new Student("suns",30);
14. Student s2 = new Student("suns",30);
15. System.out.println(s1.equals(s2));
16. }
17.}
18.
19.class Student{
20. private String name;
21. private int age;
22. public Student(String name,int age){
23. this.name = name;
24. this.age = age;
25. }
26.
27. public boolean equals(Object o){
28. //判断传入对象是否是空
29. if(o==null)return false;
30. //判断当前对象和参数是否是同一个对象
31. if(this==o)return true;
32. //判断当前对象和参数是否是同一类型的
33. if(this.getClass()!
=o.getClass())return false;
34. Student s = (Student)o;
35. if(this.name.equals(s.name)&&this.age == s.age){
36. return true;
37. }else{
38. return false;
39. }
40. }
41.}
toString()方法
1. toString方法
返回一个对象的字符串表示形式
publicStringtoString();
TestString
Student@128f6ee(无意义,覆盖toString方法)
128f6ee:
连续存储空间的首地址
[java] viewplaincopy
1.package chp10.ex04;
2.
3./**
4. *
5. * @author Wentasy
6. * @FullName:
TestToString.java
7. * @Description:
本程序演示了toString方法的使用
8. * @Author:
Wentasy
9. * @Create Date:
2012-8-14
10. */
11.class Student{
12. String name;
13. int age;
14. public Student(String name,int age){
15. this.name = name;
16. this.age = age;
17. }
18. public String toString(){
19. return "name:
"+this.name+" age:
"+this.age;
20. }
21.}
22.public class TestToString {
23. public static void main(String args[]){
24. Student s = new Student("suns",30);
25. System.out.println(s);
26. }
27.}
包装类
1.包装类的概念
基本类型----->转换成的类
2.包装类的转换
[java] viewplaincopy
1.//a)int转换成Integer
2.
3.int i = 10;
4.Integer I = new Integer(i);
5.//b)Integer转换成int
6.
7.Integer I = new Integer(10);
8.int i = I.intValue();
9.//c)String转换成Integer
10.
11.String s = "12";
12.Integer I = new Integer(s);
13.//d)Integer转换成String
14.
15.Integer I = new Integer(23);
16.String s = I.toString();
17.
18.//e)String转换成int
19.
20.String s = "20";
21.int i = Integer.parseInt(s);
22.//f)int转换成String
23.
24.int i = 20;
25.String s1 = String.valueOf(i);
26.String s2 = ""+i;
内部类
1. 内部类的概念
一个类定义在另一个类的里面
publicbooleanequals(Objecto);
Strings1=newString(“suns”);
Strings2=newString(“suns”);
System.out.println(s1==s2);//false
System.out.println(s1.equals(s2));//true
2.内部类的分类
成员内部类
静态内部类
局部内部类
匿名内部类
3. 成员内部类
a)成员内部类的语法
[java] viewplaincopy
1.package chp10.ex08;
2.
3./**
4. *
5. * @author Wentasy
6. * @FullName:
TestInner.java
7. * @Description:
本程序演示了成员内部类的创建
8. * @Author:
Wentasy
9. * @Create Date:
2012-8-14
10. */
11.class MyOuterClass{
12. String outValue;
13. class MyInnerClass{
14. String inValue;
15. public void testInner(){
16. System.out.println("this is testInner() ");
17. }
18. }
19.}
b)如何获得成员内部类的对象
[java] viewplaincopy
1.package chp10.ex09;
2.
3./**
4. *
5. * @author Wentasy
6. * @FullName:
TestInner.java
7. * @Description:
本程序演示了局部内部类的创建和在外部类访问
8. * @Author:
Wentasy
9. * @Create Date:
2012-8-14
10. */
11.class MyOuterClass{
12. String outValue;
13. class MyInnerClass{
14. String inValue;
15. public void testInner(){
16. System.out.println("this is testInner() ");
17. }
18. }
19. public void testOuter(){
20. MyInnerClass in = new MyInnerClass();
21. in.testInner();
22. }
23.}
24.
25.public class TestInner{
26. public static void main(String args[]){
27. MyOuterClass out = new MyOuterClass();
28. out.testOuter();
29. }
30.}
c) 成员内部类的特点:
可以获得外部类的私有属性
[java] viewplaincopy
1.package chp10.ex11;
2.
3./**
4. *
5. * @author Wentasy
6. * @FullName:
TestInner.java
7. * @Description:
本程序演示了在其他类中访问内部类
8. * @Author:
Wentasy
9. * @Create Date:
2012-8-14
10. */
11.class MyOuterClass{
12. private String outValue;
13. class MyInnerClass{
14. String inValue;
15. //可以获得外部类的私有属性
16. public void testInner(){
17. System.out.println("this is testInner() "+outValue);
18. }
19. }
20. public void testOuter(){
21. MyInnerClass in = new MyInnerClass();
22. in.testInner();
23. }
24.}
25.
26.public class TestInner{
27. public static void main(String args[]){
28.
29. //首先创建外部类对象
30. MyOuterClass out = new MyOuterClass();
31. //然后通过外部类创建内部类
32. MyOuterClass.MyInnerClass in = out.new MyInnerClass();
33. in.testInner();
34.
35. }
36.}
d)成员内部类的封装:
内部类加上private
[java] viewplaincopy
1.package chp10.ex12;
2.
3./**
4. *
5. * @author Wentasy
6. * @FullName:
TestInner.java
7. * @Description:
本程序演示了局部内部类的封装 加上private
8. * @Author:
Wentasy
9. * @Create Date:
2012-8-14
10. */
11.class MyOuterClass{
12. private String outValue;
13. private class MyInnerClass{
14. String inValue;
15. public void testInner(){
16. System.out.println("this is testInner() "+outValue);
17. }
18. }
19. public void testOuter(){
20. MyInnerClass in = new MyInnerClass();
21. in.testInner();
22. }
23.}
24.
25.public class TestInner{
26. public static void main(String args[]){
27. MyOuterClass out = new MyOuterClass();
28. //The type MyOuterClass.MyInnerClass is not visible
29. //MyOuterClass.MyInnerClass in = out.new MyInnerClass();
30. //in.testInner();
31. }
32.}
4.静态内部类
a)静态内部类的语法:
在声明内部类时加上static
b) 如何创建静态内部类对象
[java] viewplaincopy
1.package chp10.ex13;
2.
3./**
4. *
5. * @FullName:
TestInner1.java
6. * @Description:
本程序演示了静态内部类的创建和在外部类使用
7. * @Author:
Wentasy
8. * @Create Date:
2012-8-14
9. */
10.class MyOuterClass{
11. String outValue;
12. static class MyStaticInnerClass{
13. String inValue;
14. public void testInner(){
15. System.out.println("this is testInner() ");
16. }
17. }
18. public void testOuter(){
19. MyStaticInnerClass m = new MyStaticInnerClass();
20. m.testInner();
21. }
22.}
23.
24.public class TestInner1{
25. public static void main(String args[]){
26. MyOuterClass m = new MyOuterClass();
27. m.testOuter();
28. }
29.}
30.
31.package chp10.ex13;
32.
33./**
34. *
35. * @Author:
Wentasy
36. * @FullName:
TestInner2.java
37. * @Description:
本程序演示了静态内部类的创建和在其他类中访问
38. * @Create Date:
2012-8-14
39. */
40.class MyOuterClass1{
41. String outValue;
42. static class MyStaticInnerClass{
43. String inValue;
44. public void testInner(){
45. System.out.println("this is testInner() ");
46. }
47. }
48. public void testOuter(){
49. MyStaticInnerClass m = new MyStaticInnerClass();
50. m.testInner();
51. }
52.}
53.
54.public class TestInner2{
55. public static void main(String args[]){
56.
57. //创建静态局部类
58. MyOuterClass1.MyStaticInnerClass in =
59. new MyOuterClass1.MyStaticInnerClass();
60. in.testInner();
61. }
62.}
5.成员内部类和静态内部类的区别
a) 在其他类创建内部类对象时,创建的语法不同
b)在静态内部类中只能访问外部类的静态成员,可以定义静态方法
c)在成员内部类中能访问所有静态成员、非静态成员,但不可以定义静态方法
[java] viewplaincopy
1.package chp10.ex14;
2.
3./**
4. *
5. * @Author:
Wentasy
6. * @FullName:
TestInner1.java
7. * @Description:
成员内部类和静态内部类的区别:
在静态内部类中只能访问外部类的静态成员,可以定义静态方法
8. * @Create Date:
2012-8-14
9. */
10.class MyOuterClass{
11. private int value;
12. private static int svalue;
13. public void testOuter(){ }
14. public static void testStaticOuter(){}
15.
16. static class MyStaticInnerClass{
17. public void testInner(){
18. //System.out.println(value); //错误
19.