Java基础

合集下载

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基础ppt课件

java基础ppt课件

03
封装
将对象的属性和方法封装 在类中,隐藏内部实现细 节,仅通过对外提供的接 口进行访问和操作。
继承
子类可以继承父类的属性 和方法,实现代码复用和 扩展。
多态
子类可以重写父类的方法 ,实现同一方法在不同对 象上的不同表现。
接口与抽象类
接口的定义
接口是一种引用类型,用于定义一组 方法的规范,但不包含方法的实现。
抛出自定义异常
在方法中,可以使用throw语句抛出自定义异常。抛出异常时,需要创建一个异 常对象并将其抛出。
异常处理的最佳实践
尽量避免异常
合理使用try-catch语句
保持异常的原子性
提供有意义的错误信息
应该尽量编写健壮的代码,避 免出现异常。例如,进行空值 检查、范围检查等。
不要过度使用try-catch语句, 只在必要时使用。对于可以预 见的异常情况,应该尽量在代 码中处理,而不是依赖于trycatch语句。
可以使用多个catch语句来处理不同类型的异常 ,每个catch语句处理一种特定的异常类型。
自定义异常
创建自定义异常类
可以通过继承Exception类或RuntimeException类来创建自定义异常类。继承 Exception类创建的是检查型异常,而继承RuntimeException类创建的是非检查 型异常。
丰富的API
Java语言提供了大量的API, 涵盖了IO、网络编程、数据库 操作、图形界面开发等方面。
Java语言的应用领域
Web开发
Java语言在Web开发领域有着广泛的应用 ,如Servlet、JSP、Struts等框架。
游戏开发
Java语言也可以用于游戏开发,如 Minecraft等游戏就是使用Java语言开发 的。

java基础知识大全(必看经典)

java基础知识大全(必看经典)

第一讲 Java语言入门1.1 Java的特点1.1.1面向对象:•与C++相比,JAVA是纯的面向对象的语言C++为了向下兼容C,保留了很多C里面的特性,而C,众所周知是面向过程的语言,这就使C++成为一个"混血儿"。

而JAVA语法中取消了C++里为兼容C所保留的特性,如取消了头文件、指针算法、结构、单元等。

1.1.2可移植(平台无关性):•生成中间字节码指令与其他编程语言不同,Java并不生成可执行文件(.exe文件),而是生成一种中间字节码文件(.class文件)。

任何操作系统,只要装有Java虚拟机(JVM),就可以解释并执行这个中间字节码文件。

这正是Java实现可移植的机制。

•原始数据类型存储方法固定,避开移植时的问题Java的原始数据类型的大小是固定的。

比如,在任何机器上,整型都是32位,而C++里整型是依赖于目标机器的,对16位处理器(比如8086),整数用两个字节表示;在像Sun SPARC这样的32位处理器中,整数用4个字节表示。

在Intel Pentium处理器上,整数类型由具体的操作系统决定:对于DOS和Win32来说,整数是2个字节;对于Windows 9x 、NT和2000,整数是4个字节。

当然,使整数类型平台无关之后,性能必然有所下降,但就Java来说,这个代价是值得的。

Java的字符串,则采用标准的Unicode格式保存。

可以说,没有这个特性,Java的可移植性也不可能实现。

1.1.3简单•JAVA在语法上与C++类似JAVA的语法与C++很接近,有过C或者C++编程经验的程序员很容易就可以学会JAVA语法;•取消了C++的一些复杂而低效的特性比如:用接口技术代替了C++的多重继承。

C++中,一个类允许有多个超类,这个特性叫做"多重继承",多重继承使得编译器非常复杂且效率不高;JAVA 的类只允许有一个超类,而用接口(Interface)技术实现与C++的多继承相类似的功能其它被取消的特性包括:虚拟基础类、运算符过载等•JAVA的基本解释器和类支持模块大概仅40K即使加入基本的标准库和支持线程的模块,也才220K左右。

java面试题基础篇

java面试题基础篇

java面试题基础篇当涉及Java 面试的基础篇时,以下是一些常见的问题和主题,供你进行复习和准备:1. Java 基础:-什么是Java 编程语言?Java 的特点是什么?- Java 的数据类型有哪些?基本数据类型和引用数据类型有什么区别?-解释一下Java 的封装、继承和多态。

-什么是类和对象?如何创建类和对象?-什么是构造方法?它有什么作用?-什么是方法重载和方法重写?-解释一下静态变量和实例变量的区别。

-什么是接口和抽象类?它们之间的区别是什么?2. 面向对象设计:-什么是SOLID 原则?分别解释每个原则的含义。

-什么是设计模式?举例说明几个常用的设计模式。

-什么是单例模式?如何实现线程安全的单例模式?-什么是工厂模式和抽象工厂模式?3. 异常处理:-什么是异常?Java 中的异常处理机制是什么?-解释一下try-catch-finally 块的工作原理。

