java基础总结精品.docx
- 文档编号:9229094
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:43
- 大小:46.35KB
java基础总结精品.docx
《java基础总结精品.docx》由会员分享,可在线阅读,更多相关《java基础总结精品.docx(43页珍藏版)》请在冰豆网上搜索。
java基础总结精品
学习总结
第一章
一、java语言的平台版本
有三个版本,分别为javaSE标准版(桌面级程序开发,该技术也是其他两项技术体系的基础)、javaME小型版(为开发电子消费产品和嵌入式设备提供的解决方案)和javaEE企业版(为企业级应用程序开发提供解决方案,主要针对Web应用程序开发)。
二、java语言的特点
简单性
面向对象
分布式处理
健壮性
结构性
开源
跨平台
三、跨平台
1.因为有JVM(虚拟机)的存在,java编写的程序可以在不同的系统平台上都可以使用。
2.JRE、JDK与JVM
JVM:
虚拟机,负责java程序在该系统中的运行。
JRE:
是java的运行环境,包含了JVM和程序运行所需的核心类库。
JDK:
java开发的工具包,包含java开发所需用到的工具和JRE
3.java语言是跨平台的,但是JVM不是跨平台的;使用JDK开发完成的程序,交给JRE去运行。
四、类的定义及使用
1.类的定义
类是java中最基本的单位。
类中的大括号都是成对{}出现,缺一不可。
勒种所有符号都是英文。
格式
class类名{
主函数(方法)
publicstaticvoidmain(String[]args){
代码块
输出语句
System.out.println(“helloworld”);
}
}
第二章
一、关键字
概述:
被java赋予特定含义的单词叫关键字。
字母全部是小写形式。
goto和const,作为保留字目前不使用。
二、标识符
1.概述:
给类、方法、变量、接口等起名字是使用的字符数列
2.组成规则:
①英文大小写字母
②数字字符
③$和_开头
3.注意:
①不能以数字开头
②不能是java中的关键字
③区分大小写
三、注释
1.概述:
用于解释说明所编写的程序,被注释的文字不会被程序(JVM)执行。
2.分类:
①单行注释//
②多行注释/**/
③文本注释/**....*/
3.好处
①可以提高代码的阅读性,还可以在编译过程中帮助排错。
②通过先写注释可以很好地帮助编程者理清思路,便于后续编程工作。
四、常量
1.概述:
①在程序运行过程中值不可改变。
②可以分为字面值常量和自定义常量。
例举:
字符串常量:
用双引号括起来String="hello";
整数常量:
所有的整数int=25;1,2,3,4.....
小数常量:
所有小数double=21.15;12.1,65.598,47.789.....
字符常量:
用单引号括起来,单个字符char='A';'中'......
布尔值常量:
只有true和falseboolean=true/false
空常量:
用null表示,表示是一个空的常量。
2.进制
进制就是一个数逢几进一,单个位数上的数到达这个数单个位数字上限时,往前进一位,以此累计。
一些常用的进制及表述方式:
二进制:
由0、1组成,以0b开头。
八进制:
由0~7组成,以0开头。
十进制:
由0~9组成,整数默认是十进制,即日常生活中我们使用的一些普通算术、数字都是十进制数。
十六进制:
由0~9、a、b、c、d、e、f(大小写都可以)组成,以0x开头。
五、变量
1.概述
在程序运行过程,其值可以根据一定改变的量。
2.定义格式
数据类型变量名=初始化值。
3.注意
①定义在哪一级的{}内,则此变量的作用范围在这个{}内,同一个作用范围内不能定义多个同名的变量;
②变量需要初始化后才能使用;
③分多行定义多个变量,可提高代码的可读性。
六、数据类型
1.分为基本数据类型和引用数据类型
①基本数据类型
整型(取值范围):
byte(-128~127)、
short(-2^15~2^15-1)、
int(-2^31~2^31-1)、
long(-2^63~2^63-1)
浮点型:
float(-3.403E38~3.403E38)、
double(-1.798E308~1.798E308)
字符型:
char(0~65535)
布尔型:
boolean(false/true)
②引用数据类型
string
类
接口
数组
2.转换问题
①小的转换成大的类型,直接可以转(隐式转换)
②大的转换成小的类型,需要进行强转。
强转的格式:
目标类型变量名=(目标类型)(被转换的数据)
七、运算符
概述:
对常量和变量进行操作的符号称为运算符
分类:
算术运算符
加+减-乘*取商/取余%自增++自减--
赋值运算符
把右边的值赋给左边(不是等于号)
=,+=,-=,*=,/=,%=
比较运算符
比较左右两边的值,结果都是blean型的(true/false)
相等于==
不等于!
=
大于>小于<
大于等于>=小于等于<=
逻辑运算符
比较的结果也是boolean型
&单与:
前面表达式成立与否后面都会执行,两边都成立才是true。
&&双与:
前面成立后面执行,前面不成立,后面不执行,两边都成立才是true。
|单或:
前面成立后面还是会执行,前后一边成立就是true,都不成立才是false。
||双或:
前面成立后面不执行,否则继续执行后面,前后一边成立就是true,否则false。
^异或:
前后一样就为false,否则就是true。
!
非:
否定你的结果。
位运算符
<<左移:
相当于*2,移几次*几次。
>>右移:
相当于/2,移几次/几次。
>>>无符号右移:
无论最高位是1还是0,左边被移空的高位都填入0。
&与运算:
两个1为1,否则为0。
|或运算:
一个1为1,否则0。
^异或运算:
不同为1,相同为0。
三目运算符
格式:
(关系表达式)?
表达式1:
表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2
八、键盘录入
当我们需要同时录入多个甚至未知个数的数据时,固定的定义方式已经不能满足我们的需要,所以java提供了键盘录入功能。
格式:
①导入包importjava.util.Scanner;
②Scanner录入对象名=newScanner(System.in);
③接收数据:
数据类型变量名=录入对象名.next数据类型();String类型时后面直接是.next()
九、流程控制语句
顺序结构
概述:
按照代码的先后顺序执行程序。
选择结构
概述:
也叫分支结构,经过某些特定的判断条件后执行的特定的代码
有两种选择结构语句:
①if语句
if(条件){代码};
if(条件1){代码1}else{代码2};
if(条件1){代码1}elseif(条件2){代码2}else{代码2}
②switch语句
switch(条件){
case条件1:
代码1
break;(跳出当前)
case条件2:
代码2
break;
case条件3:
代码3
break;
.
.
.
default:
break;
}
循环结构
概述:
满足指定条件,重复执行某段代码。
for循环
格式:
for(初始化条件;条件范围;控制条件){
代码
}
while循环
格式:
①
while(判断条件){
代码
}
②
do{
代码
}while(判断条件);
跳转控制语句
break跳出当前循环,后面不执行
continue跳过本次循环,后面代码继续执行
return返回一个值
第三章
关于方法
方法就是一段可以被重复调用,完成特定功能的代码块。
限制条件:
在主类中定义,并且由主方法直接调用的方法形式。
格式:
权限修饰符返回类型方法名称([参数类型变量,......]){
方法体代码;
return返回值;
}
注意:
①方法不调用不执行
②方法与方法之间是平级关系,不可以嵌套使用
③参数用","隔开
④调用不用传递数据类型
⑤有返回值类型一定要return带回一个值
⑥相互之间可以互相调用
方法重载
定义:
在同一个类中,方法名相同,参数列表不同,与返回值类型无关。
方法重写
定义:
重写方法必须和被重写的方法拥有同样的方法名,参数列表和返回值类型。
注意:
重写的方法不能比被重写的权限更低;
不能比被重写方法抛出更大范围的异常。
数组
定义:
在一段连续内存空间中,多个同一类型元素的集合。
一维数组:
格式:
数据类型[]数组名=new数据类型[数组长度];(动态初始化)
格式:
数据类型[]数组名={元素1,元素2,……};(静态初始化)
二维数组:
格式:
数据类型[][]数组名=new数据类型[一维数组的个数][一维数组元素个数];
格式:
数据类型[][]数组名={{元素1,元素2……},{元素1,元素2…},{元素1,元素2…}};
面向对象
思想概述:
面向对象是基于面向过程的思想编程。
面向对象是不断创建对象,使用对象,指挥对象做事情。
面向对象的特征:
封装、继承、多态和抽象(低版本有,高版本取消)
类与对象关系
类是java程序的基本单位,是对象属性和方法的集合,相当于一个模板。
对象是类的具体化,拥有具体的数据。
属性(成员变量):
描述一个具体对象的特征。
方法(成员方法):
用来描述对象的行为。
创建对象:
类名对象名=new类名();
调用:
对象名.成员变量
对象名.成员方法
成员变量和局部变量的区别
成员变量:
成员的属性。
局部变量:
在方法声明中(定义)的变量。
区别:
①所在的位置不同
成员变量:
在类中方法外。
局部变量:
在方法定义或声明中,或其他代码块内部(如:
for循环)。
②内存位置不同
成员变量:
在堆内存。
局部变量:
在栈内存。
③初始化不同
成员变量:
有默认初始化。
byte、short、int、long默认值0
float、double默认值0.0
char默认值'\u000'
boolean默认值false
引用类型默认值null
局部变量:
没有默认初始化,必须先定义赋值后才能使用。
④周期性不同
成员变量:
随着对象的创建而出现,随着对象的消失而消失。
局部变量:
随着方法的调用而存在,随着方法的调用完毕而结束。
构造函数
1.构造函数中不能有return关键字。
2.构造函数间的调用this语句,并且该语句必须放在有效代码第一行。
3.一个类中默认含有一个空参构造函数(无参构造),权限和所属类的权限一致。
构造代码块
1.在创建类的对象时构造代码块中代码都会执行,且先于构造方法。
2.构造代码块的主要是为对象的公有属性初始化。
形式参数为类时的调用
基本类型:
形参改变不影响实参
引用类型:
形参改变直接影响实参
匿名对象
就是没有名字的对象,在仅仅只调用一次的时候使用,使用完毕后被垃圾回收器回收,可提高空间的利用率。
匿名对象可以作为实参来传递。
第四章
一、封装
java考虑到一些潜在的问题(如违背自然规律的定义,age=1000;等,
)所以提供了封装,来保护成员变量。
概述:
私有化的属性,公有化的方法。
(通过公有化的方法去访问私有化的成员,即成员变量和成员方法)。
提高代码的复用性和安全性,隐藏实现细节,提供公共的访问方式。
访问控制符
java提供了访问控制符来限制访问的权限。
分别是由小到大是:
private--默认--protected--public
二、关键字
private
权限修饰符
this
表示当前对象所在类的引用
super
表示对父类对象的引用
static
1.针对有多个对象有共同的成员变量值的时候,java提供了一个关键字的修饰:
static(静态)
2.特点:
可以修饰成员变量,也可以修饰成员方法,被静态修饰只能访问静态的成员变量和方法,静态方法中不能使用this、super关键字。
①随着类的加载而加载
②优先于对象存在
③被类的所有对象共享
④可以通过类名.来调用,也可以使用对象名来调用
静态变量和成员变量的区别
所属不同
静态变量属于类,所以也称为为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
内存中位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
调用不同
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用
代码块的执行顺序
1.静态代码块
在类中方法外,用static修饰,给类初始化,只用一次
2.构造方法代码块
使用{}括起来的内容,根据位置的不同
3.构造代码块
构造方法里的代码块
4.局部代码块
在方法中出现,限定变量的生命周期,及早释放提高内存的利用率
第五章
一、继承
概述:
把重复的代码放入一个类中,其他类要使用相同的属性和行为时,可以直接跟公共的类借用。
为此,java为我们提供了继承(extend)的技术。
所产生了子父类关系,父类也叫基类和超类,子类也叫派生类。
格式:
class子类名extends父类名{}
继承的特点:
1.只支持单一继承,不支持多继承,一父多子可取,反之不可取
2.可以有多层继承
注意:
1.子类只能继承父类中的非私有的成员
2.不要为了实现部分功能而去继承
3.子类不能继承父类的构造方法,但是可以用super关键字去访问父类的构造方法
关于final关键字
由于继承中方法有一个重写的现象,父类功能就会被子类覆盖,这种情况java提供了final关键字来修饰。
被final修饰后的特点:
1.变量变成了常量,其值不可变
2.类不能被继承
3.方法不能被重写
4.局部变量:
基本类型,值不可改变;引用类型,地址值不能改变,但是其属性(内容)可变。
5.final修饰变量的初始化时机,在对象完成构造之前即可。
二、多态
概述:
某一事物在不同时刻表现出来的不同状态。
前提:
1.有继承;
2.方法有重写;
3.父类引用指向的是子类对象。
针对于多态:
数据类型大的变量名=new数据类型小的
多态成员访问的特点:
1.成员变量:
运行看左边;
父类和子类都拥有相同的成员时,先使用子类的,成员变量(属性)运行就看左边(自动类型提升)。
2.成员方法:
运行看右边(引用的是子类的方法);
子类里面没有方法重写时用的是父类的方法,子类有重写的前提下,运行时看右边,父类的调用,其实用的是子类的方法。
3.静态方法:
运行看左边
静态方法不能算方法的重写,静态方法属于类成员,随着类的加载而加载。
多态好处:
提高程序的维护性,扩展性
多态弊端:
不能访问子类的特有功能
多态的转型问题
1.向上转型:
父类父类对象名A=new子类;
直接自动类型提升了。
2.向下转型:
子类子类对象名B=(子类)父类对象名A
要进行强制类型转换,意味着父类要引用子类的特有功能。
二、抽象类
概述:
在JAVA中一个没有方法体的方法定义为抽象方法,在类中如果有抽象方法,那么该类必须定义为抽象类。
抽象类特点:
关键字:
abstract修饰,表示这个方法是抽象方法
格式:
abstractclass类名{}
publicabstractvoideat();
注意:
1.有抽象方法的一定是抽象类,抽象类不一定有抽象方法;(抽象类的非抽象方法是为了提高代码的服用性)
2.抽象类不可以创建实例化对象,按照多态的方式由具体的子类实例化,这也是多态的一种,抽象类多态;
3.抽象类可以继承抽象类;
4.子类方法的修饰符要大于等于父类的访问修饰符权限。
抽象类的子类:
1.要么是抽象类(如果不想重写抽象方法,那么该子类就是一个抽象类);
2.要么重写抽象类中所有的抽象方法(重写所有的抽象方法,这个时候子类是一个具体类)。
抽象类的成员特点
成员特点
1.可以是常量也可以是变量
2.可以有私有的方法和属性
构造方法
1.有构造方法,但不能实例化
2.用于子类访问父类数据的初始化
成员方法
1.可以有抽象方法(限定子类必须完成某些动作)
2.也可以有非抽象方法(提高代码的服用性)
什么时候使用抽象类?
当更多的子类要去实现相同的方法时,并且实现的方式不一样的时候,就使用抽象类。
子类要用几个方法,抽象类中就声明几个抽象方法。
abstract不能和哪些关键字共存
1.private冲突
2.final冲突
3.static无意义
三、接口
概述:
为了实现功能的扩展性,用接口来定义这些事物的额外功能。
注意:
1.接口里面可以有方法,只能有抽象方法
2.可以有常量,并且是静态的
接口特点
1.接口用关键字interface表示
格式:
interface接口名{}
2.类实现接口用implements表示
格式:
class类名implements接口名{}
成员变量特点:
1.成员变量默认修饰符:
publicstaticfinal
2.只能是常量
成员方法特点:
1.成员方法默认修饰符:
publicabstract
2.只能是抽象方法
构造方法
没有,因为接口主要是扩展功能的,而没有具体存在
接口能不能实例化?
接口不可以创建实例化对象,按照多态的方式由具体的子类实例化,这也是多态的一种,接口多态
接口的子类:
1.要么是抽象类
2.要么重写抽象类中所有的抽象方法(重写所有的抽象方法,这个时候子类是一个具体类)。
类与接口的各个关系
类与类
继承关系,只能单继承,不支持多继承,但是可以多层继承
类与接口
实现关系,可以单实现也可以多实现,还可以在继承一个类的同时实现多个接口
接口与接口
继承关系,可以单继承也可以多继承
抽象类与接口的区别
抽象类
1.抽象类里面可以是抽象方法和非抽象方法,但是有抽象方法的一定是抽象类
2.成员变量可以是变量也可以是常量
3.抽象类不支持多继承
接口
1.接口里面只能有抽象方法
2.成员变量只能是常量
3.接口支持多继承
四、包
概述:
其实就是文件夹,用于对类进行分类管理
包的格式:
package包名;
多级包用.分开即可
注意事项:
package语句必须是程序的第一条可执行的代码
package语句在一个java文件中只能有一个
如果没有package,默认表示无包名
导包:
概述
不同包下的类之间的访问,我们发现,每次使用不同包下的类的时候,都需要加包的全路径。
比较麻烦。
这个时候,java就提供了导包的功能。
格式:
import包名;
注意:
1.这种方式导入是到类的名称。
2.虽然可以最后写*,但是不建议。
3.package,import,class有顺序关系,不能打乱顺序。
五、权限修饰符
权限从大到小排序:
大:
public-->protected-->默认(default)-->private:
小
public(公共访问权限):
如果一个成员(包括成员变量、方法和构造器)或外部类使用此修饰,那么这个成员或外部类可以被所有的类访问,也可以被不同包下子类访问,不管是访问和被访问类是否在同一个包下,或是否有继承关系。
protected(子类访问权限):
一个成员使用此访问控制符,那么此成员可以被同个包下的其他类访问,也可以被不同包下的子类访问,如果使用protected来修饰一个方法,通常希望子类来重写这个方法(受保护的)。
默认(default包访问权限):
一个成员或者外部类不使用任何访问修饰符,就认为它是一个包访问权限,可以被相同包下的其他类访问。
private(当前类访问权限):
一个成员使用此修饰符,则此成员只能当前类的内部被访问,此用来修饰成员变量最合适。
一般情况下,如果构造器私有化,那么意味着当前类不能被创建对象使用,如果不能被创建对象,那么此类的非静态成员就不能被访问,如果此类所有成员都是静态的,那么此类可以看成是一个工具类
类及其组成可以用的修饰符
类:
默认,public,final,abstract
我们自己定义:
public居多
成员变量:
四种权限修饰符均可,final,static
我们自己定义:
private居多
构造方法:
四种权限修饰符均可,其他不可
我们自己定义:
public居多
成员方法:
四种权限修饰符均可,fianl,static,abstract
我们自己定义:
public居多
六、内部类
概述:
定义在类里面的类,内部类的出现很大程度上是为了解决java多继承的问题。
内部类的访问特点:
内部类可以直接访问外部类的成员,包括私有。
外部类要访问内部类的成员,必须创建对象。
创建内部类对象
格式:
外部类名.内部类名变量名=new外部类名.new内部类名()
成员内部的常见修饰符
1.private为了保证数据的安全性
2.static为了让数据访问更方便
3.被静态修饰的成员内部类只能访问外部类的静态成员,非静态成员可以访问一切成员。
内部类被静态修饰后的方法
静态方法
非静态方法
1:
非静态的成员内部类,成员只能是非静态的。
2:
内部类被静态修饰后的方法有静态和非静态之分。
他们的访问和不用静态是不一样的。
访问非静态方法:
外部类名.内部类名对象名=new外部类名.内部类名();
访问静态方法:
上面创建的对象访问,或者外部类名.内部类名.方法名();
局部内部类
局部属性的成员变量是被final修饰的。
1.可以直接访问外部类成员
2.在局部位置可以创建内部类对象,通过对象调用内部类方法来使用局部内部类功能。
匿名内部类
概述:
就是没有名字的内部类
前提是存在一个类或者接口,可以是具体类或者抽象类,本质是一个继承了类或者实现了接口的子类匿名对象。
格式:
new类名或者接口名(){重写方法;}
好处:
1.不需要特地的去创建一个类来实现接口。
2.使用一次丢弃,提高空间利用率。
第七章
API(ApplicationProgrammingInterface)
概述:
API指的就是JDK中提供的各种功能的Java类。
一、Object类
是所有类的父类,所有的类都会直接或者间接地继承Object类。
Object类的成员方法
publicinthashCode()
返回一个哈希码值,对象存储的地方,用地址表示,是一个十六进制值。
Studentstu=newStudent();
Studentst=stu;
stu和st指向的是堆内存中同一个对象,所以他们的地址(stu.hashCode()/st.hashCode())是一样的。
publicfinalClassgetClass()
返回当前运行时具体类的路径
publicStringtoString()
以字符串形式输出
publicboo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 基础 总结 精品