java基础知识点总结

合集下载

黑马程序员JavaEE基础班知识点整理

黑马程序员JavaEE基础班知识点整理

黑马程序员JavaEE基础班知识点整理天地玄黄,宇宙洪荒。

如果你也和我一样看过不少网络小说,那你的想象力肯定很丰富,这点作为程序员是很重要的。

如果你和我一样喜欢《黑客帝国》《银河系漫游指南》《钢铁侠》《三体》《西部世界》。

那有可能科幻就是你坚持钻研技术的动力来源。

虽然我们暂时不能像黑客帝国里一样进入虚拟世界,不能像邓肯一样到宇宙尽头餐馆吃饭,没有贾维斯的智能管家系统,也不能把机器人做的无法分辨真伪,但是如果没有人们对未来的想象我们的技术就没有了追求。

这些追求促使我们不断的学习,让技术不断的前进,我相信这些电影电视小说里的情节一定会实现。

抱有这样的期待和好奇很多同学来到黑马学习技术,首先接触的就是黑马的基础班。

视频课程,讲义是必须的,但是我们还要有知识的梳理。

今天我们就整理了基础班的一下问答和笔试题供大家交流学习。

希望大家梳理一下自己的基础知识,基础知识是我们技术飞船的主架,主架坚固才能让我们在宇宙里航行的更远~理论知识点一、基础概念1、面向对象的理解并举例2、面向对象的三大特性,并分别阐述对每个特性的理解3、阐述成员变量和局部变量的区别4、构造方法的概念和作用,和一般方法的区别5、静态代码块、构造代码块、构造方法的特点及执行顺序6、描述类和对象的关系7、创建对象的步骤等二、IO流理论知识点:1、io流的基本流都有哪些,简单说说基本流的体系2、字节流和字符流的使用场景3、拷贝文本文件一般会用到哪个流?为什么?4、在io流中拷贝文件一般会用哪几个流?5、在io流的拷贝过程中,通过while 循环读取字节进行拷贝,需要通过哪个流的什么方法读取字节6、File类的常用方法都有哪些?7、遍历指定目录下的文件的所有名称,一般用什么方法?8、在io流中一般常用的字符编码集都有哪些?简单阐述几种9、在字符流中,带缓冲区的包装流都有哪一些?具体阐述一下。

10、为什么read()方法返回值是int类型?11、标准输入流和输出流是什么?三、集合理论知识点1、集合的由来2、数组和集合的使用场景3、数组和集合的区别4、集合的遍历5、在迭代集合中元素时,可不可以通过集合对象的方法操作集合中的元素?6、 List的三个子类的特点7、栈和队列数据结构8、 List有三个儿子,在不同的场景分别应该使用谁呢?9、 HashSet保证元素唯一的原理10、 TreeSet两种排序方式11、 list集合和set集合有什么区别?12、双列集合获取键和值的两种方式13、 HashMap和Hashtable的区别14、 Collection和Collections的区别?四、反射理论知识点1、反射概述2、获取类的字节码文件三种方式五、线程理论知识点1、线程的生命周期。

java基础知识点笔记

java基础知识点笔记

java基础知识点笔记Java是一门非常重要的计算机语言,具有良好的跨平台性和易读性和易学性。

尤其是基于Java开发的移动端和Web端产品,其优秀的性能和可扩展性在行业中得到了广泛的青睐。

作为Java开发工程师,熟练掌握Java的基础知识非常重要。

一、Java基本语法Java程序包含一个或多个类,不同类可以相互调用使用。

每一个Java程序都需要有一个入口点,即main()函数。

在Java中,注释采用“//”或“/*...*/”的形式,可以单行或多行注释。

Java变量需要先声明再使用,可以定义基本类型变量和引用类型变量。

Java中的运算符包括算术运算符、逻辑运算符等。

二、Java面向对象编程Java是一门面向对象的编程语言,对象是Java程序的基本组成单元。

Java中的类封装了数据和方法,可以实现类的继承和多态。

在Java中,使用构造函数实例化对象,可以使用访问控制符来控制类成员的访问权限。

三、Java流程控制语句Java中的流程控制语句有条件语句(if、if-else、switch)、循环语句(while、do-while、for)等。

其中,if语句可以进行嵌套,switch语句可以使用break语句避免case穿透问题。

四、Java数组Java中的数组是一组相同类型的数据序列,从0开始编号,使用方括号表示。

在Java中可以使用foreach来遍历数组,也支持多维数组。

五、Java异常处理Java程序中的异常指的是程序出现的错误。

异常处理是Java程序中的一部分,可以使用try-catch语句来捕获并处理异常。

Java中的异常类型包括运行时异常和受检查异常。

六、Javaio编程Java中的文件和I/O操作称为io编程。

Java的io编程采用字节流和字符流,其中字节流用于处理二进制数据,字符流用于处理文本数据。

Java中的io操作需要进行文件的读取、写入等操作,可以使用File类来操作文件。

七、Java线程Java程序中,线程指的是一条执行序列,Java中的线程可以继承Thread类或实现Runnable接口。

