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