A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© songwenhao 中级黑马   /  2016-4-25 23:22  /  698 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.万物皆是对象:将对象当成特殊的变量,将待解决的问题抽象成对象。2.程序可以理解为一组相互之间传递信息的对象:发送请求相当于发送信息调用方法3.每个对象都利用别的对象来组装自己的记忆:可以将已有的对象打包来创建新的对象,将复杂的程序隐藏4.对象都是有类型的:每一个类的实例化,类就是类型的意思5.所有属于同一类型的对象都能接受相同的信息:交给父类执行的,也能给子类的。6.对象具有状态,行为和标识;7.类描述的是一组具有相同特征(数据类型)和行为(功能)的对象8.将对象视为服务的提供者,9.访问权限控制,public:全部能访问,protected:包内创建者和继承类,default:只能在包内,private:创建者10.可以用已有的类多个去组成一个新的类(聚合关系),类图是由组成的类指向新的类实线,实心菱形11.类的继承(基类baseclass,父类parentclass,超类super)(子类,派生类)不能有多个父类,但可以实现多个接口12.接口与抽象类的区别1.继承类接口实现接口的全部方法,而抽象类则不同2.不能同时继承多个抽象类,当可以实现多个接口3.类中如果有一个抽象方法,则该类必须声明为抽象类4.抽象类可以实现接口,接口可以继承接口13.把派生类当做基类来用称为上传(upcast),从类图来看的,基类能用的信息,派生类也可以,这样子做更安全14.多态性可以这样来理解,在代码运行时才知道具体要运行哪部分代码。java里数据是动态绑定的,这是缺省行为。15.当不想生成一个基类对象,需要把对象上传给基类,这就需要将基类声明成abstract,如果派生类没有完全实现基类的抽象方法也需要声明成abstract,要么全部实现。16.interface比abstract更抽象,完全不允许实现方法,一个类不允许继承多个常规或者抽象类,但是可以实现多个接口。17.一般对象的存在和消亡存在两种方法控制:一种是知道他的存在消亡的具体,然后直接设置,另外一种是通过一个被称为堆的内存池(具体的存储依靠设置),处理复杂的问题,不知道具体的时间时动态生成类。18.java有垃圾回收器的特性,能够自动发现一些没用的对象,并且清除他,回收内存。19.容器类,不用管容器类里存了多少东西,只要创建这样的一个类,并往里面添加对象。java提供了List(线性序列)Map(关联数组,将一个对象与另一个对象关联起来)Set(没有相同的两个对象)20.取出容器内的一组数据需要用到迭代器(interator),使用多种容器的原因是不同容器在相同的操作下如访问和修改的效率会不一样,在解决具体问题时选取合适的。以ArrayList与LinkList来比较前者随机访问方便,后者修改方便21.区别与C++的,java中所有的类都可以说继承自Object类,这种称为单根继承。可以保证所有的对象具有相同的某种功能22.当使用容器时,会将对象的reference上传到根Object中,当调用时此时使用的是根的。由继承图向下找一个更具体的对象(downcast)下传大部分情况下不安全。使用参数化容器能够解决这问题23.异常处理,异常必须在某处被处理而不能忽略,处理的结构是希望程序不需要退出修改而恢复正常。24.java支持并发,多线程工作。当有时候资源共享时但一个时间只允许一个的话,则需要提供资源锁synchronized25.java提供了一个persistance来序列化对象,使得其能永久的存在,另外还可以通过javadateobject来实现。26.==与equals()的区别:1.==用来比较基本数据类型,charbyteshortintlongfloatdouble比较他们的值。2.复合数据类型(类的比较)==比较的是地址,除非是同一个对象new出来的,而equals在没有被重写的话也是比较地址,而String,Integer,Date这些中重写了则比较他们的值。//"abc".intern()返回"abc"27.java中不能以数字来判定真假,while和do-while的区别是后者的语句至少会执行一次28.构造器名称要与类名相同,初始化过程要记住先父类再子类,先static再普通,先成员变量在构造方法。可以提供多个构造器(构造器的重载,和访问控制),当存在有参数的构造函数时需要自己写无参构造器(不会帮你保留无参的构造函数)。29.java中不同类型的数据转换要注意,String不能直接转换成布尔值,需要调用Boolean.getBoolean()还有Boolean.paraseBoolean()。判断一个字符串是否为空(str==null||str.equals("")),第一个条件成立说明还未给字符串赋值。还可以调用str.length()==0和str.intern()=="".intern等同于第二个条件30.方法的重载:形参(参数的个数,种类,顺序),返回值31.this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用,使用this来代表当前的数据成员避免与参数相同时出现混乱。静态方法中不能有this,只能有静态的方法(可以调用全局的静态方法)。32.垃圾回收:先调用finalize(),然后在下一次垃圾回收时清理内存(只回收new出来的对象):1.对象可能不被垃圾回收;2.垃圾回收不等于销毁对象;3.垃圾回收只与内存有关;33.初始化的方法:指定值初始化;调用构造器(无法阻止自动初始化的进行);调用函数;静态数据如果没有初始化,基本数据类型返回基本类型的标准初值,引用类型返回null。34.访问控制public(不同包,同包,继承,自己使用),protected(继承的类和自己可以范访问,同包可以访问),default(包访问控制,同包成员访问,子类不能访问),private(只能自己用)。35.除此之外将package(包名按照创建者的Intnetnet域名反顺序的这样可以解决包名冲突问题)作为区分内聚类与单独的类,包的命名全部小写。要想访问其他的包的类有两种做法:在除注释外第一句import要访问的包;第二种方法是完整的路径36.外部的类只能是public或者是default。不可以是private和protected。37.复用类的两种方法,组合:在新的类中产生现有类的对象,这样新的类由现有类的对象组成;继承:从父类继承,然后往新的类里添加内容;38.引用对象的初始化:1.在定义的地方,还没调用构造器;2.在构造器中;3.在使用引用对象之前;4.使用实例初始化39.基类的初始化:通过基类构造器初始化,总是会被调用,在导出类构造调用前初始化;如果基类定义了带参数的构造器,则继承类必须使用super显示的调用构造器,且如果在继承类中不初始化会报错;40.代理模式,通过代理,将成员对象置于所要构造的类中(组合),但我们在新的类中暴露了所有的方法(继承);41.基类中的某个方法在基类里被重载多次,而导出类不会屏蔽任何一个版本,导出类也可以重载,不会影响基类中的方法(重载:得到的是一个新的方法);当复写某个方法时可以使用@Override来注解,这样如果是重载而不是复写时会报错(复写:与原方法一样的参数与返回类型,子类中权限修饰符要不少于父类,改变已有的方法;42.静态方法调用非静态方法,需要先把非静态方法所在的类实例化,在调用;43.is-a关系表示继承,has-a关系用来表示组合,使用的时候按照具体的问题去解决;44.向上转型:父类在子类中调用父类方法;(应该尽量考虑继承和向上转型是否真的需要);45.final关键字(不变,不允许修改):数据,一个永恒不变的变量和在数据初始化时不希望被改变;空白的final,提供灵活运用final的方法,没有在一开始就指定域;final参数,表示无法在方法中更改参数引用的对象;46.final的类无法被继承,private隐式的调用了final47.多态分离做什么和怎么做,将接口和实现分离;一个方法接受了一个基类的引用作为参数,那么他同时接受任何一个基类的导出类作为参数(这就是多态的思想,同时能避免与导出类打交道时需要多次重载);48.Java中除了final和static方法外其他方法都是动态绑定的;在子类中对于父类的private方法最好采取不同名字,父类的私有方法无法被覆盖;基类的域和子类的域最好不同名,不然容易引起混淆,且域的定义最好是private的;49.构造器是隐式的static方法:构造器的调用顺序1.调用基类构造器,从最根部开始2.按照声明顺序调用成员的构造器3.调用自身的构造器主体;如果基类中有清理方法,子类必须覆写该方法,后再调用基类的方法,且对象被清理顺序应该与初始化相反,字段应该按照申明顺序相反;50.协变返回类型:它表示导出类中被覆盖的方法可以返回基类方法的返回类型的某种导出类型;

2 个回复

倒序浏览
收藏一下
回复 使用道具 举报
比较全方面的总结,赞!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马