java基础知识点

java基础知识点

java基础知识点
1、面向对象:Java语言是一种面向对象的编程语言,它使用Java类和Java对象来构建复杂的系统。

Java类包含方法(程序执行的语句)和属性(关于对象的信息)。

可以使用对象间的关系(如继承和实现)来“重用”代码。

2、语言基础:Java语言是一种类型安全的、健壮的和高效的编程语言,它具有静态类型系统、异常处理、泛型和沙箱安全机制等功能。

这种类型安全指的是Java可以通过显式声明变量的数据类型来确保变量的内容。

3、继承:Java支持继承机制,可以将多个类“组装”在一起,互相共享代码并复用属性和方法。

继承是一种多态性,它允许每个类“定义”它自己独有的行为,但与同一父类共享相同接口。

4、包:Java使用java包来组织类和接口,它提供了独立的命名空间,可以将相似的类和接口组装在一起,以保持代码整洁和可维护性。

5、容器:容器是Java中的一种特殊数据类型,它可以储存和管理多个对象。

Java提供了多种容器,比如ArrayList,Map,HashMap 等,帮助程序员管理复杂的系统。

java期末考点总结

java期末考点总结

java期末考点总结一、基础知识1. Java语言的起源和特点2. Java开发环境的配置和使用3. Java程序的基本结构和语法规则4. 数据类型和变量5. 运算符和表达式6. 控制流程和循环结构二、面向对象编程1. 面向对象的基本概念和原则2. 类和对象的定义和使用3. 封装、继承和多态4. 接口和抽象类5. 继承和多态的应用6. 继承和接口的区别三、异常处理1. 异常的概念和分类2. 异常的处理机制3. try-catch语句的使用4. finally语句的作用5. 异常的抛出和捕获6. 自定义异常四、常用类库1. String类的常用方法2. Math类和常用数学方法3. Date类和Calendar类的使用4. 集合框架和常用集合类5. IO流的使用6. 文件的读写操作五、多线程编程1. 进程和线程的概念2. 创建线程和实现Runnable接口的区别3. 同步和互斥的实现4. 线程的状态和控制5. 线程的优先级和调度6. 线程池的使用和管理六、网络编程1. 网络通信的基本概念和协议2. Socket编程和TCP/IP协议3. UDP协议和DatagramSocket类4. URL和URLConnection类的使用5. 服务器和客户端的通信6. HTTP协议和网页的访问七、图形用户界面1. AWT和Swing的区别和优缺点2. 组件的布局和事件处理3. 容器和组件的层次结构4. 图形用户界面的设计和优化5. 多线程和事件处理6. 用户界面的国际化和本地化八、数据库编程1. 数据库的基本概念和SQL语句2. JDBC的使用和连接数据库3. Statement和PreparedStatement的使用4. ResultSet的处理和数据库操作5. 事务和批处理的管理6. 数据库连接池的使用九、Web开发1. HTML和CSS的基本语法和标签2. JavaScript的基本语法和事件处理3. Servlet和JSP的概念和使用4. MVC模式的理解和应用5. 数据库连接和数据处理6. Web应用的发布和部署十、设计模式1. 设计模式的基本概念和分类2. 单例模式和工厂模式的实现3. 观察者模式和适配器模式的应用4. MVC模式和策略模式的理解和应用5. 模板方法模式和装饰者模式的实现6. 设计模式的优缺点和使用场景以上是Java期末考点的总结,希望能帮助你复习和理解Java编程的重要知识点。

java知识点总结

java知识点总结

D、不确定
10、数组的长度: 数组的长度用其属性值. Length表示。 对一维数组,数组的长度是数组中元素的个数 对二维数组,数组的长度是其含有的一维数组的个数。 float a[] = new float[12]; a.length的值12 int x[ ][ ]=new int[3][6] x.length的值为 3。
第1章 Java 入门 Java入门
计算机工程学院
第一章
• 一、与平台无关性
Java 应用程序编译后形成的字节码CLASS文件不是直接在操作系统或者 CPU上直接运行,而是字节码由Java虚拟机负责解释运行。因此Java编写的应 用程序在运行时与平台无关。 二、 Java三种平台简介 Java平台主要分为三个版本:JavaSE、JavaEE 、 JavaME • • • Java SE(标准版或Java 标准平台) 是Java技术的核心和基础 Java EE(企业版企业平台) Java ME(为Java微型版或Java小型平台)为在移动设备和嵌入式设备上运行 应用程序提供一个健壮且灵活的环境。
• Java SE是基础
计算机工程学院
第一章
三、 系统环境path的设置: (1) 设 置 环 境 变 量 path , 可 单 击 该 变 量 进 行 编 辑 操 作 , 将 需 要 的 值 (D:\jdk7\bin)加入即可 。 path= D:\jdk7\bin; (2)设置环境classpath classpath=D:\jdk7\jre\lib\rt.jar;.;
数组的实体
数组变量boy中存放着数组在内存中单元(实体)的首地址。 计算机工程学院
第二章
9、2个相同类型的数组具有相同的引用,那么他们具有完全相同的元素(实体)

