Core Java第十章知识点总结——Object类 包装类 内部类
来源:互联网 发布:自制海报软件 编辑:程序博客网 时间:2024/06/04 18:30
知识点预览
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.包装类的概念
基本类型----->转换成的类
2.包装类的转换
//a)int转换成Integerint i = 10;Integer I = new Integer(i);//b)Integer转换成intInteger I = new Integer(10); int i = I.intValue();//c)String转换成IntegerString s = "12";Integer I = new Integer(s);//d)Integer转换成StringInteger I = new Integer(23);String s = I.toString();//e)String转换成intString s = "20";int i = Integer.parseInt(s);//f)int转换成Stringint 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类 包装类 内部类
- Core Java第十章知识点总结——Object类 包装类 内部类
- Object类、包装类、内部类详解
- Object类、包装类、内部类详解
- 面向对象高级——Object类、包装类以及匿名内部类
- 12-20java面向对象之Object类&包装类&匿名内部类
- 黑马程序员——Java包、内部类、Object类
- 黑马程序员—java基础学习--Object类,内部类
- java笔记第十章之Object和内部类
- Java内部类知识点总结
- JAVA之旅(九)——Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类
- 内部类和包装类
- Thinking in Java——第十章-内部类
- Java编程思想笔记——第十章 内部类
- 第十章 内部类 内部类和嵌套类
- Java面向对象 Object类 内部类
- Java基础---Object类、内部类
- JAVA编程思想学习总结:第十章接口内部类
- 我的Java开发学习之旅------>在Dos环境下Java内部类的编译和运行
- 1 考虑使用静态方法获得对象
- 读取Java文件到byte数组的三种方式
- AtCoder Regular Contest 077
- 两个随机长度的链表相加
- Core Java第十章知识点总结——Object类 包装类 内部类
- Andy's First Dictionary UVA
- UDT中select异常
- 用你的手机去控制家里的电灯(demo)
- CSDN-Markdown
- MOOC清华《程序设计基础》第4章:选择排序(函数写法)
- JS引用jQuery-UI
- 产品经理如何与内部同学有效沟通
- Python 不同级目录之间模块的调用