Core Java第十章知识点总结——Object类 包装类 内部类
2012-08-15 09:21
741 查看
Core Java第十章知识点总结——Object类 包装类 内部类
知识点预览
Object类
equals方法
toString方法
getClass方法
包装类的概念
包装类的转换
内部类
Object类
1. Object类的概念
a) java.lang.Object是Java中所有类的直接或者间接父类
class A{
}
class B extends A{
}
b) 所有类的对象都可以声明成Object引用(多态)
Object o1 = new A();
Object o2 = new B();
c) Object的子类继承了Object的方法
getClass()方法
equals()方法
toString()方法
d) 所有方法子类均可覆盖
getClass()方法
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);//false
System.out.println(s1.equals(s2));//true
2.equals方法的默认实现为对比对象的引用(地址)是否相等
Student s1 = new Student(“suns”,30);
Student s2 = new Student(“suns”,30);
System.out.println(s1.equals(s2));//false
3. equals的覆盖
toString()方法
1. toString方法
返回一个对象的字符串表示形式
public String toString();
TestString
Student@128f6ee(无意义,覆盖toString方法)
128f6ee:连续存储空间的首地址
包装类
1.包装类的概念
基本类型----->转换成的类
![](http://my.csdn.net/uploads/201208/15/1344994389_8911.png)
2.包装类的转换
![](http://my.csdn.net/uploads/201208/15/1344994405_5076.png)
内部类
1. 内部类的概念
一个类定义在另一个类的里面
public booleanequals(Object o);
String s1 = newString(“suns”);
String s2 = newString(“suns”);
System.out.println(s1== s2);//false
System.out.println(s1.equals(s2));//true
2. 内部类的分类
成员内部类
静态内部类
局部内部类
匿名内部类
3. 成员内部类
a) 成员内部类的语法
b) 如何获得成员内部类的对象
c) 成员内部类的特点: 可以获得外部类的私有属性
d) 成员内部类的封装:内部类加上private
4. 静态内部类
a) 静态内部类的语法:在声明内部类时加上static
b) 如何创建静态内部类对象
5.成员内部类和静态内部类的区别
a) 在其他类创建内部类对象时,创建的语法不同
b)在静态内部类中只能访问外部类的静态成员,可以定义静态方法
c)在成员内部类中能访问所有静态成员、非静态成员,但不可以定义静态方法
6. 局部内部类
a)局部内部类的语法(某些地方类似于局部变量)
i. 必须定义在方法内部
ii. 作用范围:定义位置开始,到整个方法结束
b)局部内部类在访问局部变量时,局部变量必须声明成final
7. 匿名内部类
a) 匿名内部类是特殊的局部内部类
b) 当满足如下2个条件时,可以选择应用匿名内部类
i. 局部内部类可能就需要创建一个对象
ii. 局部内部类需要实现外部接口,或者继承某些父类
c) 方法内部使用
d) 提高安全性 封装思想的体现
知识点预览
Object类
equals方法
toString方法
getClass方法
包装类的概念
包装类的转换
内部类
Object类
1. Object类的概念
a) java.lang.Object是Java中所有类的直接或者间接父类
class A{
}
class B extends A{
}
b) 所有类的对象都可以声明成Object引用(多态)
Object o1 = new A();
Object o2 = new B();
c) Object的子类继承了Object的方法
getClass()方法
equals()方法
toString()方法
d) 所有方法子类均可覆盖
getClass()方法
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);//false
System.out.println(s1.equals(s2));//true
2.equals方法的默认实现为对比对象的引用(地址)是否相等
Student s1 = new Student(“suns”,30);
Student s2 = new Student(“suns”,30);
System.out.println(s1.equals(s2));//false
3. equals的覆盖
package chp10.ex03; /** * * @author Wentasy * @FullName:TestObject3.java * @Description: 本程序演示了equals方法的覆盖 * @Author: Wentasy * @Create Date: 2012-8-14 */ public class TestObject3 { public static void main(String args[]){ Student s1 = new Student("suns",30); Student s2 = new Student("suns",30); System.out.println(s1.equals(s2)); } } class Student{ private String name; private int age; public Student(String name,int age){ this.name = name; this.age = age; } public boolean equals(Object o){ //判断传入对象是否是空 if(o==null)return false; //判断当前对象和参数是否是同一个对象 if(this==o)return true; //判断当前对象和参数是否是同一类型的 if(this.getClass()!=o.getClass())return false; Student s = (Student)o; if(this.name.equals(s.name)&&this.age == s.age){ return true; }else{ return false; } } }
toString()方法
1. toString方法
返回一个对象的字符串表示形式
public String toString();
TestString
Student@128f6ee(无意义,覆盖toString方法)
128f6ee:连续存储空间的首地址
package chp10.ex04; /** * * @author Wentasy * @FullName:TestToString.java * @Description: 本程序演示了toString方法的使用 * @Author: Wentasy * @Create Date: 2012-8-14 */ class Student{ String name; int age; public Student(String name,int age){ this.name = name; this.age = age; } public String toString(){ return "name: "+this.name+" age: "+this.age; } } public class TestToString { public static void main(String args[]){ Student s = new Student("suns",30); System.out.println(s); } }
包装类
1.包装类的概念
基本类型----->转换成的类
![](http://my.csdn.net/uploads/201208/15/1344994389_8911.png)
2.包装类的转换
![](http://my.csdn.net/uploads/201208/15/1344994405_5076.png)
//a)int转换成Integer int i = 10; Integer I = new Integer(i); //b)Integer转换成int Integer I = new Integer(10); int i = I.intValue(); //c)String转换成Integer String s = "12"; Integer I = new Integer(s); //d)Integer转换成String Integer I = new Integer(23); String s = I.toString(); //e)String转换成int String s = "20"; int i = Integer.parseInt(s); //f)int转换成String int i = 20; String s1 = String.valueOf(i); String s2 = ""+i;
内部类
1. 内部类的概念
一个类定义在另一个类的里面
public booleanequals(Object o);
String s1 = newString(“suns”);
String s2 = newString(“suns”);
System.out.println(s1== s2);//false
System.out.println(s1.equals(s2));//true
2. 内部类的分类
成员内部类
静态内部类
局部内部类
匿名内部类
3. 成员内部类
a) 成员内部类的语法
package chp10.ex08; /** * * @author Wentasy * @FullName:TestInner.java * @Description: 本程序演示了成员内部类的创建 * @Author: Wentasy * @Create Date: 2012-8-14 */ class MyOuterClass{ String outValue; class MyInnerClass{ String inValue; public void testInner(){ System.out.println("this is testInner() "); } } }
b) 如何获得成员内部类的对象
package chp10.ex09; /** * * @author Wentasy * @FullName:TestInner.java * @Description: 本程序演示了局部内部类的创建和在外部类访问 * @Author: Wentasy * @Create Date: 2012-8-14 */ class MyOuterClass{ String outValue; class MyInnerClass{ String inValue; public void testInner(){ System.out.println("this is testInner() "); } } public void testOuter(){ MyInnerClass in = new MyInnerClass(); in.testInner(); } } public class TestInner{ public static void main(String args[]){ MyOuterClass out = new MyOuterClass(); out.testOuter(); } }
c) 成员内部类的特点: 可以获得外部类的私有属性
package chp10.ex11; /** * * @author Wentasy * @FullName:TestInner.java * @Description: 本程序演示了在其他类中访问内部类 * @Author: Wentasy * @Create Date: 2012-8-14 */ class MyOuterClass{ private String outValue; class MyInnerClass{ String inValue; //可以获得外部类的私有属性 public void testInner(){ System.out.println("this is testInner() "+outValue); } } public void testOuter(){ MyInnerClass in = new MyInnerClass(); in.testInner(); } } public class TestInner{ public static void main(String args[]){ //首先创建外部类对象 MyOuterClass out = new MyOuterClass(); //然后通过外部类创建内部类 MyOuterClass.MyInnerClass in = out.new MyInnerClass(); in.testInner(); } }
d) 成员内部类的封装:内部类加上private
package chp10.ex12; /** * * @author Wentasy * @FullName:TestInner.java * @Description: 本程序演示了局部内部类的封装 加上private * @Author: Wentasy * @Create Date: 2012-8-14 */ class MyOuterClass{ private String outValue; private class MyInnerClass{ String inValue; public void testInner(){ System.out.println("this is testInner() "+outValue); } } public void testOuter(){ MyInnerClass in = new MyInnerClass(); in.testInner(); } } public class TestInner{ public static void main(String args[]){ MyOuterClass out = new MyOuterClass(); //The type MyOuterClass.MyInnerClass is not visible //MyOuterClass.MyInnerClass in = out.new MyInnerClass(); //in.testInner(); } }
4. 静态内部类
a) 静态内部类的语法:在声明内部类时加上static
b) 如何创建静态内部类对象
package chp10.ex13; /** * * @FullName:TestInner1.java * @Description: 本程序演示了静态内部类的创建和在外部类使用 * @Author: Wentasy * @Create Date: 2012-8-14 */ class MyOuterClass{ String outValue; static class MyStaticInnerClass{ String inValue; public void testInner(){ System.out.println("this is testInner() "); } } public void testOuter(){ MyStaticInnerClass m = new MyStaticInnerClass(); m.testInner(); } } public class TestInner1{ public static void main(String args[]){ MyOuterClass m = new MyOuterClass(); m.testOuter(); } } package chp10.ex13; /** * * @Author: Wentasy * @FullName: TestInner2.java * @Description: 本程序演示了静态内部类的创建和在其他类中访问 * @Create Date: 2012-8-14 */ class MyOuterClass1{ String outValue; static class MyStaticInnerClass{ String inValue; public void testInner(){ System.out.println("this is testInner() "); } } public void testOuter(){ MyStaticInnerClass m = new MyStaticInnerClass(); m.testInner(); } } public class TestInner2{ public static void main(String args[]){ //创建静态局部类 MyOuterClass1.MyStaticInnerClass in = new MyOuterClass1.MyStaticInnerClass(); in.testInner(); } }
5.成员内部类和静态内部类的区别
a) 在其他类创建内部类对象时,创建的语法不同
b)在静态内部类中只能访问外部类的静态成员,可以定义静态方法
c)在成员内部类中能访问所有静态成员、非静态成员,但不可以定义静态方法
package chp10.ex14; /** * * @Author: Wentasy * @FullName: TestInner1.java * @Description: 成员内部类和静态内部类的区别:在静态内部类中只能访问外部类的静态成员,可以定义静态方法 * @Create Date: 2012-8-14 */ class MyOuterClass{ private int value; private static int svalue; public void testOuter(){ } public static void testStaticOuter(){} static class MyStaticInnerClass{ public void testInner(){ //System.out.println(value); //错误 System.out.println(svalue); //testOuter(); //错误 testStaticOuter(); } public static void testStaticInner(){} } } public class TestInner1 { public static void main(String args[]){ MyOuterClass.MyStaticInnerClass mi = new MyOuterClass.MyStaticInnerClass(); } }
package chp10.ex14; /** * * @Author: Wentasy * @FullName: TestInner.java * @Description: 成员内部类和静态内部类的区别:在成员内部类中能访问所有静态成员、非静态成员,但不可以定义静态方法 * @Create Date: 2012-8-14 */ class MyOuterClass1{ private int value; private static int svalue; public void testOuter(){ } public static void testStaticOuter(){ } class MyStaticInnerClass{ public void testInner(){ System.out.println(value); System.out.println(svalue); testOuter(); testStaticOuter(); } //public static void testStaticInner(){} } }
6. 局部内部类
a)局部内部类的语法(某些地方类似于局部变量)
i. 必须定义在方法内部
ii. 作用范围:定义位置开始,到整个方法结束
b)局部内部类在访问局部变量时,局部变量必须声明成final
package chp10.ex16; /** * * @Author: Wentasy * @FullName: TestInner.java * @Description: 本程序演示了局部内部类的创建和使用 * @Create Date: 2012-8-14 */ class MyOuterClass{ private int value1 = 1 ; private static int value2 = 2; public void testOuter(){ class MyInnerClass{ public void testInner(){ System.out.println("this is testInner()"+value1); System.out.println("this is testInner()"+value2); } } MyInnerClass m = new MyInnerClass(); m.testInner(); } } public class TestInner { public static void main(String args[]){ MyOuterClass out = new MyOuterClass(); out.testOuter(); } }
7. 匿名内部类
a) 匿名内部类是特殊的局部内部类
b) 当满足如下2个条件时,可以选择应用匿名内部类
i. 局部内部类可能就需要创建一个对象
ii. 局部内部类需要实现外部接口,或者继承某些父类
c) 方法内部使用
package chp10.ex17; /** * * @Author: Wentasy * @FullName: TestInner.java * @Description: 本程序演示了匿名内部类的创建和使用 * @Create Date: 2012-8-14 */ interface MyInterface{ void m1(); } class MyOuterClass{ public void testOuter(){ new MyInterface(){ public void m1(){ System.out.println("this is m1 implements "); } }.m1(); } } public class TestInner { public static void main(String args[]){ MyOuterClass out = new MyOuterClass(); out.testOuter(); } }
d) 提高安全性 封装思想的体现
相关文章推荐
- Core Java第十章知识点总结——Object类 包装类 内部类
- Java知识点整理:第十章:包装类、集合的复制、集合线程同步化(线程安全)、集合与数组的相互转换
- JAVA面向对象知识点总结(7)— 多态性、Object类
- Core Java第七章知识点总结——封装、继承、多态
- Core Java第十六章知识点总结——反射
- Core Java第四章知识点总结——函数
- Java知识点总结-07形参内部类
- Core Java第六章知识点总结——面向对象
- Core Java第十二章知识点总结——异常处理
- Core Java第十三章知识点总结——线程
- Core Java第十七章知识点总结——JDK新特性——完结篇
- Core Java 第一章知识点总结
- java中内部类的相关知识点总结
- Core Java第八章知识点总结——三个修饰符
- think in java第十章内部类 总结随笔
- CoreJava知识点总结
- Core Java第五章知识点总结——数组
- Core Java第九章知识点总结——接口
- Core Java第十四章知识点总结——文件与I/O流
- Java学习总结之第十章 内部类