java复习期末重点考点总结

java复习期末重点考点总结

java复习期末重点考点总结一、基本语法1. 变量和常量定义变量和常量,变量的作用域,变量类型转换等。

2. 数据类型Java的基本数据类型,如整型、浮点型、字符型、布尔型等。

3. 运算符Java的运算符,如算术运算符、关系运算符、逻辑运算符、位运算符等。

4. 控制结构条件语句,如if语句、switch语句。

循环语句,如for循环、while循环、do-while循环。

5. 数组一维数组、多维数组的定义和使用。

6. 方法定义方法,方法的重载、调用以及参数传递。

7. 异常处理Java的异常处理机制,如try-catch-finally语句块。

常见的异常类及其使用。

二、面向对象1. 类和对象类和对象的定义,成员变量和成员方法的访问权限。

2. 构造方法和析构方法构造方法和析构方法的定义和使用。

3. 继承子类和父类的关系,继承的实现和使用。

方法重写和父类引用子类对象的特点。

4. 接口接口的定义和实现,接口的多继承。

多态的概念和实现,向上转型和向下转型。

6. 包包的定义和使用,包的导入和导出。

三、输入输出1. 文件操作文件的读取和写入,字符流和字节流的使用。

2. 序列化和反序列化对象的序列化和反序列化,使用序列化实现对象的存储和传输。

四、集合框架1. 集合接口和类常用集合接口和类的介绍和使用,如List、Set、Map等。

2. 迭代器集合的迭代器,实现对集合元素的遍历和操作。

3. 泛型泛型的概念和使用,泛型类和泛型方法。

4. 排序和比较使用集合框架实现元素的排序和比较。

五、线程1. 线程的创建和启动线程的创建方式,使用Thread类和Runnable接口。

2. 线程同步线程同步的方法,如使用synchronized关键字实现线程同步。

3. 线程通信线程之间的通信方式,如使用wait()、notify()、notifyAll()方法进行线程通信。

线程池的定义和使用,使用线程池实现线程的复用。

六、网络编程1. 套接字套接字的概念和使用,使用套接字实现网络通信。

04747 java知识点总结

04747 java知识点总结

第七章:输入和输出流第一节:数据流的基本概念1.在java中,把不同类型的输入、输出源抽象为流,其中输入或输出的数据成为数据流,用统一的接口表示。

2.数据流是指一组有顺序的、有起点和终点的字节集合。

程序从键盘接收数据或向文件中写数据,都可以使用数据流来完成。

3.流分为输入数据流和输出数据流。

输入数据流只能读不能写;而输出数据流只能写不能读。

从数据流中读取数据是,必须有一个数据源与该数据流相连(FileInput Stream in = new FileInputStream(“javatest.txt”);)(实例化)4.Java.io包中提供了表示数据流的4个基本抽象类(不可以实例化),分别是InputStream、OutputStream、Reader和Writer。

因此涉及数据流操作的程序中,几乎都要使用引入语句:import java.io.*5.为了使对象的状态能够方便地永久保存下来,java.io包中又提供了以字节流为基础的用于对象的永久化保存状态的机制,通过实现ObjectInput和Object Output接口来完成。

6.输入数据流提供的主要操作方法有:(得到-1,标志数据流结束)int read():从输入流读取一个字节的二进制数据int read( byte [ ] b):将多个字节读到数组中,填满整个数组int read( byte [ ] b ,int off , int len): 从输入流中读取长度为len的数据,从数组b中下标为off的位置开始放置读入的数据,读毕返回读取的字节数。

7.void close(): 关闭数据流int available(): 返回目前可以从数据流中读取的字节数long skip(long l): 跳过数据流中指定数量的字节不读取,返回值表示实际跳过的字节数8.如需要反向读取数据流,则使用回推操作(Push Back)Boolean markSupported(): 用于测试数据流是否支持回推操作void mark(int): 用于标记数据流的当前位置,并划出一个缓冲区,其大小至少为指定参数的大小。

java基础知识点整合

java基础知识点整合