-什么是运行时异常和受检异常?4. 集合框架:-介绍Java 的集合框架。

ArrayList 和LinkedList 的区别是什么?-什么是Map 接口?HashMap 和TreeMap 的区别是什么?-什么是迭代器?如何使用迭代器遍历集合?5. 线程与并发:-什么是线程?如何创建和启动一个线程?-解释一下同步和异步,阻塞和非阻塞。

-什么是线程安全?如何避免线程安全问题?-什么是死锁?如何避免死锁?6. IO 操作:-什么是输入流和输出流?-解释一下字节流和字符流的区别。

-什么是序列化和反序列化?7. Java 虚拟机(JVM):-什么是JVM?JVM 的主要组成部分是什么?-什么是垃圾回收?Java 中的垃圾回收机制是什么?8. 基础算法和数据结构:-解释一下栈和队列。

-什么是哈希表(HashTable)?如何解决哈希冲突?-什么是递归?递归的应用和注意事项是什么?这只是一些常见的Java 面试基础题目,你可以根据实际情况进行深入的学习和准备。

java程序设计基础第三版

java程序设计基础第三版

java程序设计基础第三版Java程序设计基础第三版Java是一种广泛使用的编程语言,以其跨平台的特性、面向对象的特性、健壮性、安全性和性能而闻名。

《Java程序设计基础》第三版是对Java语言的深入介绍,适合初学者和有一定编程基础的读者。

本版书籍在前两版的基础上,更新了Java语言的最新发展,并增加了一些实用的编程技巧。

第一章:Java语言概述Java语言由Sun Microsystems公司(现为Oracle公司)在1995年发布。

Java是一种纯面向对象的语言,这意味着在Java中,所有的数据都是对象。

Java的设计哲学是“一次编写,到处运行”(Write Once, Run Anywhere),这得益于它的虚拟机(JVM)技术。

第二章:Java开发环境搭建在开始Java编程之前,需要安装Java开发工具包(JDK),并配置环境变量。

此外,还可以使用集成开发环境(IDE)如Eclipse或IntelliJ IDEA来提高开发效率。

第三章:基本语法Java的基本语法包括数据类型、变量、运算符、控制语句等。

Java是强类型语言,所有变量在使用前必须声明其类型。

Java提供了丰富的控制语句,如if-else、switch、while、for等。

第四章:面向对象编程面向对象编程(OOP)是Java的核心特性。

本章介绍了类和对象的概念,以及如何使用类来封装数据和行为。

此外,还介绍了继承、多态和接口等OOP的基本概念。

第五章:数组和字符串数组是Java中存储固定大小的同类型元素的集合。

字符串是字符的序列,Java提供了String类来处理字符串,包括字符串的创建、连接、比较等操作。

第六章:集合框架Java集合框架提供了一套接口和类,用于存储和操作对象集合。

包括List、Set、Map等接口,以及ArrayList、HashSet、HashMap等实现类。

第七章:异常处理Java使用异常处理机制来处理程序运行时出现的错误。

Java基础知识

Java基础知识

在程序中操作对象是类的一个实例 即对象 在程序中操作对象是类的一个实例:即对象 创建一个对象 Hello obj=new Hello(); 调用方法 obj.showString("Hello World!")
11
1.1 有关面向对象的概念 什么是封装 什么是封装? 封装把对象的所有组成部分组合在一起,封 封装把对象的所有组成部分组合在一起, 装定义程序如何引用对象的数据, 装定义程序如何引用对象的数据,封装实际
}
15
1.1 有关面向对象的概念 什么是方法的重载 多态性 ? 什么是方法的重载(多态性 多态性)? 在同一个类中至少有两个方法用同一个名字, 在同一个类中至少有两个方法用同一个名字, 但有不同的参数. 但有不同的参数.
123
void show(int int_num) void show(double double_num) void show(nit nit_ um, float float_um)
25
1.6 Java中的字符串 中的字符串 StringBuffer的字符串的内容是可以改变的 的字符串的内容是可以改变的 创建StringBuffer对象 创建 对象 StringBuffer str=new Stringbuffer("hello"); 获取StringBuffer对象的信息 获取 对象的信息 int len=str.length();
20
1.4 你的第一个 你的第一个Java程序 程序
21
1.5 Java类型系统 类型系统
Java type system
primitive
reference
null
char integral
numeric

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)。

第1页,共4页 第2页,共4页
《Java 基础知识》考试试卷
适用专业:Java 方向 考试方式:闭卷 考试时间:150分钟 -------------------------------------------------------------- 一、选择题(每小题1分,共计20分)
1、设 x = 1 , y = 2 , z = 3,则表达式y +=z --/++x 的值是( )。

A. 3
B. 3. 5
C. 4
D. 5
2、下列数据中属于整型常量的是( )。

