收藏 分销(赏)

高淇java基础教程笔记(注释).doc

上传人:w****g 文档编号:2463120 上传时间:2024-05-30 格式:DOC 页数:26 大小:3.59MB 下载积分:10 金币
下载 相关 举报
高淇java基础教程笔记(注释).doc_第1页
第1页 / 共26页
高淇java基础教程笔记(注释).doc_第2页
第2页 / 共26页


点击查看更多>>
资源描述
第一讲:JAVA 如何学习 第二讲:计算机语言的发展史——java历史/核心优势 计算机语言发展历程:逐渐趋向人类能理解的语言 Ø 机器语言:即计算机能理解的语言。由0和1代码组成。 Ø 汇编语言:使用英文缩写的助记符来表示基本计算机操作,主要通过操作指令来进行对计算机的操作。 Ø 高级语言:面向过程、面向对象 Java 简史: Ø SUN( Stanford University Network )公司 Ø Green 项目 Ø Java 发明人:James Gosling Ø 发展历史: ² 1991年,SUN公司的Green项目,Oak ² 1995年,推出java测试版 ² 1996年,JDK1.0 ² 1997年,JDK 1.1 ² 1998年,JDK1.2 ,大大改进了早期版本的缺陷,是一个革命性的版本,更名为Java2 ² 2004年,J2SE 5.0 ( 1.5.0 ) ² 2006年,J2SE6.0 ( 1.6.0 ) ² 2011年,JAVASE7.0 Ø 互联网发展(java发展机遇) Ø JAVA核心优势: ----跨平台 Ø JAVA 各版本和体系结构 ² J2EE ( JAVAEE ) :JAVA 2 Enterprise Edtion——定位在服务器端的应用 ² J2SE ( JAVASE ): JAVA 2 Standard Edtion ——定位在个人计算机上的应用 ² J2ME ( JAVAME ):JAVA 2 Micro Edtion——定位在消费性电子产品的应用上。 第三讲:JDK /JRE /JVM 区别 Ø JDK & JRE & JVM(包含关系) ² JDK ——Java Development’ kit :java 开发工具包 ² JRE ——Java Runtime Environment :java 运行环境 ² JVM——Java Virtual Machine :JAVA 虚拟机 ² Ø JVM 和 java跨平台特性 ² Ø JAVA 环境变量的配置 ² ² 测试 第四讲:第一个java程序/第五讲 Ø 第一个java程序 ² 代码编写 ² 编译 ² 执行 Ø 程序中可能出现的错误 ² “ java ” 不是内部或外部命令,也不是可运行的程序或处理文件。 ² Java 区分大小写。 Ø 总结和提升 ² Java对大小写敏感。 ² 关键字class表明java程序中的全部内容包含在类中,java是一种面向对象的语言。 ² Main() 方法是java应用程序的入口方法。 ² 在java中,用花括号划分程序的各个部分,任何方法的代码都必须以”{“开始,以”}“结束,由于编译器忽略空格,所以花括号风格不受限制。 ² Java 一个语句可以跨多行,其中每个语句必须以分号结束。 ² 一个源文件可以有多个class ² 一个源文件中至多只能有一个public的类声明,其它类的个数不限,如果源文件中包含一个public类源文件名必须和它中定义的public的类名相同,且以”java“为扩展名。 Ø 编程风格 ² 注意缩进 ² 成对编程——括号、引号都应该写完后,再往里加内容 ² 见名知意 Ø Java注释 ² 注释就是程序员为读者作的说明,是提高程序可读性的一种手段 ² 注释不会出现在字节码文件中。即java编译器编译时会跳过注释语句 ² // 单行注释(注释内容从// 到本行结束) ² /* */ 多行注释——注释不能嵌套 Ø 常用dos命令 ² Cd进入一个目录 ² Cd..:改变目录 ² Dir:查看目录里面的内容 ² 上下键:查找敲过的命令 ² Tab键:命令自动补齐 第六讲:标识符/Unicode和GBK各种字符集的关系 Ø 标识符(identifier) ² 作用——给变量、类和方法命名 ² Java标识符命名规则: u 标识符必须以字母、下划线_、美元符$开头。 u 标识符其它部分可以是字母、下划线_、美元符$和数字的任意组合。 u Java标识符大小写敏感,且无长度限制。 u 不可以是java关键字 u 注:java不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准的国际字符集,因此这里字母的含义:英文、汉字等。 Ø 字符集简介 ² ISO8859-1 ——西欧字符集 ² BIG5 ——台湾的五大码,表示繁体字 ² GB2312 ——大陆最早使用的简体中文字符集 ² GBK ——GBK2312 的扩展,可以表示繁体字 ² GB18030 ——最新GBK的扩展,中国所有非手持/嵌入式计算机系统的强制性实施标准。可以表示汉字、维吾尔文、藏文等中华民族字符。 ² Unicode ——国际通用字符集 Ø java关键字 第七讲:数据类型/进制转换/编程中的L问题 Ø java是一种强类型语言,每个变量都必须声明其类型 ² 整型变量 u Java语言整型常量的表示形式: — 十进制整数 — 八进制整数 — 十六进制整数 u Java语言的整型常数默认为int型,声明long型常量可以加”l“或”L“ (建议使用大写,小写容易误认为数字1) ² 进制转换 u 转换代码: u System.out.println( Intger.toBinaryString( 需要转换的变量 ) ); //二进制 u System.out.println( Intger.toOctalString( 需要转换的变量 ) ); //八进制 u System.out.println( Intger.toHexString( 需要转换的变量 ) ); //十六进制 ² 如果数据大小没有超过byte/short/char 的表述范围,则可以自动转型 第八讲:浮点数/浮点数误差问题 Ø 浮点型 ² Float类型又称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。 ² Double 表示这种类型的值精度是float类型的两倍,又被称为双精度,绝大多部分应用程序都采用double类型。 ² Java 浮点类型常量有两种表示形式 — 十进制形式,如:3.14 — 科学记数法形式,如:134e2、314E2、314E-2 ² 浮点数值默认为double类型。要将其变为float类型,需要在后面增加F/f如:1.3f ² 总结 — — 默认类型是double — 浮点数存在舍入误差,很多数字不能精确表示,如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。 — 最好避免比较中使用浮点数 第九讲:char –字符串入门 Ø 字符型char ² 单引号用来表示字符常量。如:’ A ’,是一个字符,它与” A “是不同的,”A “表示含有一个字符的字符串。 ² Char 类型用来表示unicode编码表中的字符 ² Unicode 编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符; ² Java语言允许使用转义字符‘\‘来将其后的字符转变为其它的含义。 ² Char 是在0-65535范围,运算时直接当作整数来运算。 ² 可以把0-65535之间的整数直接转型为char Ø 布尔类型boolean(一位,不是一个字节) ² Boolean 类型有两个值,true 和false ² Boolean用来判断逻辑条件,一般用于程序流程控制 第十讲:基本数据类型自动转换/强制转型 Ø 自动类型转换 n 容量小的数据类型可以自动转换为容量大的数据类型(容量表示类型的范围,而不是字节数) n 特例:可以将整型常量直接赋值给byte,short, char等数据类型变量,而不需要进行强制类型转换,只要不超过其有效范围。 n Ø 强制类型转换 ² 强制类型转换,又称为造型,用于显式的转换一个数值的类型,在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。 ² 当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值。 ² Ø 基本类型转换时常见错误和问题 ² 操作比较大的数时,要留意是否溢出尤其是整数操作时 ² L和l的问题——不要命名名字为l 的变量、long类型使用大写L 不要用小写l Ø 运行时表达式中的类型提升问题 ² 所有的一元运算符(+ - * / %),都会有类型提升的问题 第十一讲:JDK7.0 新特性/二进制整数/下划线 Ø 二进制整数/下划线 ² 表示形式:0b开头;如表示byte表示1 为:0b00000001 ² 若觉得查看不方便可以使用下划线分隔符(常用于写一些比较长的数字) ² 如:123_321_456等 第十二讲:变量-成员变量-局部变量/常量-命名规范 Ø 变量 ² Java是一种强类型语言,每个变量都必须声明其类型。 ² Java变量是程序中最基本的存储单位,其要素包括变量名,变量类型和作用域。 ² 变量在使用前必须对其声明,只有在变量声明以后才能为其分配相应长度的存储单元,声明格式为: typevarName [ =value ] [ {,varName[ =value]}]; ² 注意事项: ——每个变量都有类型,类型可以是基本类型,也可以是引用类型。 ——变量名必须是合法的标识符。 Ø 变量声明 ² 变量声明举例:int a;booleanvalue; double salary; ² 可以在一行中声明多个变量:intx,y,z ; //both are integers ——不提倡这种风格,逐一声明每一个变量可以提高程序可读性。 ² 可以将变量的声明和初始化放在同一行中,如:int age = 18; Ø 局部变量和实例变量 ² 局部变量:方法或语句块内部定义的变量 ——在使用前必须声明和初始化(赋初值)。 ² 实例变量(成员变量): ——方法外部、类的内部定义的变量(属性 ) ——如果不自行初始化,它会自动初始化该类型的默认初始值(数值类型变量初始化成0或0.0 ,字符型变量的初始化值是16位的0 ,布尔型默认是false)\u0000 Ø 常量 final ² 其值无法改变的量 ² 只能被初始化一次(只要赋值则其值无法改变) ² 常量的命名通常使用全大写,如果单词较多则使用下划线进行分隔如:MAX_VALUE Ø 命名规范 ² 所有变量、方法、类名:见名知意 ² 变量、方法名: ² ——首字母小写和驼峰原则如:run(), runRun(), age ,ageNew ² 常量:——大写字母和下划线:MAX_VALUE ² 类名:——首字母大写和驼峰原则如:Man,GoodMan 第十三讲:运算符——算术/逻辑/位运算/扩展运算符 Ø Ø 算术运算符 ² 二元运算符类型提升(有两个操作数) u 整数运算: ——如果两个操作数有一个为long,则结果也为long ——没有long时,结果为int,即使操作数全为short、byte,结果也是int u 浮点运算 ——如果连个操作数有一个为double,则结果为double ——只有两个操作数都是float ,则结果才为float ² 一元运算符(++,--) ——如:int a=3; ——如:int b = a++; //执行完后,b=3 ,先给b赋值,再自增 ——如:int c = ++a; //执行完后,c=5 ,先自增,再给b赋值 Ø 逻辑运算符(只能操作布尔变量) ² 逻辑与:&&只要有一个为false则为false ,只有全为true才会是true(短路问题) ² 逻辑或:||只要有一个为true则为true ,只有全为false才会是false(短路问题) ² 逻辑非:!相反 ² 逻辑与和逻辑或采用短路的方式。从左到右计算,如果确定值则不会再计算下去。 Ø 位运算符(按位操作) ² 对进制进行操作(0是false ,1为true) ² &——按位与:只要有一个为0则为0 ,只有全为1才会是1 ² | —— 按位或:只要有一个为1则为1 ,只有全为0才会是0 ² ^ —— 按位异或:相异(两个值不一样),相同则为0 ,不同则为1 Ø 扩展运算符 ² 第十四讲:字符串连接—三元运算符—优先级 Ø 字符串连接符 + ² “ + ” 运算符两则的操作数中只要有一个字符串(string)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。 Ø 三元运算符 ² 语法格式:—— x ? y : z ² ——其中x为boolean类型表达式,先计算x的值,若为true ,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。 ² 经常用来代替简单的if –else 判断! Ø 运算符优先级 ² 表达式里面优先级使用小括号来组织 第十五讲:eclipse的使用 第十六讲:eclipse的使用 第十七讲:if语句—单选择—双选择—多选择结构 Ø 控制语句 ² 选择 ² 顺序 ² 循环 Ø If单选择结构 Ø Ø If-else 双选择结构 Ø Ø If-else if-else多选择结构 Ø 第十八讲:switch语句—基本用法—穿透现象 Ø 第十九讲:JDK 7.0 新特性—增强switch 语句 Ø 增强switch语句 ² JDK 7.0 之前:表达式结果只能是int(可以自动转为byte 、short 、char),枚举类型 ² 表达式结果可以是:字符串如下代码所示: ² 第二十讲:while 语句——do while 语句 Ø While循环语句 ² ——在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。 ² ——语句中应有使循环趋向于结束的语句,否则会出现无限循环(死循环)。 ² Ø Do —while 语句 Ø 第二十一讲:for语句 Ø For语句 Ø Ø 课堂练习代码 Ø 1.用while和for 循环分别计算100以内奇数和偶数的和,并输出。 Ø Ø 2.用while和for循环输出1—1000 之间能被5整除的数,且每行输出三个。 Ø 第二十二讲:综合练习——九九乘法表 Ø 打印输出九九乘法表 Ø 第二十三讲:break 和continue ——带标签的break和continue Ø 在任何循环语句的主体部分,均可用break控制循环的流程,break用于强行退出循环,不执行循环中剩余的语句。(break 语句还可用于多分支语句switch中)。 Ø Continue 语句用于在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。 Ø Ø 带标签的break 和continue ² Goto关键字(了解即可) 第二十四讲:方法—方法的本质—形参/实参—return语句 Ø Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,声明格式: [ 修饰符1 修饰符2 … ] 返回值类型方法名(形式参数列表){ Java语句; …… } ² 形式参数:在方法被调用时用于接收外界输入的数据 ² 实参:调用方法时实际传给方法的数据 ² 返回值:方法在执行完毕后返还给调用它的环境的数据 ² 返回值类型:事先约定的返回值的数据类型,如:无返回值,必须给出返回值类型void。 ² Java语言中使用下述形式调用方法:对象名.方法名(实参列表) ² 实参的数目,数据类型和次序必须和所调用方法声明的形参列表匹配 ² Return 语句终止方法的运行并指定要返回的数据 ² Java中进行方法调用中传递参数时,要遵循值传递的原则: ——基本类型传递的是该数据值本身,引用类型传递的是对对象的引用,而不是对象本身。 ² Java中只有值传递! 第二十五讲:递归算法 Ø 递归算法 ² 递归本身是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调用自己”,一个递归技术的方法将会直接或者间接的调用自己。 ² 递归算法包括两个部分 ² ——定义递归头 //什么时候不调用自身方法,如果没有递归头,将会进入死循环。 ² ——递归体 //什么时候需要调用自己 第二十六讲:API文档—package的概念 Ø API 是什么?——Application Programming Interface 应用程序编程接口 Ø Package 包的用法(作用类似于文件夹) ² 为什么需要package? ——为了解决类之间重名问题 ——为了便于管理类:合适的类位于合适的包! ² Package怎么用? ——通常是类的第一句非注释性语句。 ——用打包语句:package 包名; ——包名:域名倒着写即可再加上模块名,并与内部管理类 ² 注意事项: ——写项目时都要加包,不要使用默认包 ——com.gao和com.gao.car,这两个包没有包含关系,是两个完全独立的包,只是逻辑上看起来后者是前者的一部分 Ø JDK 中主要的包 ² Java.lang ——包含一些java语言的核心类 ² Java.awt ——包含了构成抽象窗口工具集的多个类用于(GUI) ² J ——包含执行与网络相关的操作的类 ² Java.io ——包含能提供多种输入/输出功能的类 ² Java.util ——包含一些使用工具类 Ø API 文档的生成 ² 特殊的注释:——文档注释:/** ² 使用JAVADOC生成API文档——解决问题:代码和文档的分离 ² 常用的java注释标签: ² ——@auther作者 ² ——@version 版本 ² ——@param参数 ² ——@return 返回值的含义 ² ——@throws 抛出异常描述 第二十七讲:键盘输入——scanner类的使用—import使用 Ø Scanner类(实现计算机与用户的交互) ² Scanner s = new Scanner(System.in); //系统输入 Ø Import 导入包 第二十八讲:面向对象——面向过程和面向对象的本质区分 Ø 面向对象——以对象的方式,组织代码,封装数据 ² Ø 面向对象与面向过程区分 第二十九讲:面向对象—面向对象方式思考问题 Ø 高组织管理层 第三十/三十一讲:面向对象—类和对象的关系 Ø 面向对象编程(OOP)的本质: ——以类的方式组织代码,以对象的方式组织(封装)数据 面向对象思维:OOA(分析), OOD(设计) Ø 对象:具体的事物 Ø 类:是对对象的抽象(抽象抽出象 [相似]的部分)类似于分类 Ø 先有具体的对象,然后抽象各个对象之间的部分,归纳出类通过类再认识其他对象。 Ø 对象和类总结: ² 对象和类的关系:特殊到一般,具体到抽象 ² 类:class ² 对象:object ,instance(实例)。 ² 类可以看成一类对象的模版,对象可以看成该类的一个具体实例 ² 类是用于描述同一类形的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属性。 ² 对象是java程序的核心,在java程序中“ 万事万物皆对象” 。 ² JDK 提供了很多类供编程人员使用,编程人员也可以定义自己的类。 第三十一讲:面向对象—程序执行过程内存分析 Ø 引用类型:(在没有进行赋值之前系统默认为null) ——java语言中除基本类型之外的变量类型都称为引用类型。 Ø Java中的对象是通过引用reference(地址)对其操作的。 Ø 类的属性:(代表静态数据) l 属性:field ,或者叫成员变量 l 属性用于定义该类或该类对象包含的数据或者说静态属性 l 属性作用范围是整个类体 l 在定义成员变量时可以对其初始化,如果不对其初始化,java使用默认的值对其初始化。(数值:0,0.0 char :\u0000 , Boolean :false 所有引用类型:null) l 属性定义格式: —— [修饰符]属性类型属性名 = [ 默认值 ] Ø 类的方法:(动态行为) l 面向对象中,整个程序的基本单位是类,方法是从属于类的。 l 方法定义格式: —— [ 修饰符 ] 方法返回值类型方法名(形参列表){ //n 语句方法体 } l Java中方法参数传递是:值传递! Ø 变量的作用域 l l 局部变量必须对其进行初始化,实例变量则不必须 Ø 内存分析 l 栈:自动分配连续的空间,后进先出 ——存放:局部变量 l 堆:不连续的空间 ——存放new出来的对象 l 方法区:(属于堆里面的一个特殊示例) ——存放:类的信息(代码-属性、方法)、static变量、常量池(字符串常量)等。 l 操作对象就是操作地址 Ø 代码(如下) Ø Ø 第三十三讲:虚拟机内存管理—垃圾回收机制 Ø 垃圾回收机制(garbage collection) ² 对象空间的分配: ² 使用new关键字创建对象即可 ² 对象空间的释放 ² 将对象赋值null即可,垃圾回收器将负责回收所有“ 不可达 ” 对象的内存空间。 ² 要点: ——程序员无权调用垃圾回收器 ——程序员可以通过System.gc() .通知GC运行,但是java规范并不能保证立刻运行。 ——finalize 方法,是java提供给程序员用来释放对象或资源的方法,但是尽量少用。 第三十四讲:构造方法 Ø 构造方法(构造器):cinstructor Ø 构造方法用于构造该类的对象(实例)。 Ø 格式: —— [ 修饰符 ] 类名 ( 形参列表 ) { //n 语句; } Ø 是一种特殊的方法: ——通过new关键字调用 ——构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能在构造器里调用return 。 ——如果我们没有定义构造器,则系统会自动定义一个无参的构造函数。如果已定义则编译器不会添加! ——构造器的方法名必须和类名一致! ——作用:构造该类的对象,经常也用来初始化对象的属性。 第三十五讲:方法重载—构造方法重载 Ø 重载(overload):一个名字对应多个方法 ² 方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同参数表选择对应的方法。 ² 两同三不同: ——同一个类,同一个方法名 ——不同:参数列表不同(类型、个数、顺序不同) ² 只有返回值不同不构成方法的重载 ² 只有形参的名称不同,不构成方法的重载 ² 与普通方法一样,构造方法也可以重载 第三十六讲:static 变量和方法——内存分析static Ø Static 关键字 ² 在类中,用static声明的成员变量为静态变量:或者叫做类属性,类变量。 ² 它为该类的公用变量,属于类,该类的所有实例共享,在类被载入时被显式初始化。 ² 对于该类的所有对象来说,static 成员变量只有一份。被该类的所有对象共享。 ² 可以使用“ 对象.类属性 ” ,来调用。不过一般都是用“ 类名.类属性 ”。 ² Static 变量置于方法区中! ² 用static 声明的方法为静态方法或者叫类方法 ² 不需要对象,就可以调用(类名.方法名) ² 在调用该方法时,不会将对象的引用传递给它,所以在static 方法中不可访问非static 的成员。 Ø Static内存分析 Ø Ø 第三十七讲:this 隐式参数—内存分析 Ø This关键字(是指向调用对象本身的引用名) ² 在普通方法中,this总是指向调用该方法的对象 ² 构造方法中,this 总是指向正要初始化的对象 ² This 不能用static方法 ² 常见用法: ——引用类的隐藏数据域 第三十八讲:继承——基本概念 Ø 继承 ² 类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模。(OOD 面向对象设计角度分析)。 ² 提高代码复用性(OOP 面向对象编码角度分析) ² extends意思是“ 扩展 ”。子类是父类的扩展 Ø 继承小结: ² 子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法)。 ² Java中只有单继承,没有象c++那样的多继承。 ² Java中的多继承可以通过接口来实现 ² 如果定义一个类时,没有调用extends ,则它的父类是java.lang.Object(也就是根类)。 ² 不同的叫法:超类、父类、基类、子类、派生类 第三十九讲:继承——方法的重写(override) Ø 在子类中可以根据需要对从基类中继承来的方法重写。 Ø 重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。 Ø 重写方法不能用比被重写方法更严格的访问权限(由于多态)。 第四十讲:继承——object类用法——toString和 equals方法——重写toString Ø Object 类 ² Object类是所有java类的根基类 ² 如果在类的声明中未使用extends 关键字指明其基类,则默认基类为object类 Ø toString方法:返回该对象的字符串表示。 ——重写:toString方法:默认返回:包名+类名+@+哈希码 ——可以重写 Ø equals方法:指示其他某个对象是否与此对象“相等”。 第四十一讲:继承——super 构造器的调用——继承的内存分析 Ø super 关键字(隐式参数) ² super是直接父类对象的引用,可以通过super 来访问父类中被子类覆盖的方法或属性。(必须在方法中使用) ² 普通方法:——没有顺序限制,可以调用。 ² 构造函数中:任何类的构造函数中,若是构造函数的第一行代码没有显式的调用super(…);那么java默认都会调用super() ; 作为父类的初始化函数。 Ø 内存分析 Ø 第四十二讲:继承—组合 Ø “ is —a ”关系使用继承 Ø “ has—a ”关系使用组合 第四十三讲:final 修饰变量——方法——类(最终的值) Ø 修饰变量 ——常量 Ø 修饰方法 ——该方法不能被重写,可以重载 Ø 修饰类 ——修饰的类不能有子类,不能被继承。如:Math,String 第四十四讲:封装 Ø 封装(encapsulation) ² 封装的作用和含义? ² 封装对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的扩展型,可维护性。 ² 程序设计追求“高内聚,低耦合”。 ² 高内聚就是类的内部数据操作细节自己完成,不允许外部干涉; ² 低耦合:仅暴露少量的方法给外部使用。 Ø 使用访问权限符,实现封装 Ø ² 封装要点: ² 类的属性的处理: ² 1.一般使用private(除非本属性确定会让子类继承)[常量和static的公开] ² 2.提供相应的get/set 方法来访问和设置相关属性,这些方法通常是public ,从而提供对属性的读取操作。(注:boolean变量的get方法是用:is开头) ² 一些只用于本类的辅助性方法可以用private ² 希望其他类调用的方法用public。 第四十五讲:多态——基本概念——强制转型问题 Ø 多态(polymorphism) ² 多态性是OOP中的一个重要特性,主要是用来实现动态联编的,即程序的最终状态只有在执行过程中才能被决定而非在编译期间就决定了。这对于大型系统来说能提高系统的灵活性和扩展性。 ² Java 中如何实现多态?使用多态的好处? ² ——1.引用变量的两种类型:编译时类型(模糊一点,一般是父类) ² ——由声明时的类型决定 ² ——2.运行时类型(运行时,具体是那个子类就是那个子类) ² ——由实际对应的对象类型决定 ² 多态的存在要有三个必要条件: ² ——要有继承,要有方法重写,父类引用指向子类对象 ² ——多态是方法的多态 Ø instanceof:判断一个对象是不是这个类型的对象(强制类型转换问题) 第四十六讲:多态——内存分析 Ø this指向本身创建完的对象 Ø 内存分析 Ø 第四十七讲:内存分析深化(模拟sevlet中的方法调用) Ø 第四十八讲:抽象类——抽象方法 Ø 抽象类abstract class ( 包含了抽象方法的类—只有方法的声明而没有方法体 ) ² 为什么需要抽象类?如何定义抽象类? ² 是一种模版模式。抽象类为所有子类提供了一个通用模版,子类可以在这个模版基础上进行扩展。 ² 通过抽象类,可以避免子类设计的随意性。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。 ² 要点: ² ——有抽象方法的类只能定义抽象类 ² ——抽象类不能实例化,及不能用new来实例化抽象类。 ² ——抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用 ² 抽象类只能用来继承 ² 抽象方法必须被子类实现 ² 抽象方法的意义在于:将方法的设计和方法的实现分离了 第四十九讲:接口详解 Ø 接口(interface) Ø 接口中只有常量、抽象方法 Ø 接口的意义在于设计和实现分离 Ø 为什么需要接口?接口和抽象类的区别? Ø ——接口就是比“ 抽象类 ”还抽象的“ 抽象类 ” ,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。 Ø 接口就是规范,定义的是一组规则,体现了现实世界中“ 如果你是…则必须能…” 的思想。 第五十讲:回调的实现——模版方法模式 Ø 回调的实现 ² CallBack ² Hook ² 模版方法模式 第五十一讲:内部类详解 Ø 在另一个类里面定义的类,称为内部类 Ø 内部类的作用: Ø 1.内部类提供了更好的封装,只能让外部类直接访问,不能允许同一个包 Ø 中其他类访问。 Ø 2.内部类可以直接访问外部类的私有属性,内部类被当成外部类的成员,但外部类不能访问内部类的属性 第五十二讲:数组——数组基本概念——内存分析 Ø 数组——数组是相同类型数据的有序集合(数组也是对象) ² 数组特点: ² 1.其长度是确定的。数组一旦被创建,它的大小就是不可以改变的 ² 2.其元素必须是相同类型,不允许出现混合类型 ² 3.数组中的元素可以是数据类型,包括基本数据类型,引用数据类型 Ø 数组基本概念 ² 数组是相同类型数据的有序集合(数组也是对象) ² 1.数组也是对象,数组元素相当于对象的成员变量 Ø 数组内存分析 ² 第五十三讲:数组——数组的三种初始化方式 Ø 创建数组:java中使用关键字new 创建数组对象 Ø 数组声明方式:1.type[] arr_name; 2. type arr_name[]; Ø 默认初始化:默认为null Ø 静态初始化int b[] ={ 1,2,3 }; Ø 动态初始化int a[]=new int[4]; for(inti=0 ; i<a.Lemght;i++){ Ø a[i]=i*12; Ø } 第五十四讲:数组——String类的常用方法——JDK源码分析 Ø 字符串的使用 ² java字符串就是unicode字符序列 ² java没有内置的字符串类型,而是在标准java类库中提供了一个预定义的类String,每个用双引号括起来的字符串都是string类的一个实例。 第六十五讲:Date类的使用 Ø 时间处理相关的类 Ø Ø java.util.Date ( 时间类 ) Ø 在标准java类库中包含了一个Date类,它的对象表示一个特定的瞬间,精确到毫秒 Ø java时间的表示说白了也是数字,是从:标准纪元1970.1.1.0点开始到某个时刻的毫秒数,类型是long Ø Date() ;setTime();getTime(); Ø Date类的核心就是所操作数比较,显示 第六十六讲:DateFormat和SimpleDateFormat——时间和字符串的转换 Ø DateFormatdf = new SimpleDateFormat(“yyyy-MM-ddhh:mm:ss”) Ø 完成字符串和时间对象的转化 Ø format Ø parse Ø DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。 第六十八讲:可视化日历程序 Ø Ø package cn.bjsxt.test; Ø import java.text.DateFormat; Ø import java.text.ParseException; Ø import java.text.SimpleDateFormat; Ø import java.util.Calendar; Ø import java.util.Date; Ø import java.util.GregorianCalendar; Ø import java.util.Scanner; Ø Ø /** Ø * 可视化日历程序 Ø * @author dell Ø */ Ø public class VisualCalendar { Ø public static void main(String[] args) { Ø System.out.println("请输入日期(按照格式:2030-3-10):"); Ø Scanner scanner = new Scanner(System.in); Ø String temp = scanner.nextLine(); Ø Ø DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Ø try { Ø Date date = format.parse(temp); Ø Calendar calendar = new GregorianCalendar(); Ø calendar.setTime(date); Ø int day = calendar.get(Calendar.DATE); Ø calendar.set(Calendar.DATE, 1); Ø Ø intmaxDate = calendar.getActualMaximum(Calendar.DATE); Ø System.out.println("日\t一\t二\t三\t四\t五\t六"); Ø Ø for(inti=1;i<calendar.get(Calendar.DAY_OF_WEEK);i++){ Ø System.out.print('\t'); Ø } Ø Ø for(inti=1;i<=maxDate;i++){
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服