Java SE
Java语言初始
计算机语言发展
Java的诞生
- 1995
- Java SE
- Java ME
- Android的应用
- Java EE
- 2006
- Hadoop
JDK
- 开发者工具包
- 配置环境变量
- 系统变量
- 新建变量JAVA_HOME
- jdk目录
- path变量
- 新增
- %JAVA_HOME%\bin
- %JAVA_HOME%\jre\bin
JRE
- 运行环境
第一个程序
public class Hello{
Public Static void main(String [],args){
System.out.println(“Hello,world”);
}
}
Doc编译命令
- javac Hello.java
- 生成class文件
- java Hello
- 运行得编译结果
Java属于编译型和解释型语言
Java编译环境软件IDEA
基础语法
注释
- 行内注释//
- 多行注释/**/
- 文档注释/** */
- javadoc生成帮助文档
标识符
- 关键字
数据类型
- 基本数据类型
- 整数
- byte
- 1字节
- short
- 2字节
- int(默认)
- 4字节
- long
- 8字节
- 进制转换
- 0b 二进制
- 0 八进制
- 0X 十六进制
- 浮点数
- float
- 4字节
- double(默认)
- 8字节
- BigDecimal
- 金融行业使用
- 字符
- char(常用)
- 2字节
- ASCII码
- 英文1字节
- Unicode
- 2字节
- UTP-8
- 中文
- ‘\u0000’
- \b
- 退格符(Backspace)
- \t
- 水平制表符(相当于tab,缩进)
- \n
- 换行符
- \f
- 换页符
- \r
- 回车符
- ‘’
- 转义 ‘’
- \
- 转义\
- 布尔值
- boolean
- 1位
- if(a)
默认a为true
- 引用数据类型
- 类
- 类
- 数组
类型转换
- 自动类转换
- 低转高
- 强制类型转换
- 低转高
变量和常量
- type varName [=value];
- 作用域
- 类变量
- 实例变量
- 局部变量
- 常量
- final MAX_ A =10(用大写)
- 命名规范
- 1.见名知意
- 2.驼峰命名(变量、方法)
- 3.类,首字母大写,驼峰命名
- 4.常量:大写+下划线
- 5.不使用拼音命名
运算符
- 算术运算符
- / % ++ –
- 赋值运算符
- =
- 关系运算符
< >= =< == != intanceof
- 逻辑运算符
- && || !
- 位运算符
- & | ^ ~ >> << >>>
- 条件运算符
- ?:
- 扩展运算符
- += -= *= /=
包机制
- 域名倒写
- 防止命名冲突
- package
- import
JavaDoc
- JDK帮助文档
- 1.javadoc
public class HelloWorld{
/**
- @author
- @param args 命令参数
- @since 1.0
- @throws 没有异常抛出
*/
public static void main(String[] args){
System.out.println(“Hello,world”);
}
}
- @author
- @version
- @since
- @param
- @return
- @throws
流程控制
Scanner
- 用户交互System.in
顺序结构
- 程序默认的结构,自上而下的执行
选择结构
- if 单选择结构
- if-else双选择结构
- if-else if-else多选择结构
- switch
- jdk支持了String类型
- case穿透现象
- default
循环结构
- while
- do…while
- for
- for(int i=0;i<100;i++)
- 增强for循环
break&continue
- break
- 跳出循环
- continue
- 终止当次循环
- return
- 结束方法的运行
方法
意思
- 将实现一个功能的步骤集合在一个方法内
定义
- 修饰符 返回值 方法名(参数名){return 返回值;}
调用
- 类名.方法
- 对象.方法
重载
- 名字相同,参数列表不同
命令行传参
public class HelloWorld{
/**
* @author
* @param args 命令参数
* @since 1.0
* @throws 没有异常抛出
*/
public static void main(String[] args){
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
}
}
可变长参数
- …
- 放在最后一个参数,即可实现可变长
递归
- 自己调用自己,给自己一个出口
数组
数组的定义
- 1.new int[5]
- 2.{1,2,3,4,5}
- 3.new int[5]={1,2,3,4,5}
数组的使用
- 通过下标拿到值
- ArrayIndexoutofBounds超出数组范围异常
- 增强for循环遍历
二维数组
- int [] []
Arrays工具类
- 自动排序arrays.sout
- 数组的长度arrays.length
排序算法
- 冒泡排序
- 选择排序
- 插入排序
- 快速排序
- 归并排序
- 希尔排序
- 堆排序
面向对象
把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。对象即为人对各种具体物体抽象后的一个概念,人们每天都要接触各种各样的对象,如手机就是一个对象。
面向对象的定义
- 把数据及对数据的操作方法放在一起,作为一个相互依存的整体
类与对象
- 类是对象的抽象
- 模板class
- 对象是类的具体
构造方法
- 构造的重载
- 默认的无参构造
- 如果手动定义了有参构造就必须要手动再加一个无参构造
- 单例模式,需要构造器私有
new 对象
- 栈存放引用
- 堆存放具体的对象
封装
- 属性私有,get、set
继承
- extends
- Object
- 子类拥有父类的全部特性
- 方法重写
- this
- super
- Java是单继承,只能继承一个父类
多态
- 父类引用指向子类对象 Person person=new Student();
- instanceof关键字,如果匹配,可以进行类型之间的转换
修饰符
- public
- protected
- private
- static
- final
- abstract
接口
- interface
- 约束,只能定义方法名
- 子类实现接口,必须重写其中的方法
- 只有一个方法的接口叫做函数式接口,可以使用lamba表达式简化
- 接口比抽象类更加抽象
- 一个类可以实现多个接口
内部类
- 局部内部类
- 静态内部类
- 匿名内部类
异常
Throwable
- Exception
- 运行时异常
- 1/0
- ClassNotFound
- NullPoint
- UnKownType
- 下标越界异常
- …
- 检查型异常
- Error
- AWT错误
- JVM错误
- StackOverFlow
- OutOfMemory
五个关键字
- try{}
- catch(){}
- 先小后大
- Throwable
- Exception
- error
- finally{}
- throw
- 手动抛出异常
- throws
- 方法抛出异常
自定义异常
- 继承Exception类即可