Java基础必看总结.docx
- 文档编号:11358614
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:165
- 大小:86.62KB
Java基础必看总结.docx
《Java基础必看总结.docx》由会员分享,可在线阅读,更多相关《Java基础必看总结.docx(165页珍藏版)》请在冰点文库上搜索。
Java基础必看总结
一、基础知识:
1、JVM、JRE和JDK的区别:
JVM(JavaVirtualMachine):
java虚拟机,用于保证java的跨平台的特性。
java语言是跨平台,jvm不是跨平台的。
JRE(JavaRuntimeEnvironment):
java的运行环境,包括jvm+java的核心类库。
JDK(JavaDevelopmentKit):
java的开发工具,包括jre+开发工具
2、环境变量path和classpath的作用是什么?
(1)path是配置Windows可执行文件的搜索路径,即扩展名为.exe的程序文件所在的目录,
用于指定DOS窗口命令的路径。
(2)Classpath是配置class文件所在的目录,用于指定类搜索路径,JVM就是通过它来寻找该类的class类文件的。
3、变量有什么用?
为什么要定义变量?
什么时候用?
答:
变量的作用:
用来存储数据。
为什么要定义变量:
用来不断的存放同一类型的常量,并可以重复使用
4、&和&&的区别?
答:
(1)&&会出现短路,如果可以通过第一个表达式判断出整个表达式的结果,则不继续后面表达式的运算;
只能操作boolean类型数据;
(2)&不会出现短路,将整个表达式都运算。
既可以操作boolean数据还可以操作数。
5、标示符命名规则:
由数字(0-9),大小写英文字母,以及_和$组成。
不能以数字开头。
不能使用关键字来自定义命名。
6、数据类型:
(1)基本数据类型(4类8种):
整数类型:
byte、short、int、long
浮点数类型:
float、double
字符类型:
char
布尔类型:
boolean(turefalse)
(2)引用数据类型:
类
接口
数组
7、类型转换
精度从高到低doublefloatlongintshort(char)byte
(1)自动类型转换将一个低精度---à高精度
(2)强制类型转换将一个高精度---à低精度(精度会下降)
8、java语言的三种技术架构
J2EE:
企业版
是为开发企业环境下的应用程序提供的一套解决方案。
该技术体系中包含的技术如Servlet、Jsp等,主要针对于Web应用程序开发。
J2SE:
标准版
是为开发普通桌面和商务应用程序提供的解决方案。
该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。
比如Java版的扫雷。
J2ME:
小型版
是为开发电子消费产品和嵌入式设备提供的解决方案。
该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。
9、java的跨平台性:
通过Java语言编写的应用程序在不同的系统平台上都可以运行。
跨平台的原因:
只要在需要运行java应用程序的操作系统上,先安装一个Java虚拟机(JVMJavaVirtualMachine)即可。
由JVM来负责Java程序在该系统中的运行。
10、有符号数据的表示法(次重点)
原码,反码(原码取反),补码(反码+1)。
11、函数
定义:
函数就是定义在类中的具有特定功能的一段独立小程序。
特点:
定义函数可以将功能代码进行封装
便于对该功能进行复用
函数只有被调用才会被执行
函数的出现提高了代码的复用性
对于函数没有具体返回值的情况,返回值类型用关键字void表示,
那么该函数中的return语句如果在最后一行可以省略不写。
函数的应用两个明确:
明确要定义的功能最后的结果是什么?
明确在定义该功能的过程中,是否需要未知内容参与运算
12、重载:
概念:
在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
特点:
与返回值类型无关,只看参数列表(参数类型以及参数个数)。
好处:
方便于阅读,优化了程序设计。
13、数组:
概念:
同一种数据类型的集合。
好处:
可以自动给数组中的元素从0开始编号,方便操作这些元素。
14、内存结构:
栈内存:
用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存:
数组和对象,通过new建立的实例都存放在堆内存中。
方法区:
静态成员、构造函数、常量池、线程池
本地方法区:
window系统占用
寄存器:
二、面向对象
1、面向对象思想:
(1)概述:
面向对象是相对于面向过程而言的,面向过程强调的是功能,面向对象强调的是将功能封装进对象,
强调具备功能的对象;
(2)思想特点:
A:
是符合人们思考习惯的一种思想;
B:
将复杂的事情简单化了;
C:
将程序员从执行者变成了指挥者;
比如我要达到某种结果,我就寻找能帮我达到该结果的功能的对象,如我要洗衣服我就买洗衣机,
至于怎么洗我不管。
(3)特征:
封装:
隐藏对象的属性和实现细节,仅对外提供公共访问方式
继承:
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义
这些属性和行为,只要继承那个类即可。
多态:
一个对象在程序不同运行时刻代表的多种状态,父类或者接口的引用指向子类对象
2、类和对象:
类:
对现实世界中某类事物的描述,是抽象的,概念上的定义。
对象:
事物具体存在的个体。
3:
成员变量和局部变量的区别(重点)
(1)作用域
成员变量:
针对整个类有效。
局部变量:
只在某个范围内有效。
(一般指的就是方法,语句体内)
(2)存储位置
成员变量:
随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中。
局部变量:
在方法被调用,或者语句被执行的时候存在,存储在栈内存中。
当方法调用完,或者语句结束后,就自动释放。
(3)初始值
成员变量:
有默认初始值。
局部变量:
没有默认初始值,使用前必须赋值。
4、匿名对象
(1)匿名对象就是没有名字的对象。
是对象的一种简写形式。
(2)应用场景
A:
只调用一次类中的方法。
B:
可以作为实际参数在方法传递中使用
5、封装:
指隐藏对象的属性和实现细节,仅对外提供公共访问方式;比如电脑机箱、笔记本等
好处:
将变化隔离;
方便使用;
提高复用性;
提高安全性
6、关键字private:
封装在代码中的体现
(1)私有的意思,权限修饰符
(2)用来修饰成员变量和成员函数
(3)用private修饰的成员只在本类中有效
(4)私有是封装的一种体现
7、构造方法:
(1)特点:
方法名与类名相同
没有返回类型
没有返回值
(2)作用:
构造函数是用于创建对象,并对其进行初始化赋值,对象一建立就自动调用相对应的构造函数,
(3)构造方法的注意事项:
A:
如果一个自定义类没有构造方法,系统会默认给出一个无参构造方法。
B:
如果一个自定义类提供了构造方法,那么,系统将不再给出无参构造方法。
这个时候,你可以不使用无参构造方法。
如果你想使用,那么,就必须手动给出无参构造方法。
建议:
一般情况下,我们的自定义类都要手动给出无参构造方法。
(4)构造方法和成员方法的区别
A:
格式区别
构造方法和类名相同,并且没有返回类型,也没有返回值。
普通成员方法可以任意起名,必须有返回类型,可以没有返回值。
B:
作用区别
构造方法用于创建对象,并进行初始化值。
普通成员方法是用于完成特定功能的。
C:
调用区别
构造方法是在创建对象时被调用的,一个对象建立,只调用一次相应构造函数
普通成员方法是由创建好的对象调用,可以调用多次
8、构造代码块:
(1)作用:
给对象进行初始化,对象一建立就执行,而且优先于构造函数执行
(2)构造代码块和构造函数的区别:
构造代码块是给所有不同对象的共性进行统一初始化
构造函数是给对应的对象进行初始化
9、this关键字
(1)this关键字代表本类对象的一个引用,谁调用this所在的方法,this就代表谁
(2)this的使用场景
A:
用于区分同名成员变量和局部变量;
B:
在定义函数时,该函数内部要用到调用该函数的对象时,因为此时对象还没建立,故this代表此对象
B:
构造函数间调用
**这个时候,this(参数)必须作为第一条语句存在。
10、Personp=newPerson();在内存中做了哪些事情。
(1)将Person.class文件加载进内存中。
(2)如果p定义在主方法中,那么,就会在栈空间开辟一个变量空间p。
(3)在堆内存给对象分配空间。
(4)对对象中的成员进行默认初始化。
(5)对对象中的成员进行显示初始化。
(6)调用构造代码块对对象进行初始化。
(如果没有就不执行)
(7)调用构造方法对对象进行初始化。
对象初始化完毕。
(8)将对象的内存地址赋值给p变量,让p变量指向该对象。
11、static关键字:
(1)静态的意思,用来修饰成员变量和成员函数
(2)静态的特点:
随着类的加载而加载
优先于对象存在
对所有对象共享
可以被类名直接调用
(3)静态的注意事项
A:
静态方法只能访问静态成员
为什么:
因为静态的内容是随着类的加载而加载,它是先进内存的。
B:
静态方法中不能使用this,super关键字
C:
主方法是静态的
publicstaticvoidmain(String[]args)
public:
公共的意思,是最大权限修饰符。
static:
由于jvm调用main方法的时候,没有创建对象。
只能通过类名调用。
所以,main必须用static修饰。
void:
由于main方法是被jvm调用,不需要返回值。
用void修饰。
main:
main是主要的意思,所以jvm采用了这个名字。
是程序的入口。
String[]:
字符串数组
args:
数组名
在运行的时候,通过java命令给args数组赋值。
格式:
javaMainTesthelloworlditcast
(4)静态变量和成员变量的区别
A:
调用方式
静态变量也称为类变量,可以直接通过类名调用。
也可以通过对象名调用。
这个变量属于类。
成员变量也称为实例变量,只能通过对象名调用。
这个变量属于对象。
B:
存储位置
静态变量存储在方法区长中的静态区。
成员变量存储在堆内存。
C:
生命周期
静态变量随着类的加载而存在,随着类的消失而消失。
生命周期长。
成员变量随着对象的创建而存在,随着对象的消失而消失。
D:
与对象的相关性
静态变量是所有对象共享的数据。
成员变量是每个对象所特有的数据。
(5)静态的优点和弊端
优点:
对对象的共享数据进行单独空间的存储,节省内存,没有必要每个对象都存储一份
可直接被类名调用
弊端:
生命周期过长,随着类的消失而消失
访问出现权限,即静态虽好但只能访问静态
(6)什么使用使用静态呢?
A:
当所有对象共享某个数据的时候,就把这个成员变量定义为静态修饰的。
B:
当某个方法没有访问该类中的非静态成员,就可以把这个方法定义为静态修饰。
静态的生命周期比较长,所以一般不推荐使用。
(7)静态代码块
A:
它只执行一次,它比main还先执行。
B:
执行顺序
静态代码块--构造代码块--构造方法
12、制作API(次重点)
API(全拼):
ApplicationProgramInterface应用程序编程接口。
(1)类中的内容需要用文档注释。
(2)使用JDK\bin目录下的javadoc工具。
格式:
javadoc-d目录-author-versionArrayTool.java
13、单例设计模式:
(1)设计模式:
解决某类问题行之有效的方法,是一种思想,是规律的总结
(2)用来保证某个类在内存中只有一个对象
(3)保证唯一性的思想及步骤
**为了避免其他程序建立该类对象,先禁止其他程序建立该类对象,即将构造函数私有化
**为了其他程序访问到该类对象,须在本类中创建一个该类私有对象
**为了方便其他程序访问到该类对象,可对外提供一个公共访问方式
比如API中的Runtime类就是单例设计模式。
(4)单例设计模式的两种方式
A:
饿汉式当类加载的时候,就创建对象。
classStudent
{
privateStudent(){}
privatestaticfinalStudents=newStudent();
publicstaticStudentgetInstance()
{
returns;
}
}
B:
懒汉式当使用的使用,才去创建对象。
classStudent
{
privateStudent(){}
privatestaticfinalStudents=null;
publicstaticStudentgetInstance()
{
if(s==null)
{
//线程1就进来了,线程2就进来了。
s=newStudent();
}
returns;
}
}
饿汉式和懒汉式的区别:
**
饿汉式是类一加载进内存就创建好了对象;
懒汉式则是类才加载进内存的时候,对象还没有存在,只有调用了getInstance()方法时,
对象才开始创建。
**
懒汉式是延迟加载,如果多个线程同时操作懒汉式时就有可能出现线程安全问题,解决线程安全问题
可以加同步来解决。
但是加了同步之后,每一次都要比较锁,效率就变慢了,
所以可以加双重判断来提高程序效率。
注:
开发常用饿汉式,因为饿汉式简单安全。
懒汉式多线程的时候容易发生问题
14、Math类的使用(重点)
(1)数学操作类:
该类没有构造函数,方法均为静态的
(2)掌握内容
A:
成员变量
**E:
比任何其他值都更接近e(即自然对数的底数)的double值。
**PI:
比任何其他值都更接近pi(即圆的周长与直径之比)的double值。
B:
成员方法
**staticdoubleabs(doublea)
返回double值的绝对值。
返回绝对值
**staticdoubleceil(doublea)
返回最小的(最接近负无穷大)double值,该值大于等于参数,并等于某个整数。
**staticdoublefloor(doublea)
返回最大的(最接近正无穷大)double值,该值小于等于参数,并等于某个整数。
**max:
返回两个值中较大的那个
**min:
返回两个值中较小的那个
**staticlonground(doublea)返回最接近参数的long。
staticintround(floata)返回最接近参数的int。
**staticdoublerandom()
返回带正号的double值,该值大于等于0.0且小于1.0。
**staticdoublepow(doublea,doubleb)
返回第一个参数的第二个参数次幂的值。
**staticdoublesqrt(doublea)
返回正确舍入的double值的正平方根。
15、Random类的使用(重点)
(1)产生随机数的类
(2)掌握内容
A:
构造方法
**Random()创建一个新的随机数生成器。
**Random(longseed)使用单个long种子创建一个新的随机数生成器。
B:
成员方法
**intnextInt()返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的int值。
**intnextInt(intn)返回一个伪随机数,它是取自此随机数生成器序列的、
在0(包括)和指定值(不包括)之间均匀分布的int值。
16、Scanner类的使用
(1)可以获取从键盘的输入数据
(2)掌握内容
构造方法:
Scanner(InputStreamsource)构造一个新的Scanner,它生成的值是从指定的输入流扫描的。
如:
Scannersc=newScanner(System.in);
方法摘要
sc.nextInt();获取整型数据
sc.nextLine();获取字符串数据
17、继承(重点)
(1)把很多类的相同特征和行为进行抽取,用一个类来描述。
让多个类和这个类产生一个关系。
这样的话,多个类就可以省略很多代码。
这个关系就是继承。
java中用extends关键字表示。
(2)继承的体系结构
A:
多个具体的对象,不断的向上抽取共享的内容,最终形成了一个体系。
这个体系叫做继承体系。
B:
继承体系的学习和使用原则
**学习顶层的内容。
因为他是整个体系的共性内容。
**创建子类使用。
也就是使用底层的具体对象。
(3)继承的特点:
A:
java中只能单继承,没有多继承。
B:
java可以有多重(层)继承。
(4)继承的好处:
继承的出现提高了代码的复用性。
继承的出现让类与类之间产生了关系,提供了多态的前提。
(5)子父类中的成员关系
A:
成员变量
在子类方法中使用一个变量时:
首先,在方法的局部变量中找这个变量,有则使用。
否则,在本类中找成员变量,有则使用。
否则,在父类中找成员变量,有则使用。
否则,报错。
B:
成员方法
用子类对象使用一个方法时。
首先,在子类中找这个方法,有则使用。
否则,在父类中找这个方法,有则使用。
否则,报错。
重写和重载的区别?
重载:
在同一类中。
方法名相同,参数列表不同。
重载可以改变返回类型。
重写:
在不同类中(子父类中)。
方法声明相同(返回类型,方法名,参数列表均相同)。
重写需要注意:
**子类方法的访问权限要大于等于父类方法的访问权限。
**静态只能重写静态。
但是这种情况一般不会出现。
构造方法
**子类的实例化过程
***子类创建对象时,会先去创建父类的对象。
默认是去调用父类的无参构造方法。
***子类构造方法中,第一行默认是super()
***为什么子类中第一行会默认有super()
因为他继承父类的成员使用,使用前这些成员必须初始化,
而他们是父类的成员,所以,必须通过父类进行初始化。
所以,会先创建一个父类的对象。
**当父类没有无参构造方法时
必须使用this或者super调用其他的构造方法。
(6)this和super的区别
this:
代表本类对象的引用。
super:
代表父类的存储空间。
18、final关键字(重点)
(1)最终的意思,可以用于修饰类,方法,变量。
(2)final修饰的类不能被继承。
final修饰的方法不能被重写。
final修饰的变量是一个常量。
只能被赋值一次。
内部类只能访问被final修饰的局部变量。
19、抽象类(重点)
(1)多个类有相同的方法声明,但是方法体不一样。
这个时候,我们考虑把方法声明进行抽取。
让子类继承后,自己去实现方法体。
没有方法体的方法,我们需要用抽象标志下。
抽象的关键字是:
abstract。
(2)抽象类:
该方法称为抽象方法,包含抽象方法的类就是抽象类。
(3)抽象类的特点:
A:
抽象类和抽象方法都要用abstract进行修饰
B:
抽象类不能被实例化
C:
抽象类中不一定有抽象方法,但是,有抽象方法的类一定是抽象类。
(4)抽象类中数据的特点
A:
成员变量
抽象类中可以有变量,也可以有常量。
B:
成员方法
抽象类中可以有抽象方法,也可以有非抽象方法。
C:
构造方法
抽象类是一个类,所以,它有构造方法。
虽然本身不能实例化。
但是可以给子类实例化使用。
(5)抽象类中的问题
A:
抽象类中是否有构造方法?
能不能被实例化?
如果不能,为什么有构造方法?
抽象类有构造方法。
抽象类不能被实例化。
抽象类中的构造方法供子类实例化调用。
B:
抽象关键字abstract不可以和哪些关键字共存?
**private:
私有内容子类继承不到,所以,不能重写。
但是abstract修饰的方法,要求被重写。
两者冲突。
**final
final修饰的方法不能被重写。
而abstract修饰的方法,要求被重写。
两者冲突。
**static
假如一个抽象方法能通过static修饰,那么这个方法,就可以直接通过类名调用。
而抽象方法是没有方法体的,这样的调用无意义。
所以,不能用static修饰。
C:
抽象类中可不可以没有抽象方法?
如果可以,这样的类有什么用吗?
抽象类可以没有抽象方法。
抽象类中没有抽象方法的作用,只是为了不让别的类建立该抽象类对象。
这个在awt中有体现。
20、接口interface
(1)当一个类中的方法都是抽象的时候,java提供了另一种表示方式,叫接口。
用interface关键字表示。
类与接口关系用implements表示。
(2)接口的成员特点
A:
成员变量
是常量,默认修饰publicstaticfinal
B:
成员方法
都是抽象的,默认修饰publicabstract
(3)关系
A:
类与类的关系
是继承关系。
类与类只能单继承,可以多重继承。
B:
类和接口的关系
是实现关系。
类可以多实现接口。
类在继承一个类的同时,可以实现多个接口。
C:
接口和接口的关系
是继承关系。
接口可以多继承接口。
(4)接口的特点
A:
是对外暴露的规则
B:
是功能的扩展
C:
接口的出现降低耦合性。
耦合(类与类之间的关系)
内聚(类完成功能的能力)
编程规范:
低耦合,高内聚。
D:
接口可以多实现。
如:
CPU和主板、笔记本的USB插口、插座
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 基础 总结