原文的链接
Java基础知识总结(超详细整理)
Java语言的特点
1.面向对象
面向对象(OOP)就是java语言的基础,也是Java语言的重要特性。面向对象的概念:生活中的一切事物都可以被称之为对象,生活中随处可见的事物就是一个对象,我们可以将这些事物的状态特征(属性)以及行为特征(方法)提取并出来,并以固定的形式表示。
2.Java语法基础
标识符:用来标识类名,对象名,变量名,方法名,数组名,文件名的有效字符序列。
3.合法的标识符
由字母,数字,下划线"_",美元符号“$”或者“¥”组成,并且首字母不能是数字,不能把Java关键字
和保留字作为标识符。
关键字:Java语言中已经赋予了特定含义的
保留字:
const goto
Java版本中尚未使用,但以后版本可能会作为关键字使用
变量:
程序运行期间可以被改变的量。在程序中使用变量,必须先创建它并为它取一个名字,并且
指明它能够存储信息的类型,这称为"变量声明",也叫容器的创建。
变量的作用:
变量的声明: 数据类型 变量名
变量的赋值:变量名=数据
变量的操作:放入打印语句进行输出或者进行运算
Java中的注释有三种
单行注释
多行注释
文档注释
数据类型
基本数据类型(8个),也称原始数据类型:
引用数据类型(3种):数组,类,接口
类型转换:
自动类型转换,也叫隐式转换
强制类型转换,也叫显示转换
运算符
运算符:一种特殊符号,用以表示数据的运算,赋值和比较数与整数
运算符分类:算术运算符,赋值运算符,比较运算符,逻辑运算符,三元运算符。
1.算术运算符
2.赋值运算符
3.比较运算符
4.逻辑运算符
5.三元运算符
b?x:y;
先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算,结果为y的值。
Java流程控制语句
选择结构
if语句
if(条件表达式){一条或多条语句};
switch开关语句:
循环语句
在程序中当要重复性的做某项工作时可以使用循环语句,包括:for循环,while循环,do...while循环
for循环语句:
流程跳转
流程跳转语句:
break,continue
break:在swtich中结束case条件判断,在循环体中结束循环
continue:作用在循环体中,结束循环体的本次循环,而进入下次循环
数组
数组是数据的集合,一个容器,用来存储任何类型的数据,包括原始数据类型和引用数据类型,
但是一旦指定了数组的类型之后,就只能用来存储指定类型的数据。
数组声明的三种方式:
- 数据类型[] 数组名 = new 数据类型[长度];
- 数据类型[] 数组名 = {数据,数据,…,数据};
- 数据类型[] 数组名 = new 数据类型长度[] {数据,数据,…,数据};
一堆数组:
语法:
数据类型[] 数组名:
,如:
int[] num:
,
double[] d:
,
String[] str:
数组对象的创建:
语法:
数组名=new 数据类型[长度];
,如:
num=new int[4];
,数组声明其长度后不可改变
赋值:
语法:
数组名[下标]=数据;
,如:num[0]=3;
数组元素的使用及遍历:
语法:
数组名[下标]=数据;
,如:num[0]=3;
数组元素的使用及遍历:
语法:
数组名[下标]
,获取指定下标是数据。
二维数组:
数组变量的声明:
语法:
数组类型[][] 数组名:
,如:
int [] [] num;
,
double[] [] D;
,
String[][] str;
数组对象的创建:
语法:
数组名=new 数据类型[外长度][内长度]
,如:
num=new init[4][3];
,数组声明其长度后不可改变。
赋值:
语法:
数组名[外下标][内下标]=数据;
,如: num[0][0]=3;
数组元素的使用及遍历:
语法:
数组名[外下标][内下标]
,获取指定下标是数据
对象与类
对象:客观存在能够相互区分的个体,比如这辆汽车,这间房子,这张桌子,这株植物,这张支票,这件雨衣。概括来说就是:万物皆对象。
类:若干具有相同属性和行为的对象的群体或者抽象,类是创建对象的模板,由属性和行为两部分组成。
类是对象的概括或者抽象,对象是类的实例化
类的声明
[修饰符] class 类名 {
[成员变量]
[成员方法]
}
成员变量的声明:
[修饰符] 数据类型 变量名 [=初始值];
成员方法的声明:
[修饰符] 返回值类型 方法名([数据类型 参数名,......]){
//方法体 ,该方法完成的功能代码
}
构造器的声明:
[修饰符] 构造器名 ([数据类型 参数名,.....]){
//构造器完成的功能代码
}
注意:
1.构造器名必须和类名一致
2.构造器没有返回值类型
3.任何类都含有构造器。如果没有显式地定义类的构造器,
4.则系统会为该类提供一个默认的无参的构造器。一旦在类显式地定义了构造器,系统不会再为
这个类提供默认的构造器了。
类的使用
类变量的声明:
类名 对象名;
类对象的创建,赋值给变量
对项名=new 构造器([参数列表]);
对象属性的赋值:
属性:对象名.属性名, 对象名.属性名=数据;
属性和方法的调用:
属性:System.out.println(对象名.属性名);方法:对象名.方法名();
成员变量与局部变量:
成员变量:声明在类中方法体之外,可以有缺省值,可以使用修饰符。作用域:整个类
局部变量:声明在方法体或代码块中,没有缺省值,只能使用final修饰。作用域:当前方法体
参数:参数的本质是特殊的局部变量,只能定义在方法的小括号中
重载
方法的重载OverLoading:同一个类中定义了多个方法名相同而参数不同的方法
重载在同一个类中,方法名相同,参数不同(参数的个数,循序,类型不同)。
关键字
this关键字
this是一种特殊的引用,指向当前对象
this的两种使用方法:
如果发生局部变量和成员变量命名冲突时,可以通过this.成员变量名的方式区分成员变量和局部变量。
一个构造方法中需要调用本类的另一个构造方法,可以通过this()的方式调用,但this()必须要书写在第一行。
static关键字:
静态变量: 使用static修饰的成员变量叫做静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。
而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不
影响。static成员变量的初始化顺序按照定义的顺序进行初始化。
静态方法:
使用static修饰的成员方法叫做静态方法,静态方法可以不依赖于任何对象访问(对于静态方法,是没有this的),由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都必须依赖具体的对象才能够被调用。
super关键字
super代表的是父类对象。
使用方式
super.属性名,super.方法名()
用于在子类调用父类被隐藏的同名实例变量
super([参数列表])
用于在子类的构造方法中调用父类的构造方法
每个子类的构造方法在没有显示调用super()系统都会提供一个默认的super(),super()必须
是构造器的第一个条语句。
Java的三大特性
封装
封装指隐藏对象的状态信息(属性),不允许外部对象直接访问对象的内部信息(private实现)。但是可以提供一些可以被外界访问的方法来操作属性。
将类中成员变量private,提供public的get和set方法来控制属性的存取动作,以保证对私有属性操作的安全性能:
继承
继承extends:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承单独的那个类即可。多个类可以称为子类,单独这个类称为父类或者超类。
基本语法:
[修饰符] class 子类名 extends 父类名{
类体部分
}
继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的属性或方法(对父类进行扩展),也可以拥有父类的属性和方法,并且通过自己的方法再次实现父类的方法,节省大量创建新类的时间,提高我们的开发效率。
Java只支持单继承,不支持多继承。一个类只能有一个父类,不可以有多个父类。java支持多层继承(继承体系)。Java继承了父类非私有的成员变量和成员方法,但是请注意:子类是无法继承父类的构造方法的。
注意:不要仅为了获取其他类中某个功能而且继承,类与类之间要有所属("is a")关系
方法的重写:
子类从父类继承的某个实例方法无法满足子类的功能需要时,需要在子类中对该实例方法进行重新实现,这样的过程称为重写,也叫覆写,覆盖。
方法重写的前提:继承,子类的修饰符大于等于父类,方法名,参数列表,返回值类型必须相同
多态
多态:一种事物的多种形态(多态的前提:继承,重写,向上转型)
通过多态可以提高代码的可重用性,降低模块之间的耦合度。