第一章,Java概述
第一节,Java简介
1.Java的由来
2.java的版本
Java SE标准版适用于桌面级应用开发
Java EE企业版适用于网络级应用开发
Java ME微型版适用于嵌入式应用开发
3.java 的专有名词
jdk:Java开发包
jvm:Java虚拟机 一次编译重复使用
jre:Java运行环境 Java runing enviroment
垃圾回收机制
第二节,jdk安装环境的配置
1.从官网下载需要的jdk的版本,直接安装,安装路径不能有中文
2.配置环境变量
Java_home:新建Javahome变量,将jdk安装目录添加进入
path:添加%java_home%\bin到path中,path中的路径是直接可以引用
CLASSPARH:5.0以前需要配置Tool.jar文件,5.0以后自动配置
第三节,第一个程序
1.使用记事本编写Java程序
新建Hello_World.java文件,使用记事本打开编辑写入
class Hello_World{
public static void main{
system.out.println("hello world");
}
}
在Hello_World.java 文件处启动dos 运行 javac Hello_world.java 命令执行编译,
编译出class文件,再执行 java Hello_world 命令就可以打印出Hello_world了
第四节,IDE集成编辑器
1.安装eclipse eclipse免安装
2.打开eclipse,新建工作空间 工作空间就是程序源码存放的位置
3.新建Java工程,构建项目包的结构,在src文件夹中新建包
4.Java工程项目结构
src:放置项目的类,主体方法等
config:用于工程的配置文件
lib:工程引用其它的类库
img:项目需要的图片
JRE系统库:项目需要的系统库
第五节,输出与注释
1.system.out.println输出并换行 print没有换行
2.Java程序注释
注释:程序在执行时不会执行注释内容
单行注释://这里是注释内容
多行注释 :/*注释内容写在里面*/
文档注释: 使用Javadoc命令 可以将文档注释内容生成帮助文档
/**
*这里是文档内容
*/
第二章,Java语言基础
字符集
字符集:电脑用于表示字符编码的集合
ASCII:字符集的一种编码,常用于英语和西欧语言 用一个字节8个位编码,只能表示128个字符
GB2312:中国国家标准字符集,使用双字节16位,可以表示简化汉字,俄文,日文等非英文字符
Unicode:由非盈利机构Unicodeconsortium定制的字符编码系统,Unicode为每种语言的每个字符设定了统一并且唯一的二进制编码,Unicode有16位也有32位表示的,它有三种字符编码方案。
utf-8:长度可变,utf-8使用可变长度字节来储存Unicode字符,ASCII字符使用1字节,重音文字、希腊字符使用2字节,汉字则使用3字节,辅助平面字符则使用4字节
utf-16:大部分字符长度不变固定为2个字节,但无法兼容ASCII编码
utf-32:将每一个Unicode代码点表示为相同的32位整数
标志符
标志符:用于识别变量的名称,标志符只能以字母,下划线,美元符号开头,并且标志符只能包含数字,字符,以及下划线和美元符号。
关键字:Java用于特殊功能的保留字,变量名称不能是这些关键字
数据类型
Java中的数据类型分类:
1.整数常量
byte 8 位 -2^7~2^7-1
short 16位 -2^15~2^15-1
int 32位 -2^31~2^31-1
long 64位 -2^63~2^63-1
2.小数常量 单精度和双精度标识小数点后面多少位
float:32位 3.4e-38 ~3.4e+38
double:64位 1.7e-38 ~1.7e+38
3.布尔常量(boolean)
4.字符常量(将一个数字字符或者符号用单引号''标识)
5.字符串常量 用双引号""标识
6.转义字符 例如"\n","\t"
7.unicode字符表示"\u848934"
类型转换
自动类型转换:把一个数据类型小的变量直接赋值给一个数值范围大的变量时,系统将自动类型转换
强制类型转换:把一个数据类型大的变量直接赋值给一个数值范围小的变量时,只能强制类型转换,但这样会损失精度
操作符
b = a++,先将a的值付给b再自增 ++a则相反
关系运算符:> < >= <= == != 运算的值为true或false
三元运算符:表达式?b:c运算表示式的值,若真则返回b的值,若为假则返回c的值
逻辑运算符:&& || ! 针对Boolean类型做运算
分支结构
if条件语句:
if(条件表示式){语句块}
else if(条件表示式){语句块}
else {语句块}
条件表达式的结果为真则执行下一个语句块,若为假则执行else语句块
for循环:
for(初始化表达式;条件表达式;迭代表达式){循环体}
初始化表达式只执行一次,条件表达式会在循环前执行一次,若表达式运行为true就执行语句块并迭代,为false则结束循环
while循环:
while(条件表达式){循环体}
只要条件表达式为true就执行循环体
do while循环:
do{循环体}
while(条件表达式)
先执行循环体再执行条件表达式,不管条件表达式的结果,循环体至少执行一次
转移语句:
break:
1.在switch语句中,用于终止case语句跳出十switch分支
2.在循环结构中用于终止循环语句
3.与标签语句配合使用从内层循环或内层程序退出
continue:只忽略本次循环体继续进入迭代语句,并不会终止循环,而break则终止循环
return:
1.单独return,程序终止
2.return 返回值 返回返回值
数组
1.数组是编程语言中常见的一种用来存储数据的数据结构
2.数组创建后大小是不能改变的,数组内容可以通过索引来查找
3.语法:数据类型[] 变量名称
第三章 面向对象
1.类是一种复杂的数据类型
2.对象是这种类型的实例
3。类是对象共同属性和行为的抽象集合
4.类的声明:
[访问符][修饰符]class [类名]{
[属性:类的成员]
[方法:类的行为]
}
5.创建对象
方法的定义
1.方法:一句或多句代码完成一个特定的功能,为这个功能通过名称的调用具体的功能,而不用再写具体代码内容
2.方法包括方法名,参数,还有返回值
3.方法的定义 [访问符][修饰符] [返回值类] 方法名 (参数列表){具体功能 return 返回值}
4.方法的参数传递机制
值传递:参数为基本数据类型,传递的是参数值,参数本体并不发生变化
引用传递:参数为类,传递参数为地址,参数本体发生变化
5.构造方法:构造方法用于创建对象的方法
访问符 类名(参数列表){初始化语句}
构造方法名必须和类名一致
this:在成员变量名和传入参数名相同时可以使用this来特指成员变量。在没有同名的情况下可以直接使用属性名而不用this
6.初始化过程:在栈内存中声明的对象类型
堆内存中创建一个对象,在将地址传递给对象类型使用构造方法对成员变量进行赋值,如果没有构造方法则系统会有一个默认的构造方法
7.方法重载:在同一个类中包含两个或以上的同名方法,参数不同
三个原则:在同一个类;方法名相同;参数列表不同
在调用方法是就根据参数来调用方法
8.可变参数
[访问符][修饰符] [返回值类] 方法名(参数类型 参数名,参数类型 ...参数名)...参数名 表示的是数组
封装和访问控制
1.Java引用包的机制提供了类的多层命名空间,解决类的命名冲突,类文件管理等问题。借助于包可以将自己定义的类与其他类库中的类分开管理。
2.定义包: package 包名
3.package必须作为Java源文件的第一条非注释性语句;
4.一个Java源文件只能指定一个包,即只有一条package语句,不能有多条package语句
5.定义包之后,Java源文件中可以定义多个类,这些类将全部位于该包之下
6.导入包:import 包名
7.封装将该隐藏的隐藏,该公开的公开
8.四种访问控制符:
private:只能被当前类中的成员访问
缺省:能被同一个包中的所有类访问
protected:既可以被同一个包中的其他类访问,也可以被不同包中的子类访问;
public:没有任何限制
静态成员
1.Java可以使用static关键字修饰的成员变量或方法就是静态成员
2.类的静态成员是可以供所有类的对象共同使用
3.使用 类名.方法名/变量名 调用静态方法
对象数组
1.声明方法:类名 变量名[];
装箱和拆箱
基本类型与其对应封装类之间在堆和栈中相互转化
装箱:将栈中的基本数据类型值传递给栈中的基本类型对象
拆箱:将堆中的对象的值传递给栈中
object类
对象之间判断有两种 一种是 == 判断是两对象的地址是否相同
equals方法判断内容是否相同
string类
1.+号的使用。在string类可以使用+连接两个字符串
2.string类使用+与其他基本类型连接时会转换成string类再连接
3.string创建的字符串时不可变了,再内存中每次赋值,都会再内存中新建一个内存,stringbuffer则是可变的所以使用stringbuffer操作来表示常常改变的内容
4.stringbuilder没有线程安全,性能较好,stringbuffer和stringbuilder用法完全一样
Scanner类
1.scanner类是用于系统输入的类
继承和多态
1.继承
通过继承可以使子类使用父类的属性和方法,这样就使用了代码的复用
创建子类对象的时候先调用父类的方法在调用子类的方法
2.多态
一个父类具有多个子类,可以将子类对象直接赋给一个父类引用变量无需任何类型转换
子类重写父类的方法
如果子类重写的方法是父类私有的则子类重写的方法不会覆盖父类的而是新写了个方法
3.super关键字
super关键字代表着父类的引用
super可以引用父类的属性和方法
4.final
修饰变量,此变量为常量
修饰方法,此方法无法被重写
修饰类,此类无法被继承
类与类的关系
1.依赖:在一个类的方法中操作另一类
2.关联:一个类是另一个类的成员变量
3.聚合:一个类由多个其他类的对象作为该类的成员变量,此时的整体与部分之间是可以分离的
4.组成:一个类由多个其他类的对象作为该类的成员变量,此时的整体与部分之间是不可以分离的
内部类
1.在一个类的内部再定义一个类,里面的类就称之为内部类,
2.内部类可以隐藏,不为同一个包其他类访问
3.内部类可以访问其所在的外部类所有的属性
4.在回调方法处理中,匿名内部类尤为便捷,事件处理方便
5.局部内部类,在一个方法中定义类,局部内部类对外部完全隐藏 不能使用public和private,static 修饰只能是抽象和终态
6.静态内部类属于类本身,只能访问静态成员
7.匿名内部类:匿名内部类在创建时立刻创建对象使用后立即销毁,只使用一次
单例模式
1.将构造函数私有化,在累的内部创建一个静态实例变量,再使用静态方法返回这里实例
抽象类
1.抽象类:将类的相同的属性抽象出来组成一个类变成一个基类
抽象类可以包涵多个抽象方法和非抽象方法
3.接口内默认访问权限为public,接口的成员变量默认为常量
4.Java8以及以上可以在借口内定义默认方法和类方法,接口不能有其他的实现方法
5.借口不能实例化,只能被实现
6,接口可以多继承
7.instanceof用于判断引用是否是引用类型的实例
异常
通过try catch捕获异常,对不同的异常可以做不同的处理,异常最好写子类-
finally语句:无论是否捕获异常都会执行的语句,可以用于回收物理资源,Java无法自动回收物理资源,如果释放资源的语句放在catch块中,语句抛出异常了,就无法执行到语句,因此放在finally里。
throws:将抛出异常给方法的调用者
throw:声明抛出异常只能抛出一个异常并且抛出的是异常对象
自定义异常
如果在运行中的异常就使用runtimeException
泛型
将数据类型参数化,将数据类型定义参数
可以使定义方法时使数据类型变得通用,使代码更加严谨,
泛型可以自动数据转换