`
寻找出路的苍蝇
  • 浏览: 34392 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java基础知识复习笔记

阅读更多

最近在学习echo3源码时忽然发现自己对java的很多基础知识还是没有掌握,很多语法从前根本就没想过还可以这么用的!比如echo3对内部类、内部接口、静态构造、对象组合等出神入化的应用,直叫人叹为观止呀。有感于自己基础之薄弱,重新拾起《java核心技术,卷一》一书,复习一下一些重要语法知识及某些以前不太在意的基础语法。特作如下笔记。

一、接口

1、主要用来描述类具有什么功能,而并不给出这些功能的具体实现。

2、接口的方法自动属于public的,因此在声明方法不必显式地提供public关键字。在实现类中最好也声明为public的,否则编译器会给出弱访问权限的警告信息。

3、在接口中可以定义常量,常量自动具有public static final属性。

4、接口中绝不能含有实例域,也不能在接口中实现方法。可以将接口看成是没有实例域的抽象类。

5、接口不可实例化但可用于声明对象,也可用于对象的instanceof 方法。

6、有关Cloneable接口:Object类中提供了protected clone方法,子类是若需提供克隆功能,则必须实现Cloneable接口,重新声明一个public clone方法。若克隆时只须浅拷贝,则直接调用super.clone()即可,但若需深拷贝,则只能自定义了。

7、标记接口:Cloneable,Serialable等接口,这此接口没有提供任何方法,仅做为一个标记。使用它们的唯一目的是可以用instanceof 进行类型检查。

8、回调:事件监听器

二、内部类

1、内部类是定义在另一个类中的类,使用内部类的特点:

  • 内部类可以访问外部类的数据,包括私有数据。
  • 内部类对同一包中的其它类隐藏。
  • 可以通过定义匿名内部类实现便捷回调。
  • 内部类是一种编译器现象,与虚拟机无关。编译器将内部类翻译成用$将外部类名与内部类名分开的常规类文件,虚拟机对此类文件不做特殊处理。

2、局部内部类:不能用public或private修饰符进行声明,它的作用域限定在声明它的块中,比如声明这个局部类的方法中,它只能由声明它的块访问,任何类甚至它的外围类的其它方法都访问不到它。局部内容类除可以访问外围类的域外,还可访问局部变量,不过要求这些局部变量是final的。实际上,编译器为局部内部类声明了一个final的域,用以存储对局部变量的拷贝。

3、匿名内部类:没有类名,直接创建其实现。针对接口创建的匿名内部类即是对该接口的一个匿名实现,针对类创建的匿名内部类则是创建该类的一个匿名子类。匿名内部类没有构造器,因为这它没有类名。

  • 对接口的匿名实现:new IntefaceType(){method and data}
  • 对类的匿名子类:new ClassType(param){method and data}

4、静态内部类:当内部类无须引用外围类的域时可以将其声明为static的,这样就取消对外围类的引用。

5、代理:在运行时动态创建实现一组接口的新类 。注意,代理类是在运行期间动态创建的,所有代理类扩展于Proxy类,在Proxy基类中定义了一个InvocationHandler实例变量,这个实例变量实现InvocationHandler接口,对代理对象中所代理接口方法的调用最后会被转发到这个InvocationHandler实例变量的invoke方法,通过该方法实现对实际对象指定方法的调用。

三、断言

1、断言的两种形式:

  • assert 条件
  • assert 条件:表达式

断言会对条件进行判断,若条件为false,则抛出一个AssertionError异常。第二种形式下会将表达式传入AssertionError对象的构造器,转换成一个消息字符串。

2、jdk5默认支持断言,1.4在编译时需要使用javac -source 1.4来支持断言。

默认情况下断言是禁用的。运行程序时可通过-enableassertions或-ea来启用,通过-disableassertions或-da来禁用。

3、使用断言的注意事项:

  • 断言失败是致命的、不可恢复的错误;
  • 断言检查只用于开发和测试阶段。

四、泛型

1、泛型程序设计意味着所写的代码可以被许多不同类型的对象重用。在jdk5以前泛型通过继承和强制类型转换来实现,jdk5通过类型参数来提供泛型支持。例如ArrayList<T>有一个类型参数T,它指示ArrayList对象的元素类型为T,当调用get方法时编译器知道返回值类型为T,不再需要通过类型转换到T,而调用add方法添加元素时,编译器只允许T类型的元素被添加到集合中。故通过泛型可以提高程序的可读性和安全性。

2、类型变量限定:

    <T extends BoundingType>

表示T应该是绑定类型(BoundingType)的子类型。


一个类型变量可以有多个限定:T extends BT1 & BT2,限定中可以有多个接口,但只能有一个类。

3、JVM会为每个泛型类型提供其原始类型实现,一个泛型的原始类型名即为该泛型类去除类型参数后的名字,其泛型变量被擦除,用泛型变量的相应限定类型(无限定类型的用Object)来替代。

五、流与文件

1、输入流:可以读取字节序列的对象。输出流:可以写入字节序列的对象。类InputStream与OutputStream分别对应,而抽象类Reader与Writer则读取双字节的Unicode码。

java.io.InputStream

  • abstract int read():读取一个字节的数据并将其返回;当读到流的末尾时,返回-1。这是个抽象方法,需要具体的流来实现。该类的其它方法如read(int[])、skip等方法将会调用本方法。
  • int read(byte[] b):将数据读取到字节数组中,返回实际读取的字节数目。当到达流末尾时调用此方法返回-1。
  • int read(byte[] b,int off,int len):同上,但数组从off处开始存储,读取的字节数目最大为len。
  • long skip(long n):在输入流中跳过n个字节,返回实际跳过的字节数。
  • int available():返回可用的未阻塞的字节数。

2、StringBuilder与StringBuffer:二者提供一致的API,区别在于:

  • StringBuffer是线程安全的
  • StringBuilder是jdk5提供的,非线程安全,但效率较前者稍高。

在单线程环境下应该用StringBuilder。

六、访问修饰符总结

1、priate--仅对本类可见

2、public--对所有类可见

3、protected--对本包和所有子类可见

4、默认--对本包可见

六、移位运算

<< 向左移位,从右边补0 相当于乘以2的幂
>> 向右移位,从左边补符号位 相当于除以2的幂
>>> 向右移位,从左边补0 相当于除以2的幂
分享到:
评论

相关推荐

    java ee 复习笔记

    在复习Java EE时,除了这些框架,还需要掌握Servlet和JSP的基础知识,它们是构建动态Web应用的基础。Servlet是Java编写的小型服务器端程序,负责处理HTTP请求,而JSP则是用于创建动态网页的视图技术,将HTML代码与...

    Java基础 学习笔记 Markdownr版

    本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...

    Java基础尚硅谷宋红康学习笔记

    【Java基础】 Java是一种广泛使用的面向对象...这些是Java基础知识和高级技术的主要组成部分,掌握它们能够帮助开发者构建稳定、高效、可维护的Java应用程序。通过深入学习和实践,你可以不断提升自己的Java编程能力。

    JavaSE基础复习笔记

    ### JavaSE基础复习知识点 #### 1. 数组在内存中的存储状态 - **数组的概念**:数组是一种基本的数据结构,用于存储同类型元素的集合。每个元素可以通过索引访问,索引通常从0开始。 - **数组内存分配**:在Java...

    Java复习笔记.docx

    下面是 Java 基础知识的汇总和学习笔记。 Java 概述 Java 是由 Sun Microsystems 公司开发的高级编程语言,于 1995 年首次发布。Java 的主要特点包括平台独立、面向对象、简单易学等。Java 可以应用于桌面应用程序...

    超详细的Java复习知识点2019——个人笔记.zip

    这份名为"超详细的Java复习知识点2019——个人笔记"的文档,旨在为初学者提供一个全面且深入理解Java基础知识的指南。笔记内容可能涵盖了以下几个关键领域: 1. **Java语法基础**:包括变量、数据类型、运算符、...

    Java基础复习笔记.docx

    这份《Java基础复习笔记.docx》提供了全面的复习材料,涵盖了Java编程的基础至进阶概念,对于那些希望提升Java技能的学习者来说是宝贵的资源。 首先,笔记详细介绍了Java的基本数据类型,包括整型(如int)、浮点型...

    Java考试详细复习笔记

    ### Java考试详细复习笔记 #### 一、传统MVC与Struts比较 ##### 1. 含义: 在Web开发中,MVC(Model-View-Controller)架构模式是一种常用的设计模式,它将应用程序分为三个核心组件,即模型(Model)、视图(View)和...

    JAVA试题 JAVA复习题 JAVA复习笔记

    本压缩包集合了多种JAVA试题与复习笔记,涵盖了基础理论、编程实践以及解题技巧等多个方面,旨在帮助Java学习者巩固知识,提升编程能力。 1. **Java基础** - **数据类型**:包括基本数据类型(如int、char、...

    Java复习笔记

    这些知识点构成了Java编程的基础,理解和掌握它们对于深入学习和应用Java至关重要。在实际开发中,还需要结合设计模式、异常处理、集合框架、多线程同步、I/O流的高级特性等更多内容,才能编写出高效、可靠的Java...

    Java基础复习笔记06数据结构-队列

    Java基础复习笔记06数据结构-队列,详细介绍了队列的知识

    Java基础复习笔记05数据结构-栈

    Java基础复习笔记05数据结构-栈,详细介绍了栈的相关知识

    JAVA基础--复习笔记.pdf

    本文档提供了JAVA基础知识的复习笔记,涵盖了JAVA的基础概念、数据类型、运算符、控制流程、类和对象、继承、多态、抽象类和接口等方面的知识。 一、数据类型 在JAVA中,有以下几种基本数据类型: * 整数类型:...

    java读书笔记笔记笔记笔记笔记笔记

    【标签】"笔记笔记笔记笔记" 强调了这是一份学习资料,重点在于记录和回顾,对于读者来说,这可能是一个很好的参考资料,用于复习Java编程的各种知识点。 【压缩包子文件的文件名称列表】: 1. **Execution.htm** -...

    java基础复习笔记(第一阶段)

    Java基础复习笔记(第一阶段)涵盖了Java编程语言的核心概念,为初学者或复习者提供了全面的知识框架。在这一阶段的学习中,我们将深入探讨以下几个关键领域: 1. **Java基本语法**:这是学习Java的基石,包括变量...

    Java十大基础笔记整理(PDF)

    这份"Java十大基础笔记整理(PDF)"提供了全面的Java基础知识概览,适合初学者进行学习和复习。下面,我们将深入探讨Java的基础知识,涵盖核心概念、语法和编程实践。 1. **Java简介**:Java是由Sun Microsystems...

    任小龙java基础的Excel笔记(完整版)

    【标题】"任小龙java基础的Excel笔记(完整版)"涵盖了Java编程语言的基础知识,由知名讲师任小龙编撰。这份笔记以Excel表格的形式,系统地整理了Java学习的关键概念,旨在帮助初学者和进阶者巩固Java编程技能。 ...

    李兴华老师Java基础笔记

    总的来说,《李兴华老师Java基础笔记》是一份涵盖Java SE核心知识的宝典,无论你是初入Java殿堂的新手,还是想要系统复习的老兵,都能从中受益匪浅。通过系统学习这份笔记,你将能够掌握扎实的Java编程基础,为后续...

    java高级复习笔记.zip

    适用于不同层次的学习者:尽管是高级复习笔记,但这份资源提供了从基础到高级的渐进式学习路径。无论您是初学者还是有经验的开发者,都可以从中获益。初学者可以用它作为高级编程的引导,而有经验的开发者可以通过...

Global site tag (gtag.js) - Google Analytics