java小总结
来源:互联网 发布:怎么卸载mac自带系统 编辑:程序博客网 时间:2024/05/01 07:28
有时候有一些弄得不怎么懂,或者懂得不那么深的问题,复习一下,温故而知新。
java泛型
泛型是Java SE 1.5的新特性,之前一直不怎么懂泛型,但是时不时看见别人用。知道他可以替代任何类,有点像object。但是为什么不直接用object呢?
因为object需要强转,而强转又容易抛出ClassCastException错误,而且不符合java编程规范。应该应用泛型。
一般的应用开发中泛型使用较少,多用在框架或者库的设计中。List<T>为典型。
参考:http://transcoder.baidu.com/from=844b/bd_page_type=1/ssid=0/uid=0/pu=sz%401320_1001%2Cta%40iphone_2_5.1_3_537%2Cusm%401/baiduid=8772F7BD2F6AD2881B4E0384ABAB30F6/w=0_10_java泛型/t=iphone/l=3/tc?ref=www_iphone&lid=16782427900203174478&order=3&fm=alop&tj=www_normal_3_0_10_title&vit=osres&m=8&srd=1&cltj=cloud_title&asres=1&title=Java泛型详解%2C通俗易懂只需5分钟_微学苑%28编程第一站%29&dict=30&sec=14612&di=3620d3cdc9b94b36&bdenc=1&tch=124.449.66.585.1.365&nsrc=IlPT2AEptyoA_yixCFOxXnANedT62v3IEQGG_zdV_y_bmFSiefqlHdFuJ7HNRn_TFICb9jTRsx9PaDD7Qq&eqid=e8e72942143708001000000457b8c36e&wd=&clk_info=%7B"srcid"%3A"www_normal"%2C"tplname"%3A"www_normal"%2C"t"%3A1471726472812%2C"xpath"%3A"div-a-h3-em"%7D&qq-pf-to=pcqq.c2c
java extends和implement有什么区别和联系?
B extends A 那么B是A的子类。
B implement A 那么B是不是A的子类? (答案是:是的,因为B也拥有了A的所有变量和方法) 一般用在监听事件。
1.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,
2.JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,也只能继承接口。
3.继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了 ,
java强转(强制转换)
1.子类转化成父类的时候,不需要强转。编译器直接允许。因为子类包含父类的所有变量和方法,(子类通过不断的重写父类,以达到更强大的功能)比如:List<Model> list = new ArrayList<Model>(); (ArrayList 为List的子类)
2.父类转子类需要强转。没有继承关系,不同类型都需要强转。
这个其实就简单了,是因为代码打少了,所以对这基础的知识不熟悉,所以如果你是新手,肯定要多打代码,多进行尝试。
当引用类型的真实身份是父类本身的类型时,强制类型转换就会产生错误。例如:
Father father = new Father();
Son son = (Son) father;
这个系统会抛出ClassCastException异常信息。
所以编译器在编译时只会检查类型之间是否存在继承关系,有则通过;而在运行时就会检查它的真实类型,是则通过,否则抛出
ClassCastException异常。
详细参考:http://blog.csdn.net/chenssy/article/details/14111307
java执行顺序
这个大家都知道,代码是按顺序执行的,但是这是括号内的情形,在括号外是怎么样的呢?比如:定义的成员变量、定义的静态变量、块、定义的静态语法块和普通方法 哪一个会先被编译器所编译?
/** * 子类藏獒 */public class Mastiff extends Dog {public Mastiff() {System.out.println("Mastiff");}{System.out.println("block");}static {System.out.println("static block");}public static void main(String[] args){Mastiff mastiff=new Mastiff();}}
/ **DOG父类 */ public class Dog { public Dog() { System.out.println("Dog"); } }
运行结果为:
static block
Dog
block
Mastiff
也就是说,在我们的程序中,实例化一个类对象的时候,运行顺序为:
- 静态块
- 父类构造器
- 本类中的块
- 本类的构造器
想一想,如果父类中也有块和静态语法块呢?
/** *DOG父类 */public class Dog {public Dog() {System.out.println("Dog");}static{System.out.println("super static block");}{System.out.println("super block");}}<span style="color:#ff6600;"></span>
/** * 子类藏獒 */ public class Mastiff extends Dog { public Mastiff() { System.out.println("Mastiff"); } { System.out.println("block"); } static { System.out.println("static block"); } public static void main(String[] args){ Mastiff mastiff=new Mastiff(); } }
运行的结果为:
super static blockstatic block
super block
Dog
block
Mastiff
也就是说此时的运行顺序为:
- 父类静态块
- 自身静态块
- 父类块
- 父类构造器
- 自身块
- 自身构造器
总结一下:静态语法块 ---> 语法块 --->构造器
那么,下面这段代码结果就为4
但是注意,如果没有初始化G g = new G(); 那么a = 3哦,这是因为编译器会记忆静态语法块的值。
java Object类
这个大家都知道,Object(对象)类是所有类的基类(父类)。那Object到底有哪些变量和方法呢?
没有变量,有一些方法,包括toString(
private static native void registerNatives();
public final native Class<?> getClass();
public native int hashCode();
public boolean equals(Object obj)
protected native Object clone() throws CloneNotSupportedException;
public String toString()
public final native void notify();
public final native void notifyAll();
public final native void wait(long timeout) throws InterruptedException;
public final void wait(long timeout, int nanos) throws InterruptedException
public final void wait() throws InterruptedException
protected void finalize() throws Throwable { }
发现这个问题,按照下面的问题看看源码就好了,
eclipse如何关联java源码
- java的小总结
- Java面试小总结
- java笔记小总结
- JAVA 包小总结
- java初始化小总结
- java 输入输出小总结
- java第一阶段小总结
- Java容器小总结
- java小知识点总结
- java小总结
- Java语法小总结
- Java继承小总结
- java基础小总结
- Java反射小总结
- Java多线程小总结
- java学习小总结
- java小总结
- JAVA小总结
- JMeter(一) -基础入门
- 服务端给的自定义URL跳转对应控制器
- spring-mvc之ioc容器
- Hello itsCoder!
- PAT Basic
- java小总结
- Python学习笔记(一)
- PAT Basic 1034 有理数四则运算(20)
- Ubuntu入门学习bash和shell(3)
- UVA489 - Hangman Judge
- CardLayout(卡片布局)
- Android okHttp总结篇一
- 如何在一台windows主机上实现MySQL的主从复制?
- 如何利用百度在线地图获取坐标