JAVA基础复习笔记.docx
《JAVA基础复习笔记.docx》由会员分享,可在线阅读,更多相关《JAVA基础复习笔记.docx(56页珍藏版)》请在冰豆网上搜索。
![JAVA基础复习笔记.docx](https://file1.bdocx.com/fileroot1/2023-4/24/3a53a0c1-e7f8-495f-ad67-af46d2198e23/3a53a0c1-e7f8-495f-ad67-af46d2198e231.gif)
JAVA基础复习笔记
1、方法:
是一段代码结构,可完成特定功能,并可以重复利用。
语法格式
修饰符返回值类型方法名(形式参数列表){
方法体
return返回值;
}
方法:
就是完成某个功能的代码结构;可以把每次执行的方法放到一个代码块中,每次执行本方法时都调用这个代码块,这个完成方法操作的代码块就叫方法(函数)。
抽象(方法中):
把做一类的事情的公共步骤进行总结抽取。
语法格式解释:
A:
修饰符(目前先不管)publicstatic(先记忆)
B:
返回值类型(可以是任何一种数据类型)
B1:
先判断方法是否有返回值
B2:
再判断返回值类型
C:
方法名称
C1:
见名知意(如果英文不会,暂可写拼音)
C2:
名称要符合标识符规则
?
?
D:
形式参数(可以有也可以没有,多个形式参数之间用逗号隔开)
D1:
形式参数类型:
此方法可以接收的参数类型(就是数据类型)
D2:
形式参数名称:
此方法接收的参数名称(符合变量名称特点)
D3:
实际参数:
如果传入方法的形式参数值在方法体内被使用就变为实际参数;否则还叫形式参数
E:
方法体:
完成某功能的所有代码
F:
return返回值
F1:
return可以没有返回值,直接退出方法
F2:
return后的返回值类型必须和B中定义的返回值类型一样
Return一旦执行,则方法结束。
之后不能再有代码。
如何结束返回值是void的方法,单独写return;
方法的编写规则:
A:
位置:
因为main方法直接写在了class内部,所以其它方法也需要写在class内部
B:
在编写方法前,必须先考虑方法的形式参数和返回值
形式参数:
考虑是否需要形式参数,考虑需要几个形式参数,考虑每一个形式参数的数据类型
返回值:
考虑是否需要返回值;若有,则考虑返回值类型。
以上A和B的步骤是定义方法的步骤
C:
分清方法定义和方法执行
光定义方法,而不执行方法,看不到方法返回结果
D:
方法如何执行(如何使用方法)?
可以在别的方法内部调用定义好的方法,用以执行
E:
方法如何调用?
语法:
以:
“类名.”的形式调用,在本类的方法中调用可省略(类名.)
方法名称(形式参数1的值,形式参数2的值,......)
注意:
1这里的形式参数个数必须和定义方法的形式参数个数一致
2每个形式参数的值类型必须和方法定义时对应的形式参数的类型一致
3在方法调用时不用再指明形式参数类型
F:
在调用方法时,是否需要处理方法的返回值?
如果方法有返回值,并且需要在调用它的方法内部进行相关其它处理则需要接收被调用方法的返回值
例题:
任意两个整数,求最大值并且输出或者判等?
了解栈结构的说明?
先进后出。
故应该先写main方法,后写调用方法。
使用方法的注意事项
1、方法编写在class内部,与其它方法平级(不能把方法定义写在其它方法内部)
2、编写方法前需要考虑方法二要素:
形式参数:
是否需要有形式参数;需要形式参数个数;每个形式参数的数据类型
返回值:
是否有返回值;返回值类型
3、调用方法必须在别的方法内调用
调用语法:
方法名(形式参数值);(调用方法时不需要写每个形式参数的数据类型)
4、编写方法时是可以没有返回值的,在返回值类型位置写"void"
(方法没有返回值,并不说明在方法体内不能使用return)
return代表的仅仅是跳出方法
5、要区分方法定义和方法执行(方法是不调用不执行)
Java中常用内存说明:
(记忆)
1、栈内存:
(重点)(开辟空间的方式符合栈结构)
局部变量为某个方法开辟执行空间
2、堆内存(重点)
使用new出来的东西都放到堆内存
3、方法区(次重点)
1class文件的描述信息
2static内部成员
3class文件中方法的描述信息
4常量池
4、本地方法区
java程序调用的本地资源(了解、JNI)
5、寄存器
CPU内部(了解)
数据结构:
在计算机内部,数据和数据之间的关系叫数据结构。
数据结构通过研究人员总结:
常见的数据结构有:
线性结构
栈结构(重点)
队列结构(重点)
树结构(重点)
图结构
?
基本类型做方法参数传递的是变量值,和方法的形式参数名称没有任何关系。
例题07
递归:
就是方法调用自己,调用自己是指在方法体内部去调用自己。
递归二要素:
A:
递归必须有出口
B:
要找出每次调用自身的规律性
例题:
1到10的加法。
Num=n+add(n-1)n=1时是出口
方法重载:
在一个class中,具有相同的方法名,具有类似功能的所有方法之间叫方法重载。
优点:
程序员只需记忆一个方法名即可。
代码美观。
方法重载特点:
(即什么时候会发生重载)
A:
方法重载必须是在一个class内部。
(同一个类中、方法名相同、参数列表不同(类型、个数、顺序)、与返回值类型无关、与方法的修饰符列表无关)
B:
重载的方法之间形式参数个数不同。
C:
形式参数的对应位置的数据类型不同。
例:
System.out.println(...);println方法是一个典型的方法重载
因为它可以输出任意类型的值,在定义方法时就必须可以接收任意类型,肯定使用了方法重载
方法重载判定注意事项:
A:
方法重载的判定和方法返回值无关
B:
方法重载的判定和方法修饰符无关
C:
方法重载和形式参数的名字没关系,只和对应位置的形式参数类型有关
文档注释:
文档注释是为了让别人能方便的使用自己写的代码。
类似于电视机的使用说明书
文档注释和普通注释区别,文档注释并不是为了解释具体代码。
文档注释语法规则:
A:
以杠星星开始,星杠结束
B:
在A中写的每一行注释之前都必须加星号
C:
在类注释和方法注释中都可以用@符号来使用java文档注释定义好的词,来指明特定含义
在让别人使用自己编写的程序时,并不是把编写的.java文件给别人只是把.java文件编译好的.class文件和使用文档注释生成的使用说明书给调用者
如何依据.java文件编写针对此java文件的使用说明书?
A:
编写对应的java文件
B:
在java文件中写好文档注释
C:
先把java文件编译为class文件
D:
使用javadoc命令创建帮助文档
javadoc-d目录名称-version-authorjava文件名称.java
-d:
表明需要创建一个目录
目录名称:
为了把生成的所有帮助文档都放到指定的目录下
-version:
需要在创建的帮助文档中显示版本号
-author:
在帮助文档中显示作者
类注释
这个类是主要为了完成两个数求和
还会把这个类中的特殊方法具体指明
还会把这个类中某个方法的特殊调用方式具体指明
@version1.0
@authorsgx
三:
面向对象
1、面向对象思想
A:
面向过程和面向对象区别
面向过程:
强调做事情的步骤,每一步之间都有一定的因果关系
面向对象:
强调做事情所涉及到的事物,以及事物之间的关系。
方法中的方法体是面向过程的,又因为一个类是对某类事物的特征和行为的抽象,行为以方法的形式体现,所以面向对象又是基于面向过程的。
B:
类定义:
类是对一类事物的特征以及与其相关的行为的抽象集合。
对象定义:
对象是类的一个具体实现。
类是一个抽象的概念,没法在实际中使用,只有具体化的对象才能够在实际编程中使用。
解题步骤:
A:
找对象(找名词):
先要把待解决事情范围内的名词找到
B:
再分析关系
根据事情的实际需要,开始分析每一个名词之间的关系(即对象之间的关系)
类与对象的关系:
类是一类事物的特征以及其相关的行为的抽象集合。
对象是类的某一个具体化事物。
由对象到类是抽象的过程。
由类到对象是具体化(实例化)的过程。
C:
java语言中如果定义一个类?
C1:
定义一个类名称(见名知意)
C2:
确定特征(属性)
C3:
确定行为
D:
java语言中如何创建类的一个对象?
语法定义:
类名称对象名称=new类名称();
E:
如何去访问一个类中的属性(特征)?
语法定义:
对象名称.属性名称=赋值;
在堆内存中,每个对象都占用一份独立的内存空间。
F:
如何去访问一个类中的行为(方法)?
语法定义:
对象名称.方法名称();
那么类的特征和行为在java语言中是如何表示的?
(记忆)
A:
在java程序中是使用类的概念来对应一类事物
在以基础班的学生为一类的例子中,一类事物是学生,所以在java中会定义一个学生类
B:
在java程序中是使用n个变量来对应一类事物的n个特征
在以上例子中学生会有姓名年龄性别学号四个特征,所以在java程序中会使用四个变量来表示。
C:
在java程序中是使用m个方法来对应一类事物的m个行为
以上例子中学生会有学习睡觉吃饭喝水四个行为,所以在java程序中会使用四个方法分别对应这四个行为publicvoid方法名称(){}暂时先把static去掉
一般某个对象的特征是静态的、外在的;一般某个对象的行为是动态的、内在的
"=="号总结:
A:
用于基本数据类型,比较两数的值是否相等
B:
用于引用数据类型:
比较两个数据的内存地址是否一致(比较是否指向同一块内存地址)。
成员变量:
在类的内部,类中方法外部定义的变量叫成员变量
成员方法:
在类内部,和成员变量同级的方法叫成员方法
成员两个字是说明成员变量和成员方法都是所在类的成员
局部变量:
在任何方法内部定义的变量叫局部变量
成员变量和局部变量的区别:
A:
在类中编码位置不同:
成员变量类中、方法外
局部变量方法中
B:
作用域不同:
成员变量整个类中都起作用
局部变量只在方法中
C:
内存中位置不同:
成员变量堆内存
局部变量栈内存
D:
所属不同(生命周期不同):
成员变量随着对象的创建而存在
局部变量随着方法执行而存在
E:
初始化值区别:
成员变量有默认的初始化值
Stringnull
byteshorintlong0
floatdouble0.0
booleanfalse
char'''\u0000'
引用类型null
局部变量必须在第一次使用前被显示初始化
成员变量和局部变量如果同名:
如果发生同名,则就会成员变量和局部变量的作用域范围重叠,那么此时在局部变量所在的方法中输出的是局部变量的值。
原因:
在java中一般为就近原则。
匿名对象:
没有对象名称的对象
没有对象变量名称没有对象变量的数据类型只有new创建对象,而不指明赋值给什么变量。
●类名称做方法参数?
类名称做方法参数实际上是需要这个类的一个对象做方法参数。
●类名称做返回值类型:
实际上是需要类的一个对象做参数。
●引用类型做方法的形式参数:
引用类型做方法的形式参数传递的是地址值
●类名做成员变量需要的是这个类的一个对象赋值。
封装的概述:
封装:
classStudent{
privateStringname;
privateintsex;
privateintage;
publicvoidsetAge(intage){
this.age=age;
}
publicintgetAge(){
returnage;
}
//必须补全针对name、sex的setter、getter方法
}
private:
A:
权限修饰符
B:
可以修饰成员变量、成员方法
C:
被它修饰的成员只能在本类内被访问
封装:
就是该给你用给你用,不该给你用的全不给你用。
使用private控制成员变量或者成员方法的访问权限,被private所修饰的成员变量或者成员方法只能被本类中的成员方法访问。
封装的定义:
把自己的信息全部私有化,并同时对外提供一个公有的访问方法
如果把类中的某个成员变量定义为了private,就必须对应写两个public的方法:
setter方法用于在其它类中赋值
例如:
针对private的成员变量age,对外提供一个访问方法
方法名称固定:
set+成员变量的首字母大写,
因为set方法都是赋值作用,所以必须有形式参数
getter方法用于在其它类中取值
针对age的取值再对外提供一个公有的访问方法
方法名称固定:
get+成员变量首字母大写,有返回值,returnage;
封装总结:
在编写类时,通常是把所有的成员变量都定义为private;并同时为每一个对应的写好setter和getter方法
例如:
classStudent{
privateStringname;
privateintage;
publicvoidsetName(Stringxx){
name=xx;
}
publicStringgetName(){
returnname;
}
publicvoidsetAge(intyy){
age=yy;
}
publicintgetAge(){
returnage;
}
}
封装的设计原则:
把该私有化(private)的都私有化,并对外提供访问接口。
封装的优点:
A:
安全性B:
复用性C:
包装细节,对外提供方法:
例如、USB接口
private:
A:
叫做访问修饰符
B:
修饰成员变量、成员方法
C:
只能本类访问
、this
指向本对象:
类中的每一个非静态成员方法内部都有一个指向本对象的this.
classT{
inta=2;
publicvoidshow(){
inta=4;
System.out.println("a="+a);//4就近原则
System.out.println("a="+this.a);
}
}
this总结:
A:
使用this.成员变量名称可以引用本类的成员变量
B:
使用this.成员方法名称()引用本类内的成员方法(一般情况this不写)
C:
使用this(形式参数值.....)在某个构造方法中调用别的构造方法
一个类在目前讲解过的成员:
A:
成员变量有默认值
B:
成员方法
在成员方法内部可以调用成员变量
在成员方法内部可以调用别的成员方法
在成员方法内部不可以调用任何的自身构造方法
C:
构造方法
在构造方法内部可以调用成员变量
在构造方法内部可以调用本类的其它构造方法
在构造方法内部可以调用本类的成员方法
8、构造方法:
一个类本身就是有构造方法的。
构造方法主要作用是为成员变量赋值。
构造方法:
A:
如果在编写类时没有显示编写构造方法,则在编译为class之前会自动生成一个构造方法。
B:
自动生成的方法没有形式参数
C:
编写构造方法语法
修饰符把类名称作为方法名称(){
}
D:
只要自定义了构造方法,java语言就不会再创建默认的构造方法了
注意:
在自定义构造方法时,必须写一个不带参数的
构造方法调用构造方法:
A:
语法
this(形式参数值......);
B:
必须写第一行
构造方法的重载,为了给成员变量name和age赋初始化值
4被重载
static关键字:
(国籍)
static特点:
A:
static修饰的成员是随着类的加载而创建,在创建类的对象之前就存在
B:
static修饰的成员是被所有此类的对象所共享
修饰成员方法:
静态成员方法通常的调用语法是
类名称.静态方法名称();
静态成员方法和普通成员方法区别:
A:
普通的成员方法(可以非静态,也可以静态)
可以调用普通的成员变量;
可以调用静态的成员变量
可以调用普通的成员方法;
可以调用静态的成员方法
B:
静态的成员方法(只能静态,不能非静态)
不能调用普通的成员变量
可以调用静态的成员变量
不能调用普通的成员方法
可以调用静态的成员方法
为什么静态成员方法只能调用静态?
因为静态成员方法内部没有this,它是属于类(不是属于对象的).
静态成员变量和普通成员变量区别:
A:
内存位置不同
静态成员变量是在方法区的静态描述区
普通成员变量是在堆内存(每个对象内)
B:
所属不同
静态成员变量是属于类的
普通成员变量是属于对象的
C:
生命周期不同
静态成员变量是随着类的加载而创建
普通成员变量是随着对象的创建而创建
D:
调用方式不同
静态成员变量是属于类的
可以使用类名称.静态成员变量的名称来调用
普通成员变量是属于对象的
使用对象名称.成员变量名称来调用
static静态总结:
A:
只要静态,就是类
只要非静态,就是对象
B:
只要静态,调用就需类,不要对象
只要非静态,就必须对象
C:
静态成员就是对象共享
D:
静态方法没有this
E:
静态只能访问静态
非静态可以静态,也可以非静态
代码块:
就是使用大括号括起来的代码
......{
......
}
代码块分类:
1、静态代码块
2、同步代码块(线程的同步控制)
3、构造代码块
4、局部代码块(了解):
作用:
进一步限定变量的作用范围
目前一个类中可能有的成员:
1、成员变量
2、构造方法
3、成员方法
4、静态成员变量
5、静态成员方法
6、静态代码块
7、构造代码块
8、同步代码块
9、局部代码块
10、this
11、super
12、final
基本结构
成员变量
是事物的静态特征
实际上就是变量,必须有变量三要素(初始化值可以有默认值)
成员方法
是事物的内在行为
实际上就是方法,必须注意方法二要素(形式参数、返回值类型)
成员方法的重载
方法重载只发生在一个类内部,名称相同,可以通过形式参数的个数不同或者形式参数对应位置的类型不同来判断
构造方法
在创建对象的过程中被执行
目的是为对象的成员变量赋值
语法是和方法类似,没有返回值类型(就不会在方法内写return)
构造方法是可以被重载的
构造方法可以调用构造方法
语法this(形式参数值......);
静态成员变量
语法使用static修饰
被类的所有对象共用
它是属于类的,随着类的加载而创建
静态成员方法
语法使用static修饰类名称.静态方法名称
属于类的,随着类的加载而创建(不用创建对象,直接调用)
静态成员方法有重载吗?
可以
代码块
静态代码块
在类的内部,和成员变量同级
static{......}
同步代码块
构造代码块
在类的内部,和成员变量同级
{......}
局部代码块
在方法内部,和局部变量同级
{......}
静态代码块构造代码块构造方法
各自的执行时机、执行顺序?
静态代码块:
随着类的加载而执行,并且只执行一次
构造代码块:
随着对象的创建而执行,每次创建对象都执行一次
构造方法:
同构造代码块
执行顺序:
静态代码块>构造代码块>构造方法
关键字
this
指代本对象
this的使用时机:
访问成员变量this.成员变量名称成员方法或者构造方法访问成员变量
访问成员方法this.成员方法名称();一般this省略成员方法访问成员方法
访问构造方法this(形式参数值.....);构造方法访问构造方法
继承:
多个类中有共同的特征和行为,可以把这些特征和行为抽取到一个类中,并使用关键字extends让这多个类和抽取后的共有类产生关系,多个类一般称为子类,共有类一般称为父类(基类)
语法
classFu{
}
继承的特点:
A:
java语言中的类之间的继承只能是单继承
一个类只能继承唯一的一个类
B:
java语言中的类之间是可以有继承体系的
(先考虑类之间相互调用,最后才考虑继承体系)
//子类Zi继承父类Fu
classZiextendsFu{
}
继承特点:
1、在java语言中,一个类只能有一个父类
2、java语言中是支持继承体系
体系:
classFuFu{}
继承关系对子类成员变量的影响:
A:
如果子类本身没有,父类有,则找父类的
B:
如果子类本身有,父类有,则找自己的
C:
如果子类本身没有,父类也没有,则报错误
D:
先自己,后长辈
classFuextendsFuFu{
}
//子类Zi继承父类Fu
classZiextendsFu{
}
继承的注意事项:
子类不能继承父类的私有成员
继承对子类成员方法的影响:
A:
如果子类没有,父类有,调用父类的
B:
如果子类有,父类有,同名方法,则调用子类的
classFu{
privateintj=10;
publicvoidshow(){
syso("j="+j);
继承对于子类构造方法的影响
A:
在创建子类对象执行子类构造方法前,必须先执行父类的无参构造方法。
无论是调用子类的无参还是带参的构造方法,
都默认会调用父类的无参构造方法
B:
如何从子类构造方法中调用父类的带参构造方法
语法格式
super(形式参数值......);
C:
如果在子类构造方法中使用super关键字指明了调用父类的哪个构造方法
则就不会再去调用默认的父类无参的构造方法了
D:
super和this调用构造方法的语句在子类的一个构造方法内都必须放第一行
在子类的同一个构造方法内,super和this不可能同时出现
}
}
classZiextendsFu{
publicvoidshow1(){
show();
}
}
publicclassT{
publicstaticvoidmain(String[]args){
Zizz=newZi();
zz.show1();
}
}
子类只能使用父类的构造方法,不能继承父类的构造方法
super的使用:
super指代父类(指向父类成员所在内存区域)
通常用于从子类中去调用父类成员
调用父类成员变量:
super.成员变量名称
super.成员变量名称this.成员变量名称局部成员变量名称
调用父类成员方法:
super.成员方法名称
调用父类构造方法:
super(形式参数值);
如果在子类构造方法中去调用父类的构造方法,则必须写在第一行,并且如果已经写了super
调用父类构造方法,就不能再使用this调用本类的别的构造方法了
方法重写(覆盖):
在子类中方法的方法名称和方法形式参数都和父类某个方法一样,在方法体内编写子类特有的功能
如何去重写父类方法?
除了修饰符之外,要和父类方法一致
注意事项:
子类中重写方法的访问权限必须大于等于父类的被重写方法
子类中不能重写父类中私有的方法
在创建对象过程中静