1.语言特点
简单性,高性能,编译性,解释性,面向对象,分布式处理,健壮性,安全性,开源,跨平台。
2,JDK(Java Development Kit)
1.Java开发工具(jdk/bin)
2.基础开发库(jdk/jre/lib/rt.jar)
3.基础开发库的源码(jdk/src.zip)
3.JDK,JRE,JVM的关系
1.JDK(Java Development Kit)
是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE,Java工具和Java基础类库。
2.JRE(Java Runtime Environment)
是运行JAVA的运行时环境,包含JVM和Java核心类库。
3.JVM(Java Virtual Machine)
Java模拟机的缩写,是整个Java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。
4.变量
变量类型
变量名
必须是一个有效的标识符
不可以使用Java关键字
不能重复
变量值
局部变量
定义在方法里,或者局部代码块汇中。
注意:必须手动初始化,来分配内存,如int i=5,作用域也就是方法里或者局部代码块里,方法运行完内存就释放了。
成员变量
定义在类里。
注意:不用初始化,也会自动被初始化成默认值。作用域是在整个类中,类消失了,变量才会释放。
5.数据类型
标识符
标识符可以由字母,数字,下划线(_),美元符($)组成,但不能包含@,%,空格等其他特殊字符。
不能以数字开头
标识符是严格区分大小写的
标识符的命名最好能反映出其作用,做到见名知意。
关键字
53个关键字
(class类) (interface接口) (byte字节) (short短整型)
(int整型) (long长整形) (float单精度) (double双精度)
(char字符) (boolean布尔) (viod无返回值) (ture真)
(flase假) (null空) (if判断/分支) (else或者) (switch多分支)
(case或者) (default默认) (while循环) (do循环) (for循环)
(break跳出) (continue继续) (return返回) (private私有的)
(protected保护) (public公有的) (abstract抽象) (final常量)
(static静态的) (synchronize同步) (extends继承)
(implements实现) (new创建) (this本对象) (super父类)
(instanceof实例)(try尝试)(catch捕获异常) (finally都执行)
(throw抛出异常) (throws接受异常) (package包)
(import导包) (native原生) (strictfp精准) (transient瞬态)
(volatile不稳定) (assert维护)
保留字
const goto
八大基本类型
字面值
1.整数字面值是int类型
2.byte,short,char三种比int小的整数可以用范围内的值直接赋值
byte b=127;//对
byte b=128;//错,右面已经超过byte范围是int类型的数据
3.浮点数的字面值是double类型
double a=3.14;//对
float a=3.14;//错,右面是double,float是四字节double是八字节存不下
4.
引用类型
Java中除了基本类型都是引用类型
运算符
运算规则
1,计算结果的数据类型,与最大类型一致
3/2 得1 ,而不是1.5,结果是int类型
3d/2 得1.5,相当于double/int,结果是double类型
2,byte,short,char三种比int小的整数,运算时会先自动转成int
byte a=3;
byte b=4;
byte c=a+b;
//错,运行时,byte会先自动转成int再运算,int+int还是in
3,整数运算溢出
整数运算,类似于一个中标,转到最大时,再转会回到最小。
4,浮点数运算不精确
5,浮点数的特殊值
Infinity 无穷大 3.14/0
Nan not a number 0/0.0
分支结构
if判断/分支
概述
顺序程序的结构虽然能解决计算,输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。
形式
单分支:
if(判断条件){
代码。。。
}
多分支:
if(判断条件){
代码1。。。
}else{
代码2。。。
}
嵌套分支:
if(判断条件1){
代码1。。。
}else if(条件2){
代码2。。。
} else if(判断条件3){
代码3。。。
}else{
代码4。。。
}
switch判断/分支
概述
当一个case成立,从这个case向后穿透所有case,包括default,知道程序结束或者遇到break程序才结束。
形式
switch(变量或者表达式){
case 1:
case 2:
case 3:
case 4:
default:
}
循环结构
概述
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。
根据判断条件,循环结构又可细节为先判断后执行的循环结构和先执行后判断的循环结构。
for循环
形式
1,for循环
for(开始条件;循环条件;更改条件){
循环体代码…
}
2,嵌套for
for(…){
for(…){
}
}
使用场景
知道循环次数
while循环
形式
1,while
while(执行条件){
代码…
}
先判断,不符合规则,不执行代码
2,do while
do{
代码…
}while(执行条件);
代码最少被执行一次,再去判断,符合规则,再次执行代码
使用场景
当循环次数不确定时
终止循环
breark
中断当前循环,简单粗暴
continue
return
方法
概述
被命名的代码块,方法可以含参数可以不含参数,可以提高代码的复用性
形式
修饰符 返回值 方法名([参数]){方法体;}
构造方法
概述
构造方法时一种特殊的方法,它是一个与类同名且返回值类型为同名类类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的创建或者对象的初始化。当类实例化一个对象时会自动调用构造方法。
构造方法和其他方法一样可以重载。
形式
修饰符 类名([参数]){代码...}
使用
1、子类创建对象时,默认会去访问父类的无参构造方法。
2、在构造方法的第一行,都有一条默认的语句:super();
3、父类没有无参构造时,可以用super调用父类的其他构造。
抽象方法
1、是一个特殊的方法,特殊在这个方法根本没有方法体。
2、java中可以定义没有方法体的方法,该方法由其子类来具体的实现吗,该没有方法体的方法我们称之为抽象方法。
重写方法
1、继承后,子类就拥有了父类的功能
2、那么在子类中,可以添加子类特有的功能也可以修改父类的原有功能。
3、子类中方法签名与父类完全一样(包括方法的返回值,方法名和参数列表,完全一致)时,或发生覆盖/复写的功能,相当于修改功能。
4、父类中的私有方法不能被重写
5、子类重写父类方法时,修饰符要大于等于父类修饰符的权限
重载方法
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数列表(也就是说参数的个数和类型不同)。程序调用该方法时,可以通过出传递给它们不同个数和类型的参数来决定具体使用哪个方法。
重写与重载的区别
1、重载:是指同一个类中的方法具有相同的名字,但这些方法具有不用的参数列表,即参数的数量或参数类型不能完全相同。
2、重写:是存在子父类中间的,子类定义的方法与父类中的方法具有相同的方法名字,相同的参数列表和相同的返回类型。
3、重写是父类与子类之间多态性的一种表现。
4、重载是一类中多态性的一种表现。