面向对象3.1 面向对象介绍1.什么是面向对象对象其实就是现实生活中的各种物体,他们有各种各样的功能,当我们需要借助这些物体去完成我们的需求时,我们就是在面向这些对象,使用它们其中的功能,至于他们其中的功能是如何实现的,我们无需知道,只要能完成需求即可.2.什么是面向对象编程(OOP):Object Oriented Programming 是一种编程思想, 使用对象去进行编程.它的特点有: 封装, 继承, 多态3.对象从哪来:对象是需要先用类来描述, 然后使用类来创建.类是对象的描述, 对象是类的实例.4.面向对象的优点提高代码复用性.使用者无需关心对象其中是如何实现的.让程序员从一个编写者转换成一个使用者.更加符合人的思维能力,使编程更简单.3.2 定义类1.成员变量在类中用变量来描述这一类对象公有的特征.2.成员函数在类中用函数来描述这一类对象公有的行为.3.3 创建和使用对象1.怎么创建使用"new 类名()"形式创建一个对象2.怎么使用通过"."语法来访问类的成员.例如: Person p = new Person(); = "张三";p.eat();3.4对象的初始化过程1.加载类类在第一次使用的时候被加载到内存中2.初始化成员变量当创建对象的时候, 成员变量会初始化为默认值, 基本数据类型都是0, 引用数据类型都是null3.5对象的生命周期1.开始new关键字创建对象的时候, 生命周期开始2.结束没有任何引用指向对象, 该对象成为垃圾, 被虚拟机回收3.6 匿名对象1.什么是匿名对象没有任何引用指向的对象, 就叫匿名对象2.匿名对象有什么特点匿名对象在创建之后立即被回收, 只能使用一次3.7 封装1.什么是封装封装就是将一类事物的特征和行为封装在一个类中,定义成成员变量和成员函数创建对象之后, 这些成员函数可以访问自己的成员变量2.对成员变量的封装使用private关键字将成员变量私有化如果需要对外部提供访问方式, 写公有的get, set方法3.8 构造函数1.什么是构造函数构造函数是一个特殊的函数.函数名必须和类名一致.没有返回值类型.(不等于void,不能写任何返回值).可以写return,但是不能写return+值(尽量不要写).new关键字创建对象时自动调用2.应用场景如果我们希望一段代码在创建对象的时候执行, 就可以写在构造函数中通常我们使用构造函数对成员变量进行赋值3.构造函数和成员变量的执行顺序成员变量优先于构造函数先执行,因为通常使用构造函数都是对成员变量进行初始化,所以如果没有成员变量,构造函数是没有任何意义的.4.构造函数的重载和普通函数一样, 参数列表不同(类型不同,顺序不同,个数不同)即可.重载只与参数列表有关5.构造函数的调用在创建对象时自动调用.在构造函数的第一条语句可以使用"this(被调用的构造函数的实际参数)"的形式调用该类其他构造函数.6.自动生成构造函数在一个类中构造函数是一定存在的.因为在一个类中如果没有写任何的构造函数, 编译时也会自动生成一个无参的构造函数, 里面什么代码都没有.如果写了任何一个构造函数, 那么就不会有自动生成的了注意: 我们在类中只写了一个有参构造函数的时候,这个类就不能使用无参的构造函数创建对象了7.构造函数的访问权限通常构造函数的访问权限都是公有的, 因为构造函数就是为了让别人创建对象时调用的个别情况下在定义类时不希望外部创建对象, 这时可以使用private修饰构造函数, 例如: 单例设计模式(Singleton)3.9 成员代码块(构造代码块)1.什么是成员代码块在类中使用"{}"定义一段代码, 这段代码在创建对象的时候会自动运行2.成员代码块和构造函数的区别构造函数在创建对象的时候是N个选1个调用而代码块是一定执行构造函数可以传入参数代码块不能传入参数3.创建对象时内存中的工作顺序在内存中查找指定的类, 如果没有就加载类, 有则直接引用在内存中开辟一块空间, 将成员变量初始化为默认值, 0和null按照类代码从上到下的顺序, 执行代码块或者成员变量赋值执行构造函数中的代码4.在方法中也可以写代码块(方法代码块),但是不常用3.10成员变量和局部变量1.成员变量在类中定义的变量,(Field),在整个类都可以访问(用于描述着一类事物的共有特征).成员变量随着对象的建立而建立,存在于对象所在的堆内存中.成员变量有默认初始值(0/false/null)2.局部变量在方法/语句中定义的变量(Local Variable),存在于栈内存中.作用范围一结束,变量的空间会自动释放.局部变量是没有初始值的.3.同名问题在同一个作用域中成员变量不能重复, 局部变量也不能重复但是成员变量和局部变量可以同名, 他们互相不冲突4.访问问题在局部变量和成员变量同名的时候, 如果直接用变量名访问一个变量, 那么是先找局部变量, 如果不存在才找成员变量这时如果不想找局部变量, 直接找成员变量, 应该用"this.变量名"3.11 this关键字1.构造函数中"this(参数)"形式可以在构造函数的第一条语句中调用其他的构造函数"this.成员名"形式可以调用当前对象的成员2.普通函数中this用在普通的函数中, 可以代表调用当前函数的对象哪个对象调用this所在的函数,this就代表那个对象.3.内部类中可以使用外部类名.this.成员来访问外部类的成员.3.12静态(static)变量1.什么是静态变量用static修饰的成员变量就是静态变量(随着类的加载而加载)优先于所有非静态成员及成员代码块.2.静态变量和普通变量有什么不同静态变量在类加载后就初始化, 不用创建对象可以直接使用.静态变量被类的所有对象共享(在共享区), 通过一个对象改变, 所有对象都改变.静态变量可以使用"类名.变量名"形式访问, Java推荐使用这种方式, 而不是通过对象访问.3.类在什么时候加载类在第一次使用的时候加载例如: 创建对象, 使用静态变量, 使用静态方法定义变量的时候不加载类.4.静态变量在什么时候使用在定义一个类的时候, 如果希望这个类的所有对象共享一个数据时, 就可以使用静态成员变量.3.13静态(staitc)方法1.什么是静态方法用static修饰的方法就是静态方法静态方法类加载后可以直接运行可以使用"类名.方法名"调用2.什么时候使用静态方法如果一个方法没有访问任何外部的非静态成员, 那么就可以定义为static.这样在调用的时候不用创建对象即可使用, 给人提供方便, 并且效率更高.3. 静态方法使用的注意事项1. 静态方法不能直接访问方法外非静态成员.因为静态方法是随着类的加载而加载的,而非静态成员只有在对象创建才会加载.因此,当静态方法访问方法外非静态成员,对象不一定被创建,所以不能直接访问,除非在静态方法中创建本类对象,才可以访问,方法外静态成员.2. 与静态方法不能直接访问方法外非静态成员相反,非静态方法是可以访问静态成员的,因为,对象被创建了,这个类一定被加载到内存中,所以可以访问.3. 因为静态优先于对象存在,所以在静态方法中是不能出现this,super这两个关键字,道理很简单,静态被加载时还没有对象,而这两个关键字都和对象有关,所以不能使用.4. 静态的利与弊静态好处:1. 如果一个类里的某一个成员变量,他的所有需要共同使用它,没必要每一个对象都存储一份,可以将成员变量设为static,系统将进行单独空间(方法区/静态区) 存储,节省内存空间.2. 静态的成员可以直接被类名调用,使用简单.静态弊端:1. 因为静态是随着类加载而加载的的,所以其生命周期是和类同存亡的.所以生命周期很长,比较浪费内存空间.2. 因为静态只能访问静态,所以访问有一定的局限性.3. 因为主函数是静态的,所以用主函数调用的方法再不创建对象的情况下,只能都是静态的.3.14静态代码块1. 什么是静态代码块用static修饰的代码块类加载后直接运行, 只能执行一次(因为类只会加载一次),如果在一个类中有主函数,他是优先于主函数运行的.不能访问外部非静态成员2. 什么时候用静态代码块在定义一个类的时候, 如果希望某一段代码在别人使用这个类的时候就执行, 那么就可以写在静态代码块中.用于给类初始化.3.15单例设计模式设计模式:解决某一类问题最行之有效的方法.单例设计模式:让一个类只能创建一个对象.懒汉式和饿汉式饿汉式步骤:1.私有化构造函数.2.创建一个对象,并私有(防止类外改变对象内部内容).3.创建一个公有的,静态的方法,返回本类对象,使类外获取本类对象.懒汉式步骤:1.私有化构造函数.2.创建一个对象引用,并私有(防止类外改变对象内部内容).3.创建一个公有的,静态的方法,判断是否创建了一个对象如果创建了,返回本类对象, 如果没有创建,创建一个对象返回,使类外获取本类对象.3.16继承1.什么是继承定义一个类, 使用extends关键字可以继承另一个类, 得到父类的所有非私有属性和方法.2.继承的特点Java只支持单继承, 不支持多继承, 但可以多重继承.一个父类可以有多个子类, 但一个子类只有一个父类.3.java改良多继承的原因?提高代码的安全性,如果一个子类继承多个父类,而这多个父类中有同名的方法,子类要去访问的话,就不知道要访问哪一个方法了.降低了安全性..4.子类对象创建的过程子类对象之所以能调用父类的方法, 是因为在创建子类对象的时候, 其内部创建了一个父类对象.在new一个对象时,会先去子类构造函数,中寻找super()(如果没有显示指定父类构造函数)然后创建父类,然后再回到子类中创建对象.调用子类的方法时, 虚拟机会先在子类中查找是否包含该方法, 如果没有则找父类.在调用子类构造函数的时候, 一定会使用"super(参数)"形式调用父类构造函数创建父类对象.子类中必须要有一个构造函数含有super调用父类构造函数..super和this类似, 都是必须在构造函数的第一条语句使用如果构造函数写了this, 那么则不能写super, 反之亦然如果没写this也没写super, 默认会自动调用父类无参的构造函数5.方法覆盖(重写)覆盖可以让子类将从父类继承来的方法进行扩展,提高代码复用性,减少冗余.覆盖时子父类的方法名子必须相同, 包括返回值,参数列表,并且子类的权限必须大于或等于父类.只能覆盖非私有方法.6.重载(Overload)和重写(Override)的区别:重载:名字相同,参数列表不同只与参数列表相同.重写:子父类的方法名子必须相同, 包括返回值,参数列表,子类的权限必须大于或等于父类.(如果父类返回值是一个类,子类返回值可以是和父类相同的类或其子类).7.向上转型子类可以当作父类使用, 因为父类的功能子类都有Fu f = new Zi();如果一个方法要求传入一个父类类型对象, 我们也可以传入一个子类对象8.强制类型转换在子类当作父类来用时, 不能调用子类特有的成员.如果一定要调用, 需要把父类类型强转回子类类型.这种转换叫强制类型转换, 在编译时不论类型是否匹配都不会报错, 为了程序安全, 通常在转换之前使用instanceof进行判断.3.17Object类及其中常用方法1.什么是Object类Object类是Java中所有类的父类, 如果定义一个类不继承任何类, 默认继承ObjectObject类中的方法会被所有的类继承2.finalize任何对象在成为垃圾被销毁之前, 都会调用finalize 方法Object类中的finalize方法是空的, 什么都没有当我们希望在对象被销毁之前执行一段代码, 就可以在类中重写finalize方法, 把要执行的代码写在方法中.3.toStringtoString方法可以将一个对象转为字符串表示形式Object类中的toString方法返回的是"类名@内存地址"当我们希望调用toString时返回成员变量的值, 就可以重写该方法调用System.out.println()方法时会自动打印对象toString的返回值4.equalsequals方法是用来比较两个对象的Object类中equals方法默认比较的是对象的地址如果我们希望比较两个对象的属性, 那么可以重写equals方法, 在方法内比较所有的属性在比较字符串时如果希望比较两个字符串的内容, 就需要使用equals, String类是重写了equals的3.18 组合设计模式1.什么是组合设计模式在我们定义一个类的时, 如果需要使用另外一个类的方法, 就可以用组合设计模式.2.组合设计模式的写法在类中定义一个被组合类型的成员变量通过构造函数组合一个对象, 用成员变量引用在方法中使用成员变量调用被组合对象的方法3.组合设计模式和继承的区别不占用继承的位置, 当前类组合一个类之后还能继承其他类组合设计模式组合的类不能当作被组合的类使用3.19 多态1.多态的体现父类引用指向子类对象.(父类的引用可以接受自己的子类).2.多态的前提类与类之间必须有关系,要么继承,要么实现.子类与父类存在覆盖,因为在不强转的情况下,父类,不能访问子类特有的方法.3.多态的好处提高代码扩展性.4多态的弊端虽然提高了扩展性,但是只能使用父类父类引用访问父类成员(共有成员),为了能访问子类特有方法,父类的引用必须转成子类类型(向下转型).3.20 抽象1.什么是抽象类用abstract修饰的类就是抽象类, 抽象类中可以定义抽象方法2.什么是抽象方法用abstract修饰的方法就是抽象方法, 抽象方法在子类中必须全部重写3.什么时候用抽象类和抽象方法在我们定义类的时候, 如果多个类有相同的方法, 那么就应该把这些方法抽取到父类中定义完全相同的方法直接在父类中定义并实现, 如果只有方法签名(无方法体)一样而实现不同, 那么就可以在父类中定义抽象方法这样别人看到父类的时候就知道子类都有什么功能了, 方便他人阅读我们的代码, 也更好的支持了多态.4.抽象类细节有抽象方法的类必须声明为抽象类, 抽象类可以没有抽象方法抽象类不能创建对象子类继承抽象类时必须重写所有的抽象方法3.21 final修饰符1. final代表最终的, 可以用来修饰类, 方法, 变量.2. 被final修饰后的特点final的类不能被继承final的方法不能被重写final的变量只能赋值一次,在程序运行结束前,会一直存在与内存中.如果内部类在局部位置上,只能访问该局部中被final 修饰的变量.被final修饰的形参,第一次赋值是在调用它所在的函数时,不能再次赋值了.被final修饰的引用类型变量,不能在指向其他对象,但是他第一次指向的对象中的内容是可以改变的.final 只是修饰了引用.public static final 修饰的变量时全局变量,可以使用类名调用,名字全部大写3.22模板设计模式1.什么是模板设计模式在编程的过程当中, 如果经常要做一些类似的事, 其中某些步骤相同, 有些步骤不同, 这是就可以使用模板设计模式2.怎么使用模板设计模式定义一个抽象类定义一个final的方法在方法中写出每次相同的步骤, 不同的步骤写成抽象方法, 调用抽象方法每次实现不同的步骤时, 定义子类继承抽象类, 重写抽象方法即可, 相同的步骤无需重写直接调用final方法3.23接口1.什么是接口接口是一种特殊的抽象类2.接口和抽象类的区别抽象类用abstract class定义, 接口用interface定义抽象类中可以有不抽象的方法, 接口中所有方法都是抽象的抽象类用extends继承, 接口用implements实现抽象类可以继承抽象类, 接口可以继承接口抽象可以继承接口,接口不能继承抽象因为抽象类里面有可能会有非抽象方法..抽象类中的方法没有默认修饰符, 接口中的方法默认是public abstract修饰的抽象类中的成员变量没有默认修饰符, 接口中的成员变量默认是public static final 修饰的一个类只能继承一个抽象类, 一个类可以实现多个接口3.什么时候用抽象类, 什么时候用接口能用接口的时候就不用抽象类(没有任何不抽象的方法), 因为接口不占用继承位置如果需要定义不抽象的方法, 那么就必须使用抽象类.3.24 策略设计模式定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Created by AIwen on 2017/5/14.java是面向对象的程序设计语言;类可被认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都是引用变量,它们将会引用到类的对象。

