JAVA语言程序设计基础笔记

合集下载

《数据结构与问题求解:Java语言描述》笔记

《数据结构与问题求解:Java语言描述》笔记

《数据结构与问题求解:Java语言描述》阅读笔记目录一、内容综述 (2)1. 本书简介与背景介绍 (3)2. 本书阅读目的与预期成果 (4)二、基础概念与预备知识 (5)1. 数据结构定义与重要性 (7)2. 算法概念及其与数据结构的关系 (9)3. Java语言基础语法回顾 (9)4. 预备知识 (11)三、数据结构概述 (13)1. 数据结构的分类与特点介绍 (14)2. 数据结构的选择与应用场景分析 (16)四、线性数据结构 (18)1. 数组的概念与应用 (20)2. 链表的概念与应用 (20)3. 队列和栈的概念与应用 (22)4. 线性数据结构的性能分析 (23)五、非线性数据结构 (25)1. 树形数据结构概述 (26)2. 二叉树及其相关操作与应用实例分析讲解 (27)3. 图论中的基本概念及图的表示方法介绍等 (28)一、内容综述《数据结构与问题求解:Java语言描述》是一本关于数据结构和算法的经典教材,作者是Robert Sedgewick和Kevin Wayne。

本书以Java语言为实现工具,详细介绍了数据结构的基本概念和常用算法,以及如何将这些概念和算法应用于实际问题。

全书共分为5章,分别是基本数据结构、排序算法、图论、动态规划和高级数据结构。

第1章主要介绍了基本数据结构,包括线性表、栈和队列等。

线性表包括顺序表、链表和树表等,讲解了它们的基本操作和应用场景。

栈和队列分别介绍了它们的抽象数据类型、操作方法和应用实例。

第2章主要介绍了排序算法,包括冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序等。

每种排序算法都详细讲解了其原理、实现过程和优缺点,以及在不同场景下的应用。

第3章主要介绍了图论的基本概念和常用算法,如图的表示、遍历、最短路径算法(Dijkstra算法、FloydWarshall算法)、最小生成树算法(Kruskal算法、Prim算法)等。

还介绍了图的一些扩展概念,如带权有向图、带权无向图、加权图等。

第三章JAVA语言基础笔记

第三章JAVA语言基础笔记

Java语言基础本章的主要目标:1、了解java的主类的结构;2、了解java语言中的基本数据类型;3、了解java语言中的常量和变量;4、了解java语言运算符的使用;5、了解java语言数据类型的转换;6、了解java语言中代码注释与编码规范;Java主类结构Java语言是面向对象的程序设计语言,java的基本组成单元就是类,类体又包括属性和方法,而每一个程序都必须包含一个main()方法,含有main()方法的类称之为主类;我们用一个程序来看一下主类的结构:public class First{static String s1=”java”;public static void main(String args[]){String s2=”学习之旅!”;System.out.println(“s1”);System.out.println(“s2”);}}这就是一个简单的java程序,包含了类的结构;需要注意的是,java代码中所有的标点符号,括号都是需要在英文状态下输入;否则在编译的时候将会报错;通常将类的属性称之为类的全局变量(又叫成员变量),将方法中的属性称之为局部变量;全局变量声明在类体中,局部变量声明在方法体中;Java程序中的main()方法必须声明为public staticvoid 。

main()方法是程序开始执行的位置;Java语言严格区分大小写;基本数据类型Java中的基本数据类型有字符和数字之间可以相互转换;在程序执行过程中,其值不能改变的量称为常量,其值能改变的量称之为变量;Java语言规定标识符由任意顺序的字母、下划线、美元符号、和数字组成,并且第一个字符不能使数字字符;Java中允许使用汉字或其他语言作为变量名,但不建议使用;常量名通常使用大写字母,但这并不是必须的,很多java程序员使用大写字母表示常量,常常是为了清楚的表明正在使用常量;由于变量被定义出来后只是暂存在内存中,等到程序执行到某一个点后,该变量会被释放掉,也就是说变量有他的生命周期;在一个方法中,局部变量和成员变量同名时,此时成员变量将被隐藏,即这个成员变量在这个方法中暂时失效;如果从低精度类型向高精度类型转换,则永远不会溢出,并且总是成功的;把高精度类型转换为低精度类型则必然会有信息的丢失;从低精度类型向高精度类型转换,系统自动执行,程序员无需进行任何操作,这种类型的转换又叫隐式转换,从高进度类型向低精度类型转换,则需要强制执行,又叫强制类型转换,又称显示转换;当一个数超过了要转换的类型的最大值,则转会后的数值则会变为最小值,这也可以理解为数据的溢出;代码注释分为单行、多行、和文档注释;编码规范,简言之就是利人利己;。

