摘要: ----------------------android培训、java培训、期待与您交流! ---------------------- 面相对象设计原则:谁拥有数据,谁就提供操作数据的方法。 实例分析:人在黑板上画圆。 可以抽象出三个对象,人、黑板、圆。那么谁提供画圆的方法?应该是圆,因为画圆需要圆心和半径,它们都是圆的属性,所以应该有圆来提供操作圆心和半径的方法,所以画圆的方法应该有圆这个对象来提供。 关于这道面试题,解题关键在于这张图,和交通灯的管理规则。当然上图的情况并不是唯一绝对的,比如S2N是在靠右的那条车道,S2E的灯总是绿灯的状态,如果S2N是靠左的那条车... 阅读全文
posted @ 2012-04-19 08:34 lcode 阅读(277) 评论(0) 推荐(1) 编辑
摘要: ----------------------android培训、java培训、期待与您交流! ---------------------- 代理模式有一个要点就是代理类的要与目标类有相同的接口。 jvm有动态创建类的api,但使用jvm动态创建类需要指定一个接口。可以使用CGLIB开源库可以无需指定接口二去动态创建类。 aop主要靠代理模加动态创建类实现,Poxy类用于动态创建新类,而这个新类是在目标类的代理类。简单使用代码: Class clazzProxy1 = Proxy.getProxyClass(Collecti... 阅读全文
posted @ 2012-04-19 08:28 lcode 阅读(329) 评论(0) 推荐(0) 编辑
摘要: ----------------------android培训、java培训、期待与您交流! ---------------------- java类被加载器加载,加载器也是一个java类,叫类加载器。java中有三个类加载器,成父子关系,而且如果我们要定义一个自己的类加载器必须指定一个父加载器。类加载器之间的父子关系和管辖范围图:知识点1:类加载器的委托机制当java虚拟机加载类时,到底用哪个类加载器?◇首先当前线程的类加载器去加载线程中的第一个类◇如果类A引用了类B,那么java虚拟机将使用加载类A的类加载器去加载类B◇还可以直接调用C... 阅读全文
posted @ 2012-04-18 16:20 lcode 阅读(402) 评论(0) 推荐(1) 编辑
摘要: ----------------------android培训、java培训、期待与您交流! ----------------------Jdk1.5的集合类在希望你在定义集合时,明确表示你要向集合中装哪种类型的数据,无法加入指定类型以外的数据。ArrayList<Integer> c=new ArrayList<<Integer>();c.add(“abc”);//编译报错 泛型是提供给java编译器使用的,让编译器挡住程序的非法输入,对于参数化的泛型,getClass返回值和原始类型完全一样。由于编译生成的字节码会去掉泛型的信息,只要跳过编译器,就可以往泛型集 阅读全文
posted @ 2012-04-18 13:35 lcode 阅读(240) 评论(0) 推荐(1) 编辑
摘要: ----------------------android培训、java培训、期待与您交流! ---------------------- 个人理解注解类似c/c++里的预编译,都是编译时候要做的一些动作(java新特性),但java里的注解跟预编译是有很大的不同的。注解相当于一种标记,加了注解相当于加了某种标记,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记去做相应的事情。标记可以加在类,方法,包,字段,方法参数及局部变量上。 //基本的三个注解 @... 阅读全文
posted @ 2012-04-17 18:13 lcode 阅读(1497) 评论(0) 推荐(0) 编辑
摘要: ----------------------android培训、java培训、期待与您交流! ---------------------- JavaBean 是一种具有特定规格的类,主要作用为传递数据,所以其规格是围绕类的属性,为每个属性提供get和set方法。需要注意的是通过内省来操作javaBean对象的。使用内省的时候是通过对象的属性名来设置和获得属性值,而属性名的命名规范是与get和set方法名相关联的,在方法名里get之后的字符串为属性名,而不管这个方法操作的属性成员在定义的时候是用的什么名称(标识符)如:getage()(retur... 阅读全文
posted @ 2012-04-17 10:33 lcode 阅读(310) 评论(0) 推荐(1) 编辑
摘要: ----------------------android培训、java培训、期待与您交流! ---------------------- hashcode是计算对象hash值的方法。实现hashcode的作用,在于如果你的对象要支持存在hash集合中那这个hashcode是需要的。原因是hash集合添加对象时先计算对象的hash值,然后根据hash值查找看有没有相同的对象有就不添加。如果类没有实现hashcode那添加时计算的hash值是与内存地址相关的,这样两个逻辑上相等的对象,hash值不等也被认为不相同,而被添加,这样hash集合里就存在两个... 阅读全文
posted @ 2012-04-16 17:44 lcode 阅读(119) 评论(0) 推荐(1) 编辑
摘要: ----------------------android培训、java培训、期待与您交流! ---------------------- 反射的基础是Class类,在面向对象的世界里任何事物都是一个对象,可以抽取相类似事物的共性,创建一个类。当然java里的class也是一类事物,描述它的是java里的Class类。 java里每条代码都会编译成一条字节码,所以每定义一个类当然这个类最终也是通过一串字节码表示。所以每个类都有一个class成员变量,这样Class类的使用是这样的一种方式, 如:Class cls1 = String.clas... 阅读全文
posted @ 2012-04-16 17:43 lcode 阅读(177) 评论(0) 推荐(1) 编辑
摘要: ----------------------android培训、java培训、期待与您交流! ---------------------- java里枚举的意义跟c/c++里一样,但java里枚举类型为类,值为对象,有一些公共方法和静态方法。 使用举例: //自定义构造函数 public enum WeekDay{ SUN,MON,TUE,WED,THI,FRI,SAT; private WeekDay(){}//要自己定义构造方法,必须使用... 阅读全文
posted @ 2012-04-16 17:41 lcode 阅读(512) 评论(0) 推荐(1) 编辑
摘要: ----------------------android培训、java培训、期待与您交流! ---------------------- 装箱:把基本数据类型装成java类(被托管?)。 拆箱:把java类拆成基本数据类型(取消托管?)。 java新版本增加了自动装箱拆箱的特性,使得java基本类和基本数据类型可以无需转换直接参与计算。如: Integer iObj = 3 //自动装箱。 system.out.println(iObj + 12);//自动拆箱。 在较早版本中不支持自动装箱拆箱,以上两句语句是错误的。知识点1: 在装箱时,将基本数... 阅读全文
posted @ 2012-04-16 17:33 lcode 阅读(187) 评论(0) 推荐(1) 编辑