类用于描述客观世界里某一类对象的共同特征,而对象则是类的具体存在,java程序使用类的构造器来创建该类的对象。

java也支持面向对象的三大特征:封装、继承、和多态。

java提供了private、protected、和public三个访问控制修饰符来实现良好的封装,提供了extends关键字让子类继承父类,子类继承父类就可以继承到父类的成员变量和和方法,如果访问控制允许,子类实例可以直接调用父类里定义的方法。

继承是实现类复用的重要手段。

使用继承关系来实现复用时,子类对象可以直接赋给父类变量,这个变量具有多态性。

面向对象的程序设计过程中有两个重要的概念:类(Class)和对象(object,也被称为实例,instance)。

类可以包含三种最常见的成员:构造器、成员变量、和方法。

构造器用于构造该类的实例,java语言通过new关键字类调用构造器,从而返回该类的实例。

构造器是一个类创建对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例。

因此java语言提供了一个功能:如果程序员没有为一个类编写构造器,则系统会为该类提供一个默认的构造器,这个构造器总是没有参数的。

一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器。

构造器用于对类实例进行初始化操作,构造器支持重载,如果多个重载的构造器里包含了相同的初始化代码,则可以把这些初始化代码放置在普通初始化块里完成,初始化块总在构造器执行之前被调用。

