JDK的安装:
1、下载、安装
下载地址:www.oracle.com/
2、配置环境变量
配置jdk的位置:JAVA_HOME:jdk的安装目录
配置编译器解释器到系统环境变量:path :----;%JAVA_HOME%in (javac 、java...)
JDK、JRE、JVM(关系)
JAVA运行过程:
1、java源文件经javac编译器编译为.class(字节码)文件
2、.class(字节码)文件经java解释器解释为所在平台(windows、linux、...)的机器码(注意此机器码可直接被计算机之别)
所以我们后来就有了,java是一种编译解释性语言!因java经编译解释,所以效率有所降低,但是现在PC端运行速度非常快,所以效率这方面算计算机处理性能给优化了!
java标识符(给类、方法、变量命名),命名规则如下:
1、标识符必须以字母(这里的字母为广义的字母,因为java内部采用unicode编码字符集,所以可支持汉字、日文、阿拉伯、...但是为了以后项目可能重构改变文件编码方式导致乱码出现以致程序出错,所以尽量避免用其他unicode编码字符集命名)、_、$开头,其它部分可以是字母、数字 、 _及$的随机组成
2、标识符不能为java中的任一关键字
变量:
内存块的命名。可以通过变量来操作内存块中的数据。
1、局部变量:定义在方法或者语句块({})里面,从属于方法或者语句块,出方法或者语句块自动释放掉!局部变量使用前必须初始化。
2、成员(实例)变量: 定义在类里面,方法外面,从属于对象(必须有对象才能调用),如果我们没有手动初始化,则采取默认值整型默认0,浮点型默认0.0、boolean默认:false、char默认u0000(书上),但是亲测(jdk8)默认为一个空格。其它任意引用类型(String及你自己编写类...)默认初始值均为:null。
3、静态(类)变量:定义在类里面,方法外面,使用static修饰,从属于类,内加载时初始化!非静态方法里面不能使用静态变量。按照正常逻辑是不会将一个静态变量定义在静态方法里面的,所以编译错误!(Illegal modifier for parameter j;)即参数的非法修饰符,默认初始值同成员变量初始值。
Java中的数据类型:
1、基本数据类型(8种)
1.1数值型:
1.1.1整型:byte(1字节,1字节8位,范围:-2字节数*8-1-1至2字节数*8-1为什么要次方-1,因为最前面还有个符号位!为什么底下-1,因为还有个0)、short(2字节)、int(4字节)、long(8字节)
1.1.2浮点型:float、double
1.2字符型:char(2个字节)
1.3布尔型:boolean(1位)
2、引用类型(4个字节)
2.1:数组(数组也是对象)
2.2:对象(广义划分)
2.3:接口
数据类型转换:
1、自动转换:如果在表述范围内,那么可以自动类型转换
比如我们知道byte类型的表述范围位-28-1-1到28-1之间,也就是byte的表述范围位-128到127之间,所以如果是在这之间的数,那么能自动类型转换为byte型,反之不能!
2、强制类型转换:如果不在表述范围内,那么强制转换,如: byte a=(byte)344; //但是强制类型转换后可能会有数据丢失
运算符:
1、赋值运算符:=
2、算术运算符:+、-、*、/、%
3、关系运算符:>、<、>=、<=、!=、==
4、逻辑运算符:&&、&、|、||(其中&&和||都有短路、其中&&左边为false则不进行右边、而||左边为true,则不进行右面,开发中一般我们有短路、为了追求效率)
5、位运算符:&和| 、比如3&4 那么结果为0,3|4结果为7
6、三目运算符:布尔 表达式?表达式1:表达式2,解释:如果表达式结果为true,则返回表达式1的结果,反之返回表达式2的结果。
7、扩展运算符:+=、-=、*=、/=、%=
控制语句:
1、顺序结构
2、选择结构
2.1 if
2.2 if else
2.3 if else if else
2.4 switch() :多值选择用switch、但是谨防case穿透
3、循环结构
3.1for
3.2 while
3.3 do while
这里要注意break、continue
break强制结束整个循环
continue:结束满足条件的本次循环,继续下次循环
对象和类:
对象是具体的、类是抽象的、类是对象的模板,可以通过这个模板我们new出来一个对象。
定义类:
public class 类名{
private 类型 属性名;
.....
setter/getter方法....
构造方法();//可重载
}
构造方法:
1、方法名必须和类名保持一致
2、无返回类型(实质是返回该类的实例)
3、通过new来调用
4、无参构造器
1、如果我们没有手动定义无参构造器,那么编译的时候自动添加一个无参的构造,如果我们定义了自己的构造器,那么编译器不会自动添加无参构造!
2、构造方法的第一句默认是super,即调用其直接父类的构造方法
方法的重载:
1、两同:①同一个类、②同一个方法
2、三不同:①:参数类型不同 ②参数顺序不同 ③参数个数不同
注意:返回值及形参名称不同则不构成重载!
this:
1、在普通方法中this代表能调用改方法的对象
2、在构造器中this代表正在构造(初始化)的对象
3、还可以用来调用其它的构造方法
super:
1、直接父类对象的引用
static:
1、用static修饰的变量和方法称为静态变量/方法、静态变量/方法从属于类、可直接通过类名去调用。实际存放在堆.>>>方法区中
package:
package必须位于非注释第一句
import:
1、引入外部的类
2、import static 包名.静态属性
final:
1、用final修饰的变量称之为常量
2、修饰的方法不能被重写
3、修饰的类不能被继承
面向对象的三大特征:
1、封装:属性私有化,然后提供setter/getter方法
2、继承:(extends)
2.1:实现了代码的复用
2.2实现了对现实世界更好的建模
3、多态
3.1多态基于继承
3.2多态基于子类对父类的重写
3.3多态基于父类引用指向子类对象
抽象类(abstract):
1、包含抽象方法的类一定是抽象类
1.1抽象类中的抽象方法必须要求子类重写
2、抽象类既有方法,又有方法的实现(不足够抽象)
3、抽象方法包含成员变量、普通方法以及构造方法
4、抽象类不能被实例化(new)
接口(interface):
1、接口中只有定义不能有实现
2、接口有多继承、而类只能是单继承多实现
3、接口定义了现实生活中的一组规范,如果你是xxx、则必须能xxx.
方法的重写:
1、=子类重写了父类的方法(方法名必须一样)
2、>=子类重写方法的访问修饰权限一定要大于等于父类被重写方法的访问修饰权限
3、<=<=:子类重写父类的方法之后的返回值一定要小于等于父类的类型、子类声明的异常类型一定要小于等于父类的异常类型,也就是子类声明的异常类型是父类声明异常类型的子类或者本身!