JAVA基础
1.
JVM:java虚拟机,可以将.java文件编程成.class文件. 
JDK:java开发工具包 ,里面有各种各样的工具类。
如果要使用工具类,首先需要导包。
导包使用import 关键字 。

JRE:java运行时环境,

2.关键字:被java语言赋予了特殊含义的单词,称之为 关键字。
颜色也比较特殊。

public class 
关键字都是由小写字母组成的。

标识符:用来给变量,方法,类,接口起名字时候所使用的字符。

1>标识符由大小写字母, 下划线, 数字, $和¥符号组成.

 2>开头可以是大小写字母, 下划线, 和$符号.(数字不能开头)

 3>标识符长度没有限制

 4>标识符不能是关键子和保留字

变量 :声明变量的本质是在内存中开辟一块空间 。

1.基本数据类型 

byte  short  int long 
 char  
 float  double 
 boolean

2.引用数据类型

定义方法的格式 
访问修饰符   返回类型  方法名(数据类型 参数名 ,数据类型 参数名){

    方法体 ; 
    return ; 
}

如果返回类型这里指定的是  void ,表示这个方法没有返回值,没有返回值的时候是不需要return的 ; 
除了void 之外,其他的都需要return ;

在定义方法的时候,括号里面的参数,叫形参 。
在调用方法的时候,传递进来的参数,叫实参 

类:具有相同特征和行为的一类事物,统称为类 。
把特征(静态)抽象称为我们类中的属性(成员变量)
把行为(动态)抽象成我们类中的方法

public class 类名  :类名首字母需要大写 。
如果由多个单词组成,每个单词的首字母都需要大写  。

运算符 
1.算数运算符 
+ - * / % 
System.out.println(5/2*1.0) : 2 整数相除只能得到一个整数 。

++   --  自增 或者 自减 。

如果单独使用没有任何区别,就是在原来的基础上 加上 或者减去1 
int i = 1 ; 
 ++i ;
System.out.println(i) ;

如果 ++ -- 参与运算 ,有差别的。
++ 在前 :先运算,在赋值。
++ 在后 :先赋值,在运算。

2.比较运算符 
< > = <= >= 

3.逻辑运算符 。
& :逻辑与 ,如果使用逻辑与来连接多个条件 ,那么多个条件都需要执行。

&& :短路与,如果检测到一个条件为false ,后面就不会执行了。
| :逻辑或 ,如果使用逻辑或连接多个条件,多个条件都需要执行
|| :短路或,如果检测到一个条件为true ,后面就不执行了。

! :取反的意思

 

循环结构 
for(循环变量 ; 循环条件 ; 循环控制语句){
    循环体  ; 

}
for(int i = 0 ; i < 5; i++){
     System.out.println(i) ;
 }1. int i = 0 ;


2. i < 5 判断条件是否成立,如果成立,进入循环体 ,如果不成立退出循环 。
3.执行循环体语句 
4.循环控制语句 i++ ; 
5.返回第二步,开始循环。

while循环 
语法 

while(条件){
    循环体语句 ; 
    更改循环变量  ; 
}

在同一个方法体内,代码上从上向下执行的吧

do while 循环。特点:至少执行一次。
语法 
do{
    循环语句 ; 
}while(条件) ;

break : 中断,跳出的意思 。跳出当前代码块的意思 。

continue : 继续 ,跳出此次循环,继续下一次循环。

面向对象。 
类:抽象出来的。 不能直接使用,如果要使用这个类的话,需要使用这个类的对象。 
对象: 才是真实存在的。实体。 对象才有特征和行为 。
对应的就是类中的 属性 和 方法 。

创建对象的语法 
类名 变量名  = new 类名() ;

如何调用属性和方法 
使用        对象名 .  来调用  

面向对象三大特征 。
1.封装
封装属性 :将自己本身的属性定义成私有的(private),然后还需要对外提供公共的访问方法 。

set :赋值  

get :取值 

this :表示的是当前类的本身

方法名命名规则:首字母小写 。如果方法名由多个单词组成,从第二个单词开始,首字母需要大写 。

private :私有的。

封装方法  :将各个方法中公共的地方提取出来,单独封装成一个方法,然后进行方法的调用,具体的代码JDBC 

日常生活中的封装。
1.安全性
2.美观  

2.继承 : extends关键字
java里面的类只支持单继承,一个类只有一个父类
子类继承了父类,只能使用父类中非私有的属性和方法。

还可以定义自己的属性和方法 。
还可以重写父类的方法。

方法的重写 :在具有继承关系的类中,方法名,参数列表,返回类型都需要相同,才称之为方法的重写。

当子类重写了父类的方法之后,那么子类的对象调用方法,就调用的是重写后的方法。

方法的重写,可以用@Override 来进行标识,在方法上加上@Override标识这个方法是重写后的方法。

方法的重载:本质上就是一个类中有多个同名的方法,只不过参数列表不同。