静态初始化块代码用于初始化类,在类初始化阶段被执行。

如果继承树里某一个类需要被初始化时,系统将会同时初始化该类的所有父类。

构造器修饰符:可以是public、protected、private其中之一,或者省略构造器名:构造器名必须和类名相同。

注意:构造器既不能定义返回值类型,也不能使用void声明构造器没有返回值。

如果为构造器定义了返回值类型,或使用void声明构造器没有返回值,编译时不会出错,但java会把这个所谓的构造器当成方法来处理——它就不再是构造器。

实际上类的构造器是有返回值的,当使用new关键字来调用构造器时,构造器返回该类的实例,可以把这个类的实例当成构造器的返回值。

因此构造器的返回值类型总是当前类,无须定义返回值类型。

不要在构造器里显式的使用return来返回当前类的对象,因为构造器的返回值是隐式的。

java类名必须是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。

成员变量:成员变量的修饰符:public、protected、private、static、final前三个只能出现一个再和后面的修饰符组合起来修饰成员变量,也可省略。

成员变量:由一个或者多个有意义的单词连缀而成,第一个单词首字母小写,后面每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。

类型:可以是java语言允许的任何数据类型,包括基本类型和引用类型。

成员方法:方法修饰符:public、protected、private、static、final、abstract,前三个只能出现一个,static和final最多只能出现其中的一个,和abstract组合起来使用。

