JAVA基础知识学习笔记
第一章:揭开Java神秘面纱
本章要点:
1.掌握下载、安装JDK
2.掌握开发环境变量的配置
3.学会编写第一个java程序
1.掌握下载,安装JDK
1.1:进入http:www.oracle.com
1.2:通过百度
1.3:安装JDK
2.掌握开发环境变量的配置
2.1:常用的DOS命令
2.1.1:cd命令,进去当前盘符下的路径 cd\(进入当前盘符的根目录) cd 路径
2.1.2:切换盘符,例如D:
2.2:新建环境变量“JAVA_HOME”,存的值是JDK的安装目录“JAVA\jdk”,找到“path”,将路径继续添加,用;隔开
2.3:classpath的配置,新建环境变量“classpath”,存的值是“.;%JAVA_HOME%\lib”
2.4:学会编写第一个Java程序
- public:公共的
- class:用来声明一个类
- Hello:类名(必须和文件的名字一致)
- static:静态的
- void:无返回值
- main:主函数的名字
- String[]:字符串数组
- args:变量的名字
- System:系统类
- Out:系统类的一个变量
- println(“”):打印的方法
- 程序区分大小写
- 第一行:创建一个类,类名是Hello
- 第二行:创建主函数,程序从这里开始
- 第三行:输出语句
- 运行程序的步骤:
- 打开DOS命令窗口
- 进入需要运行的java文件的路径
- 通过javac命令编译java文件,例如 javac Hello.java ,会生成一个Hello.class文件
- 通过java命令运行class文件,例如 java Hello
- 注释:1、单行注释://代码
- 2、多行注释:/*代码*/
- 3、文档注释:/**代码*/
第二章:最流行的Java开发工具--Eclipse
本章要点:
- Eclipse概论
- 掌握Eclipse的安装、设置与启动方法
- 熟悉Eclipse的开发环境
- 使用Eclipse创建Java程序
- 在Eclipse中调试Java程序
1.认识Eclipse开发工具
1.1、Eclipse的概述
它是IBM花巨资开发的IDE集成环境(Integrated Development Environment),是给程序员提供了一个一个优秀的Java开发环境
1.2、Eclipse的安装、设置与启动
下载Eclipse的网址:
汉化的两种方式:
1.在线安装:
2.离线安装:
建议读者使用英文版。右键快捷方式,在目标后拼接 -nl "EN"可以切换到英文(exe后面)
右键快捷方式,在目标后拼接 -nl "ZH"可以切换到中文
1.3、Eclipse工作台
2、使用Eclipse开始工作
2.1、步骤:
1、创建项目
2、创建包
3、创建类
4、运行
可以使用快捷方式进行提供开发效率
代码提示:alt+/
3、在Eclipse中调试程序
3.1、步骤
1、设置断点
2、打开调试界面 快捷键F11
3、观察变量的变化
4、通过F5,F6控制程序的走向
5、关闭调试界面,去掉断点
4、高手点拨
4.1、解决英文windows7下Eclipse的中文界面切换
汉化之后,右键快捷方式,在目标后拼接 -nl “ZH”可以切换到中文
第三章:初识庐山真面目———Java程序要素概览
本章要点:
- 掌握Java程序的组成
- 掌握Java程序注释的使用
- 掌握Java中的标识符和关键字
- 了解Java中的变量及其设置
- 了解程序的检测
- 掌握提高程序可读性的方法
1.一个简单的例子
简单了解Java程序的框架
2.感性认识Java程序
2.1认识Java程序的框架
2.1.1、大括号、段、及主体
一个类中,main只有一个,是作为所有程序的入口开端
2.2认识标识符
规则:只能是由字母、数字、下划线和$组成,并且不能以数字开头,还要避免关键字。
规范:标识符,有很高的阅读性
2.3关键字
在Java中有特殊意义的单词:比如public class void static String System...
2.4认识注释
三种:
单行注释://代码
多行注释:/*代码*/
文档注释:/**代码*/
2.5认识变量
2.5.1、变量的声明:
数据类型 变量名;
数据类型 变量名 = 数值或表达式(将变量的声明和赋值合为一体)
变量的赋值:
变量名 = 数值或表达式
2.6数据类型
分为两类:
1、基本数据类型:
- 整型:
- 字节 (byte)
- 短整型 (short)
- 整型 (int)
- 长整型 (long)
- 浮点
- 单精度 (float)
- 双精度 (double)
- 字符
- 用来存储一个字符 (char)
- 布尔
- 用来存储真假对错,里面有2个值,true、false (boolean)
2、引用数据类型:
字符串 (string)
类 (class)
数据类型转换
- 自动转换:等号左侧必须兼容等号右侧(左大于右)(小范围可以自动复制给大范围)
- byte b = 10;int num=b;
- double d = 10;
- 强制转换:当等号左侧类型低于右侧时候,对右进行强制转换,转换之后,左侧必须兼容等号右侧
- double d = 10.1;
- int a =(int)d;
2.7认识运算符和表达式
算数运算:
- 加:+
- 减:-
- 乘:*
- 除:/
- 取余:%
2.8认识类
Java程序是由类所组成的
2.9输入以及输出
- 输入和输出是以内存为参照物的
- 根据方向分为输入流和输出流
- 输入流:System.in(标准输入),通常代表键盘输入
- 输出流:System.out(标准输出),通常输出到终端显示器
- 错误流:System,err(标准错误输出),通常将错误信息输出到终端显示器
3、程序的检测
3.1语法错误
3.2语义错误
4、提高程序的可读性
通过必要的注释以及缩进
5、高手点拨
注意字符半角和全角之分,中文之分
使用ctrl+shift 或 ctrl+space切换到中文
使用shift+space切换圆角和半角
第四章:最常用的编程元素——常量与变量
本章要点:
1.掌握变量和常量的声明方法
2.掌握变量的命名规则
3.掌握变量的作用范围
4.掌握常量和变量的应用技巧
1.常量
1.1、声明常量
- 解释:所谓常量,就是固定不变的量,一旦被定义并赋值后,它的值就不能再被改变。
- 语法:final 数据类型 常量名称 = 值;(静态加static,写在main方法外的代码,想被main方法调用)
- 规范:常量名称通常使用大写字母,例如Pi,YEAR等。
- 规则:常量名称复合标识符的要求,只能使用字母、数字、_、$这4种组成,不能以数字开头,不能使用关键字。
2.变量
2.1、声明变量
- 解释:变量是利用声明的方式,在内存中的某块内存区域保留下来供程序的使用,其内的值是可变的。
- 语法:
- 变量的定义:数据类型 变量名; 例如 int num;
- 变量的赋值:变量名 = 值; 例如 num=10;
- 变量的使用 例如 syso(num);(快捷键设置)
注意:1和2可以合起来写 例如 int num = 10;
变量的使用(基本数据类型),其实就是取出变量对应的内存块里的值进行使用
规则:名称符合标识符的要求,只能使用字母、数字、_、$这四种组成,不能以数字开头,不能使用关键字。
2.2变量的作用范围
按作用范围进行划分:变量可以分为成员变量和局部变量
1、成员变量
在类体重定义的变量为成员变量。他的作用范围为整个类,也就是说,这个类中都可以访问到定义的这个成员变量
2、局部变量
在一个函数(方法)或代码块中定义的变量称为局部变量
特点:局部变量在方法或代码块被执行的时候创建,在方法或代码块结束时被销毁
成员变量可以和局部变量重名,使用时调用满足就近原则,即代码块间
3、高手点拨
1、Java中作用范围是禁止嵌套的,而在c/c++中则是允许的
第五章:不可不知的数据分类法--数据类型
本章要点:
- 掌握整数类型的分类
- 掌握浮点数据类型的分类
- 掌握字符类型数据
- 掌握布尔类型数据
- 熟悉基本数据类型默认值的意义与使用方法
- 数据类型的意义
主要分为:基本数据类型和引用数据类型
- 整数类型
- 整数类型和对应的包装类
- byte Byte
- short Short
- int Integer
- long Long
- 浮点型
- 小数默认是double类型
- 浮点型和对应的包装类
- float Float
- double Double
- 字符型
ASCII:美国标准信息交换码,将英文中所有字母和一个符号对应一个数字
GBK:是将中文所有汉字和符号对应一个数字,也兼容ASCII
Unicode:将所有国家的编码表融合到一个表中
- 布尔类型
只有两个值:true 和 false
- 数据类型转换
- 自动类型转换
- 小范围赋值给大范围
- 强制类型转换
- 大范围赋值给小范围
- 基本数据类型的默认值
- 当成员变量会有默认值
- 局部变量没有
- byte (byte)0
- short (short)0
- int 0
- long 0L
- float 0.0f
- double 0.0d
- char ' '或\u0000
- boolean false
- 高手点拨
- 除法“/”
- 两种情况
- 整型/整型 结果是取整数
- 除数和被除数至少有一个都浮点型,那结果就是浮点型,简单理解为:普通的除法
- C/C++语言和Java语言布尔的区别
- 在前者中只要不是零的数,都可以认为“true”,而仅把零作为“false”
- 在后这种布尔类型只是“true”和false,跟数字无关
第六章:最重要的编程部件--运算符、表达式与语句
本章要点:
- 掌握各种运算符的用法
- 掌握各种表达式的用法
- 掌握表达式与云算法的关系
- 掌握表达式中数据类型的转换技巧
1.运算符
1.1、赋值运算符
用“=”表示,将等号右边的值赋值给左边的变量
1.2、一元运算符
+ 正号 +x
- 负号 -x
! NOT,非 !true
~ 取补码 ~x
++ 变量值自增1 x++
-- 变量值自减1 x--
1.3、算术运算符
+ 加
- 减
* 乘
/ 除
% 取余
+有两种使用方式:如果+前后是数字,则为加法,结果是数字和; 如果+前后至少一个为字符串,则为拼接符号,结果是拼接后的字符串
/有两种使用方式: 如果/前后都是整型,则将得到的结果取整; 如果/前后至少一个浮点型,则得到的结果也是浮点型,就是普通的除法
1.4、逻辑运算符
逻辑运算符只对布尔类型操作数进行运算并返回一个布尔类型数据
&&,& 与 两个操作数同时为真,结果才为真,否则,结果为假
||,| 或 两个操作数同时为假,结果才为假,否则,结果为真
! 非 结果是与操作数相反的布尔值
2.表达式
表达式是由常量、变量或是其他操作数与运算符所组合而成的语句
2.1、算术运算符
算术表达式用于数值的计算。它是由算术运算符和变量或常量组成,其结果是一个数值
2.2、关系表达式
关系表达式常用于程序判断语句中,由关系运算符组成,其运算结果为boolean类型
2.3、逻辑表达式
用逻辑运算符将关系表达式或
2.4、赋值表达式
赋值表达式由赋值运算符和操作数组成,赋值运算符用于给变量赋值
将右侧的值赋值给左侧变量
2.5、表达式的类型转换
大原则:
- 占用字节较少的数据类型转换成字节数较多的数据类型
- 字符类型会转换成int类型
- int类型会转换成float类型
- 表达式中若某一个操作数的类型为double,则另一个操作数也会转换成double类型
- 布尔类型不能转换成其他类型
3、语句
语句室友表达式组成
3.1、语句中的空格
在必要的地方加上空格,提高阅读性和规范性
3.2、空语句
空语句是由一个分号组成的语句,不建议使用
3.3、声明语句
语法格式一般为:<声明数据类型><变量1>。。。<变量n>;
3.4、赋值语句
通过赋值符号表示,将右侧的值赋值给左侧的变量
4、高手点拨
4.1、&和&&、||和|的关系是怎么样?
a&b a&&b
a|b a||b
普通的&和|连接的判断条件都会执行,最后得出结果
&&和||连接的判断条件,如果根据前面的判断条件已经能得出最后的结果,那后面的判断条件就不会再执行
4.2、递增以及递减运算符
++在前,先加1,再执行其他操作
++在后,先执行其他操作,再加1
--同理
4.3、位运算的技巧
任何数与0000 0001(二进制)进行或(|)运算后,第一位将变成1,与1111 1110(二进制)进行与(&)运算后,第一位将变成0.
第七章:程序执行方向——程序控制结构
本章要点:
1、掌握程序结构的设计方法
2、掌握选择结构的类型与方法
3、掌握循环结构的类型与方法
4、掌握循环的跳离语句的运用方法
1、程序逻辑
程序的结构包含以下三种
- 顺序结构
- 选择结构
- 循环结构
- 顺序结构
按照书写的顺序执行
- 分支结构
根据给定的条件进行判断,决定执行某个分支程序段
- 循环结构
在给定条件成立时,反复执行某个循环
2、选择结构
条件分支
if语句
if else语句
开关分支
switch语句
2.1、if语句
if(判断条件){
语句
}
2.2、if。。。else语句
if(判断条件){
语句
}else{
语句
}
2.3、if。。。else if。。。else
if(条件判断1){
语句块1
}else if(条件判断2){
语句块2
}
。。。多个else if()语句
else{
语句块n
}
2.4、多重选择-switch语句
switch(表达式){
case 值1:
语句块1;
break;
case 值2:
语句块2;
break;
case 值n:
语句块n;
break;
default:
默认语句块;
break;
}
switch的表达式类型为整型(long除外),字符型,枚举类型,在JDK1.7之后也支持string
3、循环结构
3.1、while循环
while(判断条件){
代码块
}
特点:先判断再执行
第9章:面向对象设计--类和对象
本章要点:
1、了解类和对象的相关概念
2、掌握声明以及创建类和对象的方法
3、掌握对象的比较方法
1、理解面向对象程序设计
OOP
1.1、结构化程序设计
早起程序设计,大量使用全局变量和GOTO语句
结构化程序设计:顺序、选择、循环这三种节本控制结构来构造(强调程序阅读性,面向过程)
编程基本通过写不同的目的的函数/过程实现,故称为面向过程:核心问题是数据结构和算法的开发和优化
1.2、面向对象程序设计简介
属性表示对象的数据,一般为名词
行为表示对象的功能,一般为动词
类是实物的表述,对象是事物的具体
面向对象编程达到了软件工程的三个主要目标:重用性、灵活性、扩展性
1.3、面向对象程序设计的基本特征
3个主要特征:封装性、继承性、多态性
封装性:隐藏内部细节,目的是将对象的设计者和对象的使用者分开,使用者不必知晓其行为实现细节,只需用设计者同的消息来访问该对象
继承性:继承性是子类共享父类数据和方法的机制。目的支持系统的可重用性,提高系统的可扩展性。
多态性:对象根据所接收到的消息而做出的动作。同一个消息被不同的对象接受时可以产生完全不同的行为,这种想象称为多态。
1.4、面向对象编程和面向过程变成的比较
面向过程:程序=算法+数据结构
面向对象:程序=对象+消息传递
面向对象是由面向过程发展而来。二者都有重要性。二者都在某些领域具有重要性
面向对象虽然有缺点,但是利大于弊。
2.面向对象的基本概念
2.1、将具有相同属性(成员变量)和相同行为(成员方法)的一组对象称为类
2.2、对象是类的实例化后的产物。“万物皆对象”
2.3、类是某一类实物的描述,而对象是实际存在的该类实物的个体。
3.类的声明与定义
3.1、类的声明
[访问修饰符] class 类名称{
//类的成员变量
//类的成员方法
}
访问修饰符:
public:共有的。本类,本包内的类,包外类也可以访问
private:私有的。本类可以访问
protected:介于public和private之间。和集成有关。本类,子类可以访问
默认模式:本类,本包内可以访问
final:最终的,无法改变的。不能继承修改。
类名称:只能是字母,数字,_ ,$组成,不能以数字开头,不能使用关键字,一般用大写开头。
3.1、类的定义
类的成员变量的定义:
访问修饰符 数据类型 属性[=值];
类的成员方法的定义:
访问修饰符 返回值的数据类型 方法名称(参数1,参数2。。。){
程序语句
}
4.类的属性
语法:[访问修饰符] 属性类型 属性名 [=默认值];
修饰符:public,private,protected,static,final其中之一。static和final可以组合起来修饰属性(static属性为静态代码块,可以用来初始化成员变量,是该类最先运行的语句块,称为类方法,比构造方法还早)
属性类型:任何类型(基本数据类型,引用数据类型)
属性名:只能是字母,数字,_ ,$组成,不能以数字开头,不能使用关键字。一般首字母小写,后面的单词首字母大写。
5.对象的声明与使用
5.1对象的声明:
语法:类名 对象名 = new 类名([形参]);
5.2对象的使用:
语法:
调用属性的语法:对象名.属性名
调用方法的语句:对象名.方法名([形参])
5.3匿名对象
匿名对象是指没有名字的对象。适用场合:创建对象只使用了一次
5.4对象的比较
两种方式:
1、使用“==”:比较的是两个对象的内存地址
2、使用equals()方法:比较的是两个对象的内容。比较两个字符串内容是否一样,使用此方法
5.5对象数组的使用
6.高手点拨
1.栈内存和堆内存的区别
栈内存:
栈是由编译器自动分配和释放的
存放基本数据类型的变量,指令代码,常量和对象的引用地址
优点:存取速度快,数据可以共享
缺点:存在栈中的数据大小与生存期必须是确定的,缺乏灵活性
堆内存:
堆是一个程序运行动态分配的内存区域
存放构建对象时所需要的内存
堆内存在使用完毕后,是由垃圾回收机制进行(隐式)回收
优点:动态的分配内存大小
缺点:存取速度慢
2.面向过程变成与面向对象编程的感性认识
第10章:重复调用的代码块--方法
本章要点:
1、掌握方法的定义
2、掌握方法的使用
1、方法的基本定义
修饰符 返回值类型 方法名(参数列表){
方法体
[return 返回值]
}
2、方法的使用
1、创建对象
2、对象名、方法([参数])
this代表当前对象,区分形参
3、方法中的形参与实参
形参隶属于方法体,是方法的局部变量
在调用方法时,实参和形参在数量上、类型上、顺序上必须保持一致
4、方法的重载
三要素:
必须在同一个类中
必须方法名相同
必须参数列表不同(个数不同,类型不同,个数不同类型也不相同)
注意:重载的定义与返回值无关
5、构造方法
构造方法就是在每一个类中定义的,并且是在使用new关键字实例化一个新对象的时候默认调用的方法。
构造方法的功能是对新创建的对象的成员变量赋值
语法结构:
访问修饰符 类名([参数列表]){
功能代码
}
注意:
1、构造方法的名次必须和所属类的类名一致
2、构造方法没有返回值,也不可以使用void
3、构造方法也可以被重载
4、构造方法不能被static和final修饰
5、构造方法不能被继承,子类使用父类的构造方法需要使用super关键字。
规定:如果某一个类中,没有显示的定义一个构造方法,那系统会默认给其一个无参并且方法体是空的构造方法
6、在方法内部调用方法
1、如果调用的是本类的方法,直接使用方法名([实参])
2、如果调用的是其他类的方法,还是需要创建
3、如果调用的方法是静态的,可以通过类名,方法名([实参])或者接口名.方法名([实参])
(快速封装,shift+alt+s,getters and setters)
7、方法的递归调用
是指方法直接或间接调用自身的一种操作
注意递归的出口
8、代码块
格式:
{
//语句
}
1、普通代码块
在方法名后或方法体内用一对“{}”括起来的数据库就是普通代码块
2、构造代码块
不在方法体内,仅位于类的范围内,执行多次。作用在于初始化成员变量
3、静态代码块
执行一次,作用在于初始化成员变量
4、同步代码块
线程时有详细讲解
9、方法和数组
引用传递:传递的是地址,指向的是同一块内存空间,任何一方修改了内容,那另一方指向的内容也是修改后的
值传递:传递的是数值,传递后,两方没有任何关系了。
10、与数组有关的操作方法
1、数组的克隆
克隆对象返回的是一个新的对象,而不是已有对象的引用
克隆对象与new操作符是有区别的,克隆对象是拷贝某个对象的当前信息,而不是对象的初始化信息
‘ 2、数组的排列
11、高手点拨
1、Eclipse中自动生成Getet和Seter。快捷键slt+shift+s->generate getter and setter
2、Eclipse中自动生成构造方法。快捷键slt+shift+s->generate constructor using fileds
1、枚举简介
2、自定义枚举
3、Java中的枚举
3.1、语法:enum 枚举名{枚举值1,枚举值2,枚举值3,枚举值4...};
3.2、在switch语句中使用美剧
4、枚举类和枚举关键字
4.1、values方法:返回枚举值组成的数组
4.2、枚举类:Enum
4.3、枚举类(Enum)与枚举关键字(eunm)的联系
valueOf(Class<T>enumType,String name): 返回带指定名称的指定枚举类型的枚举常量
5、类集对枚举的支持
5.1、EnumMap
5.2、EnumSet
6、深入了解枚举
6.1、枚举的构造方法
6.2、枚举的接口
6.3、在枚举中定义抽象方法
7、高手点拨
7.1、使用枚举时注意事项
1、枚举的构造方法的访问权限修饰符不能是public,protected,只能是private,默认
2、最后枚举值要加;
7.2、枚举类不可以被继承
第12章:类的封装、继承和多态
1、掌握封装的基本概念和应用
2、掌握继承的基本概念和应用
3、掌握多态的基本概念和应用
4、熟悉super关键字的使用
5、熟悉对象的多态性
1、面向对象的三大特点
1.1、封装
隐藏内部的实现细节,对外提供一些公共的访问方式
目的是增强安全性和简化编程
1.2、继承
将子类共有的成员放到父类中,子类继承父类,子类只定义自己特有的成员
目的是提高程序的复用性,易于扩展项目
1.3、多态
分为两类:
1、方法的多态性,体现 在方法的重载与覆写
2、对象多态性,体现在父、子对象之间的转型上
2、封装的实现
2.1、访问修饰符
公共的public: 可以被所有类访问
私有的private: 只有在当前类中可以访问,外部类不可以访问
受保护的protected: 当前包内的类可以访问,子类也可以访问
默认default: 当前包内可以访问
封装的步骤:
1、将成员私有化
2、对外提供公共的访问方式
3、继承的实现
语法格式:
class 子类名 extends 父类
限制:
1、java中不允许多重继承,但可以使用多层继承
2、父类私有成员,不能被子类继承使用
3、子类在进行实例化时,首先调用父类的构造方法,然后调用子类的构造方法
4、被final修饰的类不能再被继承
4、深入认识类的继承
1、子类对象实例化的过程
2、super关键字的使用
1、调用父类的构造方法
2、调用父类的成员
3、使用private限制子类的访问
5、覆写
5.1、方法的覆写:子类定义了与父类相同的方法,使用子类对象调用此方法时,会调用子类的方法。子类重写的父类方法的访问权限修饰符不能严于父类,并且被覆写的方法不能为static
5.2、属性的覆写
6、多态的实现
1、多态的基本概念
2、方法多态性
利用方法重载实现
3、对象的多态性
4、隐藏static
7、高手点拨
1、方法的重载与覆写有什么区别
重载 | 覆写 | |
英文单词 | overload | override |
定义 |
方法名相同
参数列表不同
在同一个类中
|
方法名相同
参数列表相同
返回值类型相同
在两个(直接或间接)父子类中
|
权限 | 不受权限控制 | 子类覆写父类方法的权限不能严于父类 |
2、this和super的区别
this:先从本类找成员,本类找不到再到父类中找;this([实参])调用的是本类的构造方法;表示当前对象
super:不查询本类的成员,直接在子类中调用父类的成员;super([实参])调用的是父类的构造方法;表示当前类的父类对象
3、final的使用
1、final修饰的类不能被继承
2、final定义的方法不能被子类覆写
3、使用final修饰的变量是常量(一旦被赋值,不能更改值),一般名字全部大写
第13章:抽象类与接口
知识要点:
1、熟悉抽象类的使用
2、掌握抽象类的基本概念
3、掌握抽象类实例的作用
4、掌握接口的基本概念
5、熟悉Java8中接口的新特征
6、熟悉接口实例的应用
1、抽象类
规则:
1、抽象类和抽象方法必须用abstract关键字来修饰
2、抽象类不能直接实例化
3、抽象方法只需要声明,不需要实现
4、含有抽象方法的类必须是抽象类,抽象类的子类必须覆写所有的抽象方法,否则这个子类还是抽象类
2、接口
1、关键字是interface
接口中的成员变量:默认是public static final
接口中的成员
3、接口的作用-制定标准
4、接口的作用-设计模式
5、接口的作用-代理设置
3、抽象类和借口对比
抽象类:
语法:abstract class 类名称
组成:常量、全局常量、变量、构造方法、普通方法、抽象方法
权限:可以使用各种权限
使用:子类通过extends关键字继承一个抽象类
关系:一个抽象类可以实现多个接口
设计模式:模板设计模式
局限:单继承局限
接口:
语法:interface 接口名称
组成:全局变量、默认方法、抽象方法
权限:都是public权限
使用:子类通过implements关键字来实现多个接口
关系:一个接口不能继承抽象类,但可以继承多个接口
设计模式:工厂设计模式,代理设计模式
局限:没有单继承局限
4、高手点拨
1、继承抽象类与继承普通类的区别
子类必须覆写继承抽象类的抽象方法,而可以选择性的覆写普通类的方法
2、接口、抽象类、类、对象的关系
3、接口和抽象类的应用
第14章:关于类的专题研究
本章要点:
1、掌握Object类的基本概念
2、熟悉内部类的使用
3、了解匿名对象的使用
4、掌握方法的运用技巧
5、掌握关键字的作用域使用技巧
1、种类鼻祖---Object
所有类直接或间接的继承Object
1.1、toString()返回该对象的字符串表示,一般需要覆写
1.2、equals(Object obj)指示其他某个对象是否与此对象“相等”,一般需要进行覆写
1.3、hashCode()返回该对象的哈希码值
1.4、使用Object接受任意引用数据类型对象(类,接口,数组)
2、内部类的定义格式如下:
访问修饰符 class 外部类名称{
访问修饰符 class 内部类名称{
}
}
1、非静态成员内部类
2、静态成员内部类
3、局部内部类
4、匿名内部类(子类(实现类)只使用一次)
3、匿名对象
只使用一次
4、this关键字的使用
this代表当前对象(就是指调用类中的方法或属性的那个对象)
5、使用static定义属性
static修饰的成员是共享的,又称为类成员
静态代码块里只能调用静态成员
静态成员可以使用类名(接口名),静态成员
当类被载入时,静态方法块被执行,并且只执行一次,作用初始化变量
6、final关键字的作用
final修饰的类不能被继承
final修饰的方法不能被子类重写
final修饰的变量只能赋值一次
7、instanceof关键字的使用
可以用来判断一个类是否实现了某个接口,也可以判断一个实例对象是否属于一个类
一般是配合向下转型用的
8、高手点拨
1、匿名类使用注意事项
只能继承一个类或一个接口
不能定义构造函数
不能定义静态对象
局部内部类对匿名内部规则生效
不能是抽象的
第15章:存储类的仓库--Java的常用类库
本章要点:
1、掌握Java类库的相关概念
2、熟悉System类和Runtime类
3、熟悉Math和Random类
4、了解常见的类
1、API概念:
应用程序编程接口
2、基本数据类型的包装类
2.1、基本书籍类型包装秤对应的包装类,扩展功能
2.2、装箱和拆箱
装箱:值类型(包括基本数据类型)-->引用数据类型
拆箱:引用数据类型-->值类型
2.3、基本数据类型与字符串的转换
3、System类和Runtime类
3.1、System类
3.2、Runtime类
4、日期操作类
4.1、日期类
4.2、日期格式类
5、正则表达式
6、Math类和Random类
7、大数字操作类
7.1、大整数操作类:BigInteger
7.2、打小数操作类:BigDecimal
8、Integer类
9、Boolean类
10、Byte类
11、高手点拨
包装类型不能随便使用关系运算符比较大小
“==”比较的是引用数据类型的地址
第16章:解读Java中的String类
本章要点:
1、掌握字符串的相关概念
2、掌握String类
1、String类
1.1、声明方式:
String 变量名;
1.2、两种实例化方式
String s = “abc”
String s = new String(“abc”)
1.3、字符串内容的比较
1.4、字符串常量是String类的匿名对象
1.5、两种字符串实例化方式的区别
1.6、字符串一旦声明则不可以改变
1.7、String类常用的方法
2、高手点拨
1、String s = new String(“java”);
创建了两个对象,一个“java”,一个是指向“java”的引用对象s
2、堆和栈的区别
堆内存是栈内存的子集
栈内存的速度仅次于寄存器
而栈内存的数据可以共享
堆内存运行时可以动态分配空间
速度较慢,且不共享
new对象在堆内存里
第17章:对象的引用与传递
本章要点:
1、掌握引用传递的方法
2、熟悉对象的克隆
3、熟悉反射机制
4、了解继承设计模式
1、引用传递的初步了解
引用传递,传递的是地址
2、引用数据类型的传递
值传递,值传递数值,传递完毕后,再无任何关系
引用传递,传递的是地址,两个变量地址相同,一个改变,会影响另一个
3、引用传递与现实生活的联系
4、集成设计模式
5、对象的克隆
对象克隆得到的副本与此对象的内容一致,但对象地址不同
如何克隆?
1、要克隆的对象所在的类必须实现 借口Cloneable
2、在类中覆写父类Object的clone()方法
6、反射机制
7、高手点拨
1、对象引用相等
2、java中的垃圾回收机制
第18章:包及访问权限
本章要点:
1、掌握包的基本概念
2、掌握import语句的使用
3、了解JDK中常见的包
4、熟悉类成员的访问控制权限
5、了解Jar命令的使用
1、报的概念及使用
包的声明语法:package 名称
2、类成员的访问权限
3、命名规范
4、打包工具-Jar命令的使用
5、构造方法私有化-单例模式
6、多例模式
7、高手点拨
第19章:异常的捕获与处理
本章要点:
1、掌握异常的基本概念
2、掌握对异常的处理机制
3、熟悉如何在程序和方法中抛出异常
4、了解如何编写自己的异常类
1、异常的基本概念
try{
//可能出现异常的代码
}catch(异常类 对象名称){
//异常发生时处理的代码
}catch(异常类 对象名称){
//异常发生时处理的代码
}...
finally{
//一定运行到的代码
}
2、异常类的处理流程
异常分为两大类:
Error:JVM出错,用户无法在程序中处理这种错误
Exception:
3、throws关键字的使用方式
4、throw关键字(new实例)
5、异常处理的标准格式
6、RuntimeException
是那些可能在java虚拟机正常运行期间跑出的异常的超类
7、编写自己的异常类
必须继承Exception类或其子类,来表示可以描述异常
8、高手点拨
1、异常类型的继承关系(Throwable)
2、RuntimeException和Exception的关系(前者是一个后者子类)
第22章:齐头并进完成任务--多线程
本章要点:
1、了解进程与线程
2、掌握实现多线程的方法
3、熟悉线程的状态
4、熟悉线程操作的方法
5、熟悉线程同步的方法
6、熟悉线程间通信的方法
1、感知多线程
进程:进行的程序,操作系统资源分配单位。
线程:是进程中的执行路径,进程中的功能,是靠进程中的多个线程执行的
2、体验多线程
实现多线程的两种方式
1、将类生命为Thread子类。该子类重写Thread类的run方法
2、声明实现Runnable接口的类。该类然后实现run方法、
3、线程的状态
4、线程的一些操作方法
5、多线程的同步
同步代码块
synchronized(对象){
//要同步的代码
}
如果要完成同步,此处的对象,必须是所有要同步的线程共享的一个对象