狂神说Java--Java学习笔记(基础合集)

狂神说Java--Java学习笔记(基础合集)

狂神说Java--Java学习笔记(基础合集)笔记参考来源狂神说Java视频https:///video/BV12J41137hu 本篇笔记有点长,可以根据⽬录定位,建议配合视频学习。

预科什么是计算机1. 名称:Computer,全称电⼦计算机,俗称电脑。

2. 定义:能够按照程序运⾏,⾃动、⾼速处理海量数据的现代化智能电⼦设备。

3. 组成:由硬件和软件组成。

4. 形式:常见显⽰有台式计算机、笔记本计算机、⼤型计算机等。

5. 应⽤:科学计算、数据处理、⾃动控制、计算机辅助设计、⼈⼯智能、⽹络等领域。

硬件及冯诺依曼结构计算机硬件组成:CPU,主板,内存,电源,主机箱,硬盘,显卡,键盘、⿏标,显⽰器。

冯诺依曼结构软件及软件开发计算机软件Windows常⽤快捷键Alt+f4关闭窗⼝ Shift+Delete永久删除 ctrl+w⾃动保存死机:任务管理器结束进程基本的Dos命令打开CMD的⽅式1. 开始+系统+命令提⽰符2. win键+R+输⼊cmd (推荐使⽤)3. 在任意的⽂件夹下,按住Shift键+⿏标右击,打开命令⾏窗⼝4. 在资源管理器地址栏路径前⾯加 “cmd ”5. 管理员运⾏⽅式:命令提⽰符右键以管理员⾝份运⾏(最⾼权限运⾏)常⽤的Dos命令# 盘符切换 E:# 查看当前⽬录下所有⽂件 dir# 切换⽬录 cd /d E:\idea# 返回上⼀级⽬录 cd ..# 进⼊同级⽬录下的下⼀级⽬录 cd tmp(该⽬录下的⽂件名)# 清屏 cls (clear screen)# 退出终端 exit# 查看电脑当前IP地址 ipconfig# 打开计算器 calc# 打开画图 mspaint# 新建记事本 notepad# 在当前⽬录新建⽂件夹 md test(⽂件夹名)# 新建⽂件 cd> a.txt(⽂件名)# 删除⽂件 del a.txt(⽂件名)# 删除⽬录 rd test(⽬录名)# ping命令(复制链接进⼊Dos直接单击⿏标右键粘贴)ping 计算机语⾔发展史第⼀代语⾔:机器语⾔第⼆代语⾔:汇编语⾔第三代语⾔:⾼级语⾔⾼级语⾔C、C++、Java、C#、Python、PHP、JavaScript …⼤体上分为:⾯向过程与⾯向对象两⼤类C语⾔是典型的⾯向过程的语⾔,C++,Java是典型的⾯向对象的语⾔Java⼊门Java帝国的诞⽣Java特性与优势简单性⾯对对象可移植性⾼性能分布式多态性多线程安全性健壮性Java三⼤版本Write Once,Run AnywhereJavaSE: 标准版 (桌⾯程序,控制台开发…)JavaME: 嵌⼊式开发 (⼿机,⼩家电…),已经凉了JavaEE: E企业级开发 (Web端,服务端开发…),JavaSE为基础JDK JRE JVMJDK:Java Development Kit (Java开发者⼯具,包括 JRE,JVM)JRE:Java Runtime Environment (Java运⾏时环境)JVM:Java Virtual Machine (Java虚拟机,跨平台核⼼)安装开发环境卸载JDk1. 删除Java安装⽬录2. 删除环境变量JAVA_HOME3. 删除path下关于JAVA的⽬录4. Java -version安装JDK1. 百度搜索JDK8,找到下载地址2. 同意协议,下载电脑对应的版本,如64位操作系统下载 jdk-8u281-windows-x64.exe3. 双击安装JDK4. 记住安装路径5. 配置环境变量1. 我的电脑-》属性-》系统⾼级设置-》环境变量2. 系统变量新建–> JAVA_HOME 输⼊对应的jdk安装路径3. path变量–>% JAVA_HOME%\bin6. 测试是否成功 cmd–>Java -versionJava基础注释1. 单⾏注释 //2. 多⾏注释 /* */3. ⽂档注释 /** */标识符和关键字Java 所有的组成部分都需要名字。

