标识符命名规则:
由字母、数字、下划线和$符号组成
1.不能以数字开头
2.不能是java关键字单可以包含关键字
3.区分大小写
常量:
分类:
1. 字面值常量
2. 自定义常量
变量:
分类:
基本数据类型:
字型
Byte 字节
整形:
short 短整型
Int 整形
四类八种: Long 长整形
浮点型
Float 单精度浮点型
Double 双精度浮点型
布尔类型
Ture 对
False 错
引用数据类型:
String,数组,类
运算符:
分类
1. 赋值运算符:=
2. 算数运算符:+ 、-、 /、 *、 ++、 --
3. 比较运算符:< <= > >= == !=
4. 逻辑运算符:&& 、&、 || 、|、 ^、 !
5. 位运算符:<<左移
>>右移
>>>全右移
~按位取反
&按位于
|按位或
^按位亦或
6三目运算符:
布尔值?=表达式1:表达式2;
7. 复合运算符:
+=、-=、*=、/=、%=
流程控制语句:
流程控制结构:
1. 顺序结构
2. 分支结构
3. 循环结构
顺序结构:
特点:从上到下由左到右依次执行
分支结构:
特点:选择执行并且只执行一次
if:
If语句是使用布尔表达式或布尔值作为分支条件来进行分支的语句
If(关系表达式){语句体}
If(关系表达式){语句体}else{语句体}
If(关系表达式){语句体}else if(关系表达式){语句体}......else{语句体}
Switch:
Switch(常量值)
Case(值)
语句体
Case(值)
语句体
Case(值)
语句体
......
注意事项:
1.switch对应得case要写对应的常量值
2. 如果没有break,就会从case对应的语句体往下执行直到遇到break或switch语句结束
3. 如果有break那么就会执行完当前语句体结束
4. 如果所有的case值都不符合就会执行defaule对应的语句
5. 所有的case和defaule没有先后顺序
循环结构:
特点:执行多次
For循环
格式:
For(初始化语句;循环判断语句;迭代语句){
循环体;
}
While循环:
格式:
初始化语句
While(循环判断语句){
循环体
迭代语句
}
Do...while循环:
格式
Do{
循环体语句
迭代条件
}while(循环判断语句)
循环控制语句:
Break
跳出循环,打断循环
Continue
中断本次循环,继续下次循环
Return
返回上一个方法
循环嵌套:
外部循环一次内部循环全部;
数组:
一维数组:
静态初始化:
数据类型[] 数组名={数组值用 , 号隔开};
动态初始化
数据类型[] 数组名= new 数据类型[分配的空间数];
数组名.length 获取数组的长度;
二维数组:
静态初始化:
数据类型[][] 数组名={{数组值用 , 号隔开} { }};
动态初始化
数据类型[][] 数组名= new 数据类型[分配的空间数][分配的空间数];
方法:
格式:
修饰符 返回值 方法名(数据类型,参数1......|参数列表|){
方法体
}
定义位置:
类中方法外;
方法重载:
在同一个类中方法名相同参数列表不同在方法调用时发生重载;
面向对象
面向对象的思想:
考虑一个类有哪些对象 这些对象干了什么 指挥这些对象去完成需求
类和对象的描述
类是一组属性和行为的集合,是对一些具相同的事物的描述
对象是类的具体
三大特征:
1. 封装
2. 继承
3. 多态
一、封装:
定义:隐藏属性和实现细节,暴露一些公开的访问方式
如何实现:
Private,提供get/set方法
好处:保护私有化数据不被随意更改,增强代码的维护性
二、继承:extends
定义:在多个类中存在相同的属性和行为时,将这些内容抽调到单独一个类中,其他类就无需定义这些属性和行为,只需要继承就可以了
概念:
子类继承父类子类就具有了父类的非私有的属性和方法
什么时候使用继承:
在满足继承条件的时间使用继承
格式:
修饰符 class 类名 extends 父类名{
类体
}
特点:
1. 只能单继承
2. 可以多层继承
好处:
提高了代码的复用性和维护性
注意:
1. 子类只能继承父类非私有的成员变量和成员方法
2. 子类不能继承父类的构造方法只能用super调用(super())
三、方法重写:
在继承中 子类重写声明了父类的某一个方法;
方法重写不能重写父类的私有方法
重写的使用特点:
1. 如果方法名不同,就会调用对应子类的成员方法(创建的什么类的对象调用的就是哪个类中的方法)
2. 如果方法名相同,最终使用的是子类自己的方法
四、多态
定义:
一个事物在不同时刻表现出不同的状态就叫多态
前提:
1. 继承关系
2. 方法重写
3. 父类引用指向子类
多态的特点:
成员方法: 编译看左边,运行看右边
成员变量: 编译看左边,运行看左边
静态变量,方法: 编译看左边,运行看左边
多态的好处:
提高了代码的扩展性和维护性
弊端:
父类引用不能访问子类的特有方法
如果需要引用必须向下转型
格式:
父类 变量名=new 子类()
((子类)变量名).子类方法
一个类包括:
成员方法
成员变量
构造方法
代码块
内部类
一个标准类的组成:
非私有属性
1.Get/set方法
2.构造方法
构造方法的定义:
格式:
修饰符 类名(){}
修饰符 类名(参数列表){}
构造方法分全参和无参
特点:
1. 方法名与类名必须一致
2. 没有返回值类型(连void也没有)
3. 构造方法也可以重载
4. This关键字调用(this调用本类 格式:this()父类调用super();)
创建对象是代码的执行顺序:
1. 静态代码块和静态变量初始化数据,顺序执行(静态方法和变量随着类的加载而加载)
2. 构造代码块和成员变量赋值,顺序执行
3. 构造方法执行
关键字:
Static 静态的:
修饰属性:在内存中值占用一块空间,被所有对象共享
修饰方法:调用时可以用类名直接调用
格式:
类名.方法名()
修饰代码块:随着类的加载而加载
This ,super 关键字:
This指调用该方法的对象
方法被那个对象调用this就代表那个对象
注意:
Static方法中不能使用this关键字
什么时候使用this:
局部变量隐藏成员变量
Final关键字:
被final修饰的成员变量只能够赋值一次
被final修饰的成员方法不能被重写
被final修饰的类不能被继承
五、抽象类
特点:
1. 不能创建对象
2. 继承抽象类的类必须实现父类的抽象方法,如果不实现那么这个类也必须是抽象类
3. 有抽象方法的类一定是抽象类,抽象类不一定有抽象方法
抽象类的格式:
Abstract class 类名{类体}
抽象方法格式:
Abstract 返回值类型 方法名();
注意 没有方法体
六、接口
关键字:
Interface 接口
Implements 实现
格式:
Interface 接口名{}
Class 类名 implements 接口名
提点:
1. 所有方法必须是抽象方法,修饰符可以省略
2. 所有的成员变量必须是公开静态常量,修饰符可以省略
3. 没有构造方法,也不可以创建对象
4. 一个类没有接口上限
一个类只可以有一个父类,但可以有很多接口(只能但继承但可以多实现)
Instanceof 关键字
判断一个对象是不是这个类或其子类的对象
七、包
package 打包 关键字(com.(此处的点是为了分层文件夹)xxx)(包名必须全部小写)(通常是公司域名倒写)
Import 导包 关键字
编译:
Javac -d.文件名
运行:
java.包名.文件名
打jar包(双击运行)指令:
Jar -cvf jar包名.jar 数据源