A .1L B. "34" C. '1' D. 2F
3、下列各 项中正确的标识符是( )。

A .#bb B. 4_ sum C. b_4 D. for
4、下面的选项中,哪一项不属于"汽车类"的行为( )。

A 、启动
B 、刹车
C 、减速
D 、速度
5、设a 的值为5,执行下列语句后,b 的语句不为2的是( )。

A .b=a/2 B .b=6-(--a) C .b=a%2 D. b=a-3
6、设有语句int a=3;,则执行了语句a+=a-=a*a;后,表达式的值为( )。

A .3 B .0 C .9 D .-12
7、下列关于Java 语言特点的叙述中,错误的是( )。

A 、Java 支持源程序"一次编写,到处运行"
B 、Java 是面向过程的编程语言
C 、Java 是跨平台的编程语言
D 、Java 支持多线程
8、修饰符定义的变量值不能改变( )
A. static
B. abstract
C. final
D. native
9、有以下程序片段,下列哪个选项不能插入到行1。

( )
1)
2)public class Interesting{ 3)//do sth 4)}
A.import java.awt.*;
B.package mypackage;
C.class OtherClass{ }
D.public class MyClass{ }
10、下列选项中不属于基本数据类型的是( )。

A 、 byte
B 、boolean
C 、Integer
D 、char
11、System.out.println("5" + 2+2);的输出结果应该是( )。

A 、54
B 、522
C 、9
D 、52
12、判断字符串a 是否等于字符串b ,应当使用( )。

A .if(a=b)
B .if(a.equals(“b ”))
C .if(a.equals(b))
D .if(a==b)
13、下面定义数组的语句错误的是( )。

A 、String [ ] str;
B 、String str [ ];
C 、char [ ] [ ] str;
D 、char str[2][5];
14、那些方法不可以使线程进入阻塞状态?( )。

A sleep
B 等待IO 资源
C notify
D wait
15、int a =10 ;
Float b =12.2; b+=a;
以下那个结果是正确的()
A 10
B 12.2
C 22
D 22.2
16、执行如下程序代码后,C 的值是()
a=0;c=0; do{ --c; a=a-1;
}while(a>0);
A .0
B .1
C .-1
D .死循环
密 封
线

订 线
17、下列语句哪一个正确()
A. Java程序经编译后会产生machine code
B. Java程序经编译后会产生byte code
C. Java程序经编译后会产生DLL
D.以上都不正确
18、为AB类的一个无形式参数无返回值的方法method书写方法头,使
得使用类名AB作为前缀就可以调用它,该方法头的形式为( )。

A. static void method( )
B. public void method( )
C. final void method( )
D. abstract void method( )
19、在Java中,关于final关键字的说法正确的是()
A、如果修饰变量,则一旦赋了值,就等同一个常量
B、如果修饰类,则该类只能被一个子类继承
C、如果修饰方法,则该方法能在子类中被覆盖
D、如果修饰方法,则该方法所在的类不能被继承
20、下列哪一种叙述是正确的()
A. abstract修饰符可修饰字段、方法和类
B.抽象方法的body部分必须用一对大括号{ }包住
C.声明抽象方法,大括号可有可无
D.声明抽象方法不可写出大括号
二、填空题(每题2分,共计20分,错一空该题不得分)
1、定义类用的关键字是class;继承类用的关键子是____________;实
现接口用的关键字是_______________。

2、线程的五种状态分别是产生就绪 _______ _______ 结束。

3、开发与运行JAVA程序需要经过的三个主要步骤为编写源程序 ,
_____________和 ______________。

4、JAVA中类成员的限定词有以下几种:public , __________ ,默认和private。

其中, __________ 的开放范围最小。

5、在面向对象概念中,每个对象都是由______和______两个最基本的部
分组成的。

6、break语句与循环语句搭配使用时,其作用是________。

7、面向对象的三大特征分别是继承, ______ 和 ________。

8、java网络等待客户端的链接是哪个方法 __________。

9、创建线程的两种方式。

_________________和________________.
10、若有定义:int x=3,y=2;float a=2.5,b=3.5;则表达式(x+y)%2+a/b
的值为_______。

三、问答题(每小题4分,共计20分)
1.final和finally的区别?
2. Overload和Override的区别。

Overloaded的方法是否可以改变返回值的类型?
3.List和Set的区别,Vector和ArrayList的区别,以及 HashMap和Hashtable的区别。

4.写一个单子模式。

谈谈你对单子模式的理解。

5.请写出常用的异常(至少写出8个)
五、编程题(第1题8分,第2、3题各10分,第3题12分,共计40分)
1、题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

(9分)
2、题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
3、题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘了多少。

4、题目:打印出杨辉三角形(要求打印出10行如下图)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
第3页,共4页第4页,共4页。

相关文档
最新文档