黑马程序员_javaweb讲义和笔记资料

黑马程序员_javaweb讲义和笔记资料

黑马程序员_javaweb讲义和笔记资料一、简介黑马程序员是一家专业的IT培训机构,提供全面的编程技术培训服务。

javaweb是其中的一门重要课程,本文为黑马程序员_javaweb讲义和笔记的资料整理。

二、javaweb基础知识1. Java语言概述Java语言的特点和优势,Java开发环境的搭建等。

2. Servlet技术Servlet的基本概念、生命周期、Servlet容器等。

3. JSP技术JSP的基本语法、JSP指令、JSP内置对象等。

4. MVC设计模式MVC设计模式在javaweb开发中的应用和实践。

三、javaweb开发流程1. 需求分析分析项目需求,明确开发目标和功能要求。

2. 数据库设计设计数据库表结构,确定数据存储方式和关系。

3. 技术选型根据项目需求和开发要求,选择合适的技术框架和工具。

4. 编码实现使用Java语言和相关技术进行编码实现。

5. 测试调试运行和调试项目,确保功能的正确性和稳定性。

6. 部署上线将项目部署到服务器上线,提供给用户访问和使用。

四、javaweb开发常用框架和工具1. Spring框架Spring框架的介绍和核心特性,以及在javaweb开发中的应用。

2. SpringMVC框架SpringMVC框架的详细讲解,包括请求映射、数据绑定、视图解析等。

3. MyBatis框架MyBatis框架的使用方法和技巧,以及与数据库的集成。

4. Maven工具Maven的基本使用和配置,常用插件介绍。

五、javaweb开发中的常见问题和解决方案1. 数据库连接异常分析数据库连接异常的原因和解决方法。

2. 页面跳转问题页面跳转的实现方式和常见错误排查。

3. 表单数据验证表单数据验证的常用技术和插件,提高数据输入的准确性和安全性。

4. 性能优化优化javaweb应用的性能,减少响应时间和资源占用。

六、实例项目提供一个实例项目,通过对该项目的讲解和分析,帮助学员理解和掌握javaweb开发的方法和技巧。

JAVA编程思想笔记

JAVA编程思想笔记