在同一类中,方法名相同,参数列表不同,和返回类型无关。

3.多态:一个物体的多种形态。
满足多态的三要素 
1.具有继承关系。
2.要有方法的重写 。
3.父类的引用指向子类的对象 。

创建对象的语法
数据类型  变量名  = new 数据类型() ;

等号左边叫 声明,句柄,引用,对象名 ;  声明部分 。
等号右边:创建对象 ; 

声明部分,是存储在内存里面的栈里面的,空间是连续的,操作速度快。
创建对象,是存储在堆里面的,空间是不连续,操作速度慢 。

 

Person person = new Student() ;


父类的引用 person 指向子类的对象Student ,不能调用student中特有的方法 。只能调用父类中存在的方法。

若调用的方法,被子类所重写,那么调用的就是重写后的方法 。

多态的好处:便于你程序的扩展。

构造方法 

格式 :          public 类名(){
                          代码体
                 } 

 

在创建每个类的对象 ,使用 数据类型  变量名  = new 数据类型() 创建,默认会调用这个类的无参数的构造方法 。

每个类至少有一个构造函数,因为类刚创建的时候,会默认有一个无参数的构造函数。如果显示定义了有参数的构造函数,那么
就默认没有无参数的构造函数了。

构造方法的作用就是用来做初始化动作。

创建子类的对象之前,首先需要创建父类的对象(调用父类无参数的构造方法) ;

如果父类中没有无参数的构造方法
1.添加一个无参数的
2.调用有参数的。

数组 :一组数据的组合,数据类型需要相同 。
声明数组的时候不能给长度,创建数组的时候需要指定长度 。

语法
int [] i = a int[3] ;

创建一个int类型的数组 ,3个值  ,数组的下标从 0 开始 。

抽象类  用abstract 修饰的类,称之为 抽象类 。
抽象类中可以有抽象方法,抽象方法就是没有方法体的方法 ; 

抽象类不能被实例化 。但是可以有构造方法。

抽象类的作用是是什么呢 ? 就是用来被其他类所继承。
如果某一个类继承了一个抽象类,那么就必须实现这个类中的所有的抽象方法 。 多态的一种应用。

abstract 可以修饰类,可以修饰方法 

接口 interface 关键字来修饰 。

一个类可以实现多个接口

接口中的方法,只能是抽象方法,
接口不能被实例化 ,接口中也不能有构造方法 。

常量的值不能被改变 。
接口中的变量都是静态的常量。

接口和抽象类的区别 。
1.接口用 interface 修饰   抽象 abstract 
2.接口中只能有抽象方法,抽象类中可以有抽象方法,也可以有普通方法
3.接口中不能有构造方法 ,抽象类中可以有构造方法。
4.接口中的变量是静态常量,抽象类中根据自己定义
5.一个类可以同时实现多个接口 ,一个类继承一个抽象类 ; 
显示接口的关键字  implments 接口名,接口名

访问修饰符 
public 公共的,可以被所有类访问 。
private 私有的,只能在当前类中使用 。
protected 受保护的,在当前包和具有继承关系的类中使用。
默认的,当前包中才能使用。

final :最终的,可以修饰类 ,方法,属性 。
final修饰变量: 表示的这个变量是常量,
常量命名规则:所有字母都需要大写 ,若由多个单词组成,多个单词之间用 _分隔开。

final :修饰 方法 ,表示这个方法是最终方法,不能被重写。

final :修饰类 ,表示这个类是最终的类,不能被继承。

无论是静态方法还是非静态方法,都可以通过 对象名.方法名 进行调用。

static :静态的意思。
方法:静态方法,特点:可以通过类名来直接调用。
属性:静态属性,静态变量,类变量 特点:被各个对象所共享。
不管创建的是几个对象,用的都是同一个。

代码块:其实就是包裹在 {} 里面的代码 

类在加载的时候,首先加载 
静态代码块  然后在加载  构造代码块,其次才加载构造方法。

Object 类 :是所有类的父类 ,所有类都直接或间接的继承了Object 类 。

集合  和  数组进行对比 
数组一旦创建,长度是不能改变的。
int[] a = new int[4] ;
数组里面只能存放一种数据类型 

集合的长度是可以变化的。
集合里面可以存放任意类型的数据 。

Collection 接口 。

List 接口  ,如果要实例化List接口,只能实例化List接口的实现类 。

ArrayList
 LinkedList
 Vector

在集合中引入了泛型的概念。

就表示的是集合中只能存放一种数据类型 。

Collection
    |--List:元素是有序的,元素可以重复。因为该集合体系有索引。
        |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
        |--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
        |--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
    |--Set:元素是无序,元素不可以重复。
List: 特有方法。凡是可以操作角标的方法都是该体系特有的方法。

map接口:元素按键值对存储,无放入顺序,注意:Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包
含相同key,每个key只能映射一个value