也可省略。

返回值类型:可以是java语言的允许的任何数据类型,包括基本类型和引用类型。

方法名:和成员变量的方法命名规则相同,通常建议方法名以英文动词开头。

方法体里多条可执行语句之间有严格的执行顺序,排在方法体前面的语句总先执行,排在方法体后面的语句总是后执行。

static是一个特殊的关键字,它可用于修饰方法、成员变量等成员。

static修饰的成员表明它属于这个类本身,而不属于该类的单个实例,因此通过把static修饰的成员变量和方法被称为类变量、类方法(静态成员变量,静态成员方法);不使用static修饰的成员变量和方法称为实例变量和实例方法(非静态成员变量,非静态成员方法)。

静态成员不能直接访问非静态成员。

static的真正作用就是用于区分成员变量、方法、内部类、初始化块,这四种成员到底属于类本身还是属于实例。

有static修饰的成员属于类本身,没有类修饰的成员属于该类的实例。

java类大致有如下作用:定义变量创建对象调用类的类方法或访问类的类变量。

定义一个类就是为了重复创建该类的实例,同一个类的多个实例具有相同的特征,而类则是定义了多个实例的共同特征。

类里定义的方法和成员变量都可以通过类或实例来调用。

Static修饰的方法和成员变量,既可通过类来调用,也可通过实例来调用;没有使用static修饰的普通方法成员变量,只可通过实例来调用。

Person p=new Person();这行代码创建了一个Person实例,也被称为Person对象,这个Person对象被赋给p变量。

在这行代码中实际上产生了两个东西,一个是p变量,一个是Person对象。

P引用变量本身只存储了一个地址值,并未包含任何实际数据,但它指向实际的Person对象。

Person对象由多块内存组成,不同内存块分别存储了Person对象的不同成员变量。

类是一种引用数据类型,因此程序中定义的Person类型的变量实际上是一个引用,它被存放在栈内存里,指向实际的Person对象;而真正的Person 对象则存放在堆内存中。

当一个对象被创建成功以后,这个对象将保存在堆内存中,java程序不允许直接访问堆内存中的对象,只能通过该对象的引用操作该对象。

堆内存里的对象可以有多个引用,即多个引用变量指向同一个对象。