客户/服务器计算技术大概占了所有程序设计行为的一半。 2、Web 就是一台巨型服务器 Web 发展过程:1、简单单向过程(对服务器产生一个请求,它返回一个文件,浏览器软 件根据本地机器的格式解读文件);2、客户可以将信息反馈给服务器;3、客户机执行运算任 务 客户端浏览器运行程序的能力,这被称为“客户端编程” 1.13.2 客户端编程 Web 最初的“服务器-浏览器”设计是为了能够提供交互性的内容,但是交互性完全由服 务器提供。服务器产生静态页面,提供给只能解释并显示它们的客户端浏览器。HTML 包含有 简单的数据收集机制:文本输入框、复选框、单选框、列表和下拉式列表以及按钮——它只 能被编程来实现复位表单上的数据或提交表单上的数据给服务器。这种提动作通过所有的 Web 服务器都提供的通用网关接口(common gateway interface,CGI)传递。提交内容会告诉 CGI 应该如何处理它。 可以通过 CGI 做任何事情。CGI 程序复杂而难以维护,并同时响应时间过长的问题。响 应时间依赖于所必须发送的数据量的大小,以及服务器和 Internet 的负载。 问题的解决方法就是客户端编程。意味着:Web 浏览器能用来执行任何它可以完成的工 作,使得返回给用户的结果各加迅捷,而且使得网站更加具有交互性。 客户端编程的问题是:它与通常意义上的编程十分不同,参数几乎相同,而平台却不同。 Web 浏览器就像一个功能受限的操作系统。 1、插件(plug-in) 插件的价值在于:它允许专家级的程序员不需经过浏览器生产厂家的许可,就可以开发 某种语言的扩展,并将它们添加到服务器中。提供了一个“后门”,使得可以创建新的客户端 编程语言。 2、脚本语言(scripting language) 通过使用脚本语言,可以将客户端程序的源代码直接嵌入到 HTML 页面中,解释这种语言 的插件在 HTML 页面被显示时自动激活。优点是易于理解,因为它只是作为 HTML 页面一部分 的简单文本,当服务器收到要获取该页面的请求时,它们可以被快速加载。缺点是代码会暴 露给任何人去浏览(或窃取)。 JavaScript 语言优缺点。用于创建更丰富、更具有交互性的图形化用户界面(graphic user interface,GUI)。 3、Java Java 是通过 applet 以及使用 Java Web Start 来进行客户端编程。 4、备选方案 Macromedia 的 Flex,允许创建基于 Flash 的与 applet 相当的应用。ActionScript 语言 是基于 ECMAScript 的,Flex 使得在编程时无需担心浏览器的相关性,因此远比 JavaScript 要吸引人得多。值得考虑的备选方案。 5、.NET 和 C# 它要求客户端必须运行 Windows 平台。 6、Internet 和 Intranet

Java从入门到精通(第6版)

Java从入门到精通(第6版)

第16章反射与注解
16.1反射 16.2 Annotation注解功能 16.3实践与练习
第17章数据库操作
17.1数据库基础 17.2 JDBC概述 17.3 JDBC中常用的类和接口 17.4数据库操作 17.5实践与练习
第18章 Swing程序设计
18.1 Swing概述 18.2 Swing常用窗体 18.3常用布局管理器 18.4常用面板 18.5文字标签组件与图标 18.6按钮组件 18.7列表组件 18.8文本组件 18.9表格组件
第19章 Java绘图
19.1 Java绘图类 19.2绘制图形 19.3绘图颜色与画笔属性 19.4绘制文本 19.5显示图片 19.6图像处理 19.7实践与练习
第20章多线程
20.1线程简介 20.2创建线程 20.3线程的生命周期 20.4操作线程的方法 20.5线程的优先级 20.6线程同步 20.7实践与练习
Java从入门到精通(第6版)
读书笔记模板
01 思维导图
03 读书笔记 05 目录分析
目录
02 内容摘要 04 精彩摘录 06 作者介绍
思维导图
本书关键字分析思维导图
语言
实例
实践 类
数据库
对象
概述
第版