如果堆内存里的对象没有任何变量指向该对象,那么程序将无法再访问该对象,这个对象也就变成了垃圾,java垃圾回收机制将回收该对象,释放该对象所占的内存区。

对象的this引用Java提供了一个this关键字,this关键字总是指向调用该方法的对象。

This作为对象的默认引用有两种情形:构造器中引用该构造器正在初始化的对象;在方法中引用调用该方法的对象。

This关键字最大的作用就是让类中一个方法,访问该类里的另一个方法或者实例变量。

Java允许对象的一个成员直接调用另一个成员,可以省略this 前缀。

如果在static修饰的方法中使用this关键字,则这个关键字就无法指向合适的对象,所以,static修饰的方法中不能使用this引用。

Java编程时不要使用对象去调用static修饰的成员变量、方法、而是应该使用类去调用static修饰的成员变量、方法。

如果确实需要在静态方法中访问另一个普通方法,则只能重新创建一个对象。

大部分的时候,普通方法访问其他方法、成员变量时无须使用this前缀,但如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用this前缀。

This引用也可以用于构造器中作为默认引用,由于构造器时直接使用new关键字来调用,而不是使用对象来调用的,所以this在构造器中代表该构造器正在初始化对象。

方法:Java里的方法不能独立存在,所有的方法都必须定义在类里。

如果这个方法是用来static修饰,则这个方法属于这个类,否则这个方法属于这个类的实例。

执行方法时,必须使用类或者对象作为调用者。

同一个类的一个方法调用另外一个方法时,如果被调方法是普通方法,则默认使用this作为调用者;如果被调用方法是静态方法,则默认使用类作为调用者。

也就是说java中看起来某些方法可以被独立执行,但实际上还是使用this或者类来作为调用者。

Java里方法参数传递方式只有一种:值传递。

所谓值传递,就是讲实际参数值的副本(复制品)传入方法内,而参数本身不会受到任何影响。

从JDK1.5之后,java允许定义形参个数可变的参数,从而允许为方法指定数量不确定的形参。

如果在定义方法时,在最后一个形参的类型后增加三点(…),则表明该形参可以接受多个参数值,多个参数值被当成数组传入。

长度可变的形参。

方法重载:Java允许同一个类里定义多个同名方法,只要形参列表不同就行。

如果同一个类中包含了两个或两个以上方法的方法名相同,但形参列表不同,则被称为方法的重载。

Java程序确定一个方法需要三个要素:调用者;方法名;形参列表。

Java中变量分为:成员变量和局部变量。

成员变量被分为类变量和实例变量两种,定义成员变量时没有static修饰的就是实例变量,有static修饰的就是类变量。

●变量的命名:从程序的可读性角度来看,应该是多个有意义的单词连缀而成,其中第一个单词首字母小写,后面每个单词首字母大写。

●如果通过一个实例修改了类变量的值,由于这个类变量并不属于它,而是属于它对应的类。

因此,修改的依然是类变量,与通过该类来修改类变量的结果完全相同,这会导致该类的其他实例来访问这个类变量时也将获得这个被修改过的值。

●成员变量无须显式初始化,只要为一个类定义了类变量或实例变量,系统就会在这个类的初始化阶段或创建该类的实例时,进行默认初始化。

●实例变量随实例的存在而存在,而类变量则随类的存在而存在。

实例也可访问类变量,同一个类的所有实例访问类变量时,实际上访问的是该类本身的同一个变量,也就是说,访问了同一片内存区。

●局部变量根据定义形式的不同,又可分为三种形式:形参,方法局部变量,代码块局部变量;局部变量除了形参之外,都必须显示初始化。

●在同一个类里,成员变量的作用范围是整个类内有效,一个类里不能定义两个同名的成员变量,即使一个是类变量,一个是实例变量也不行;一个方法里不能定义两个同名的方法局部变量,方法局部变量与形参也不能同名;同一个方法中不同代码块内局部变量可以同名;如果先定义代码块局部变量,后定义方法局部变量,前面定义的代码块局部变量与后面定义的方法局部变量也可同名.●Java允许局部变量和成员变量同名,如果方法里的局部变量和成员变量同名,局部变量会覆盖成员变量,如果需要在这个方法里引用被覆盖的成员变量,则可使用this(对于实例变量)或类名(对于类变量)作为调用者来限定访问成员变量。

public class VariableOverrideTest {//定义一个name实例变量private String name="李刚";//定义一个price类变量private static double price=78.0;public static void main(String[] args){//方法里局部变量覆盖成员变量,将输出price的局部变量65int price=65;System.out.println(price);//使用类名作为price变量的限定,将输出price类变量的值System.out.println(VariableOverrideTest.price);new VariableOverrideTest().info();}public void info(){//方法里的局部变量,局部变量覆盖成员变量,输出name局部变量的值:孙悟空String name="孙悟空";System.out.println(name);//将输出name实例的值:李刚System.out.println();}}当系统加载类或创建该类的实例时,系统自动为成员变量分配内存空间,并在分配内存空间后,自动为成员变量指定初始值。

相关文档
最新文档