程序 设计
基础
注释
第章
接口
方法
类型
结构
文本
内容摘要
内容摘要
《Java从入门到精通(第6版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细讲解了 使用Java语言进行程序开发需要掌握的知识。全书分为23章,内容包括初识Java,熟悉Eclipse开发工具,Java 语言基础,流程控制,数组,类和对象,继承、多态、抽象类与接口,包和内部类,异常处理,字符串,常用类 库,集合类,枚举类型与泛型,lambda表达式与流处理,I/O(输入/输出),反射与注释,数据库操作,Swing 程序设计,Java绘图,多线程,网络通信,奔跑吧小恐龙,MR人脸识别打卡系统。书中所有知识都结合具体实例 进行讲解,涉及的程序代码都给出了详细的注释,可以使读者轻松领会Java程序开发的精髓,快速提高开发技能。

Java高级学习笔记

Java高级学习笔记

7.泛型<T>
(1)在没有泛型的时候,只要是对象,不管是什么类型,都可以放到一个集合中;使用了泛型以后,可以限定集合中放入元素的类型,只能在集合中存储指定的类型,这样更安全,并且当取一个对象时,编译器可以知道这个对象的类型,不需要在对类型进行强制转换。
(1)BeanUtils通过字符串的方式给属性赋值,内部会自动类型转换,支持复合属性的操作以及javaBean与Map的相互转换,等。
(2)PropertyUtils通过指定具体属性的类型给属性赋值。
Hale Waihona Puke java1.5新特性: 1.静态导入
2.增强for循环(iterable)
3.参数列表(...)
b、class文件: 即经过a阶段后,字节码中还存在的注解,但是在被类加载器加载之前,还需要做一些校验,这时可能需要根据这个注解做出相应的事,
到真正加载到内存中的字节码时,这个注解已经不存在了。所以用反射是等不到这个事先加过的注解。
c、即在内存中还存在的注解。(eg:@Deprecated)
看你加的是什么标记,就去执行相应动作。标记可以加在包、类、字段、方法、方法的参数以及局部的变量上。
(2)你一旦在某个地方加上了@xxx注解,就等于new了一个这个注解的实例对象。我们可以通过反射获得这个注解,结果是一个具体的实例。
(3)注解的结构定义顺序:定义注解@interface----》程序使用定义好的注解-----》解释注解的程序。
10.关于数组的反射:
用Array工具类操作,但是不能直接得到数组元素的类型。
int len = Array.getLength(数组对象);得到数组的长度
Array.get(数组对象, 元素索引).getClass().getName();得到数组里面元素的全包名,从而可得到类型;

Java程序设计基础教程

Java程序设计基础教程

04
9.4形状类
06
9.6 FXML 设计用户界 面
05
9.5事件处 理机制
9.8本章小结
9.7 JavaFX可视化 布局工具
9.9习题
1
10.1数据库概 述
2
10.2 SQL语言 基础
3
10.3 MySQL 数据库简介
4
10.4 Java数 据库编程
5
10.5数据库应 用综合实例
10.6本章小结
4.8 Lambda表达式
4.10习题
01
5.1异常概 述
02
5.2 Java 异常的捕获 和处理
04
5.4自定义 异常类
06
5.6习题
03
5.3 Java 异常的声明 和抛出
05
5.5本章小 结
6.1包装类
6.2 Math类与 Random类
6.3字符串类 6.4日期与时间类
1
6.5集合类
2
6.6泛型
3
6.7反射机制
4
6程简介
7.3线程同步
7.4本章小结
7.5习题
1
8.1输入输出 流概述
2
8.2文件类
3
8.3字节流
4
8.4字符流
5
8.5随机流
8.6本章小结
8.7习题
01
9.1 GUI简 介
02
9.2常用的 UI组件
03
9.3布局面 板
2.7本章小结 2.8习题
3.1类的定义
3.2对象的创建与使 用
3.3访问控制符
3.4 static关键字 的使用
3.5 this关键字的 使用
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、类属性、实例属性的区别*没有static修饰的变量称为实例变量,有static修饰的变量称为类变量(或静态变量)*类变量只属于类本身,不属于对象*类变量在整个类中只有一个值2、静态方法(类方法)*一个静态方法只属于一个类本身,而不属于某个类*静态方法和静态变量的引用直接通过类名引用*在静态方法中不能调用非静态的方法和引用非静态的成员变量,反之则可以可以用类的对象去调用静态的方法3、类成员访问修饰符与访问能力之间的关系*public无约束*protected同一类、子类*default同一类、同一包*private同一类4、方法的重载(overloding)与重写(overriding或overwriting)●方法的重写要求方法签名必须相同,而方法的重载要求方法签名必须不同●方法的重写放回类型必须一致,而方法的重载则没有要求。

●异常也不会影响重载,而重写子类的异常必须与父类一样或属于父类异常的一种或无●方法的重写只局限与子类和父类之间,而方法的重载可以在一个类的所有方法之间●方法的重载对类的修饰没有要求,而方法的重写子类方法的修饰限制一定要比父类的小5、final6、变量的初始化问题*局部变量在定义时必须初始化,如果是方法的形参,则通过调用方法时实参的传递初始化(方法的形参也属于局部变量)*如果是对象的实例变量,则不用必须初始化.系统会默认地为对象的实例变量赋初值,但这样做只能保证程序编译运行正常,而无实际意义.所以一般对象的实例变量要在构造方法中赋初值(boolean默认为false;char默认为?)*作为类成员,只能声明时候初始化,否则就要到方法中初始化7、””和null的区别8、super*特殊变量super提供了对父类的访问*可以使用super访问父类被子类隐藏的变量或覆盖的方法*每个子类的构造方法的第一条语句都隐含调用super();如果父类没有这种形式的构造函数,那么在编译时会报错*构造方法不能被继承只通过super调用9、构造方法*如果父类没有无参的构造方法,那么在子类中就必须声明构造方法且不能声明无参构造方法;这样子类中的就必须显式调用父类中的某个构造方法;个人觉得如果有继承关系的一般属性定义为protected,个人觉得bean定义为private,或protected也可以*或者不声明构造方法,如果声明构造方法,通常至少声明两个,其中一个为无参的构造方法*子类的构造的过程中必须调用其基类的构造方法;子类可以在自己的构造方法中使用super调用基类的构造方法;使用this调用本类中的另外的构造方法*this(“”,””,””)这样的形式定义无参构造方法,那么必须有全部成员变量的构造方法10、继承[组合]【覆盖】*接口可以实现多继承,而类不可以实现多继承*子类不能继承父类的私有属性和方法,且不能继承构造方法*子类不能继承父类的静态属性和方法,只能被调用*子类不能直接访问从父类的是有属性及方法,但可以使用公有的(及保护)方法进行{一般使用getX()得到}*什么时候构造方法必须调用{例如:有些模式就一定要自己定义构造函数,比如设计模式中的单例模式也就是这个类只允许一个实例产生class Singleton{private static Singleton instance=null;private Singleton(){//定义为私有,只能由内部的getInstance方法调用,确保只能产生一个实例即instance,如果你不定义私有构造函数,那么默认提供的是public,也就不能保证单例了}synchronized public static Singleton getInstance(){if(instance==null)instance=new Singleton();return instance;}}}11、static*在类中,用static声明的成员变量为静态变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份*用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递为它,所以在static方法中不可访问非static的成员[静态方法不再是针对某个对象调用,所以不能访问非静态成员]*可以通过对象引用或类名(不需要实例化)访问静态成员*静态方法不能调用非静态的属性或方法【因为局部不代表全部】*类成员只有在new一个对象的时候才存在static方法不需要new对象就可以调用,那么在static方法里面怎么可以使用一个还不存在的成员呢?!*并发和静态不是很相关多个人对同一个东西的使用肯定有并发问题有没有并发关键看你怎么设计你的数据层方法就是一段程序,什么程序都是消耗内存的。

静态变量常驻内存,说他消耗也可以静态方法通常比非静态方法快静态方法多为工具方法,就是说静态方法不引用外部资源所以编译更快。

所有操作数据库的方法这句话不是很明白操作数据库简单的就是,查询,插入删除,这些方法需要数据库链接,楼主是想维护静态连接池呢还是不停打开链接呢不推荐使用静态方法作数据库操作,因为数据库方法带有延伸性。

就是说一般静态方法都是得到数据,计算,返回数据而数据库方法则是,得到数据,发到数据库,得到返回结果,返回数据。

直觉上就跟静态方法的名字冲突。

不够清晰隐藏与覆盖//所谓隐藏是指,子类能隐藏父类的变量和方法,通过子类对象,不能访问父类被隐藏了的变量和方法,//但是将子类对象转换成父类对象时,可以访问父类中被隐藏的变量和方法//而覆盖则指,子类能覆盖父类的方法,通过子类对象,不能访问父类被覆盖了的方法//将子类转换成父类对象时,也不能访问父类中被隐藏的方法。

//方法可以被隐藏和覆盖,但是变量只可能被隐藏,不会被覆盖12、多态*多态存在的必要条件1,要有继承2,要有重写3,父类引用指向子类对象属性沒有多态性,只有方法才有多态性*当我们将子类对象引用传给声明为父类对象,如果子类有的方法就调用子类的方法,否则调用父类的方法{静态方法?}*静态方法,即是什么的引用就调用什么方法*方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

13、final*final的变量的值不能被改变final的成员变量final的局部变量(形参)*final的方法不能被重写,程序运行速度快*final的类不能被继承★final存在的理由:1、安全方面2、设计方面:从面向对象设计方便,如希望声明的类为最终类,则最好或从概念将该类不应该有任何派生类14、自定义异常Public class MyExceptionName extends SuperclassOfMyException{ Public MyExceptionName(){super(“”);}}15、抽象类*用abstract关键字来修饰一个类时,这个类叫做抽象类;*用abstract来修饰一个方法时,该方法叫做抽象方法*含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写*抽象类中也可以有非抽象的方法,也可以没有抽象方法*抽象类不能被实例化即是不能有new*抽象方法只需声明,而不要实现*不能有抽象构造函数或抽象静态方法*抽象类可以实现接口不需要实现里面的方法16、引用对象数组*引用对象数组一定要初始化*元素为引用数据类型数组中的每一个元素都需要实例化*引用对象占用两块内存17、包的使用*当导入一个包中的所有类,则需内存存储类的名字,占内存的,对于pc机无影响,但对手持设备不然*基本数据类型及数据包裹类*提供线程操作和管理的类是Tread类*valueOf()比Integer.parseInt()通用,后面只包括Integer,Float,Double,Long,Byte,Short18、Interface*java允许省略声明数据成员的final,方法的public及abstract关键字*接口也可以继承(称为接口的扩展),并且可以继承多个接口;但不可以实现*类的继承与接口继承的区别19、面向对象的设计原则*开闭原则*接口隔离原则20、塑型*基本数据类型的塑型(强制转换不会四舍五入(int)2.6结果是2)*对象的塑型:方法的查找(类方法,实例方法)21、内部类class Meal{Meal(){System.out.println("Meal()");}}class Bread{Bread(){System.out.println("Bread()");}}class Cheese{Cheese(){System.out.println("Cheese()");}}class Lettuce{Lettuce(){System.out.println("Lettuce()");}}class Lunch extends Meal{Lunch(){System.out.println("Lunch()");}}class PortableLunch extends Lunch{PortableLunch(){System.out.println("ProtableLunch()");}}public class Sandwich extends PortableLunch{ Sandwich(){System.out.println("SandWich()");}Bread bread=new Bread();Cheese cheese=new Cheese();Lettuce ley6ttuce=new Lettuce();public static void main(String[]args){ Sandwich sandwich=new Sandwich();Sandwich.cheese.getName();}}结果:Meal()Lunch()ProtableLunch()Bread()Cheese()Lettuce()SandWich()从上面的例子可以看出创建一个派生类,构造方法的调用次序为:基类构造方法;成员变量的初始化;派生类构造方法。

*调用基类的构造方法*按声明顺序调用成员初始化模块*调用派生类构造方法22、构造方法中的多态方法abstract class Glyph{abstract void draw();Glyph(){System.out.println("Glyph()before draw()");draw();System.out.println("Glyph()after draw()");}}class RoundGlyph extends Glyph{int radius=1;//这里如果加上final就不会出现错误了RoundGlyph(){System.out.println("RoundGlyph.RoundGlyph(),radius="+radius);}@Overridevoid draw(){System.out.println("RoundGlyph.draw(),radius="+radius);}}public class PolyConstrutor{public static void main(String[]args){new RoundGlyph();}}结果:Glyph()before draw()RoundGlyph.draw(),radius=0Glyph()after draw()RoundGlyph.RoundGlyph(),radius=1在定义构造方法时,遵循以下原则能够有效地避免错误:*用尽可能少的动作把对象的状态设置好*如果可以避免,不要调用任何方法*在构造方法内惟一能安全调用的是在基类中具有final属性的那些方法(也适用private,它们自动具有final属性)。

相关文档
最新文档