导图社区 java入门基础
这是一篇关于java入门基础的思维导图,包括Java入门基础知识与Java面向对象基础等内容,需要的可以收藏。
编辑于2021-09-06 10:15:17java入门基础
控制语句
分支语句
意义:提供一种机制,使程序执行时可以跳过某些语句不执行
if-else语句:if后面条件表达式为true时执行if中的语句,否则不执行或者在存在else语句的情况下执行else中的语句。
if语句可以嵌套使用
switch语句:多分支的开关语句。
循环语句
意义:反复运行一段代码,知道满足条件终止循环。
while语句:循环开始时判断条件语句是否成立,若成立执行循环体,否则循环结束。
do-while语句:先执行循环中的语句,然后再判断条件是否为真。
for语句:表达式2成立循环执行,表达式2不成立,跳出循环; 表达式1为赋值语句; 表达式3一般用来修改循环变量
循环语句可嵌套使用
跳转语句
break语句:用于强行退出循环,不执行循环中剩余的语句
continue语句:当程序运行到continue语句时,就会停止循环体剩余的语句,回到循环开始处继续执行循环。
java注释语句
单行注释://
多行注释:/* ... */
数组
一维数组
数组声明:类型标识符 数组名【】; 类型标识符 【】数组名;
数组初始化:1、直接指定初值的方式,eg(int [ ]a1= {23,-9,38,8,65};); 2、用关键字new初始化数组,只为数组分配空间不对数组元素赋初值, 先声明数组,再初始化数组。 格式:类型标识符 数组名【】; 数组名 = new 类型标识符【数组长度】; eg:int a[ ]; a = new int[9]; 在声明数组的同时用new关键字初始化数组。 格式:类型标识符 数组名【】= new 类型标识符【数组长度】 or 类型标识符【】数组名 = new 类型标识符【数组长度】 eg:int [ ]a = new int[10]
数组引用:格式(数组名【数组下标】)
二维数组
数组声明:类型标识符 数组名【】【】; 类型标识符 【】【】 数组名;
数组初始化:1、直接指定初值的方式,eg(int[ ][ ]arr={{3,-9,6},{8,0,1},{10,11,9}};) 2、用关键字new初始化数组,只为数组分配空间不对数组元素赋初值, 先声明数组,再初始化数组。 格式:类型标识符 数组名【】【】; 数组名 = new 类型标识符【数组长度】【数组长度】; eg:int a[ ][ ]; a = new int[9][7]; 在声明数组的同时用new关键字初始化数组。 格式:类型标识符 数组名【】= new 类型标识符【数组长度】【数组长度】 or 类型标识符【】数组名 = new 类型标识符【数组长度】【】; eg:int [ ][ ]a = new int[10][9]
数组引用:.length测定数组长度
多维数组
运算符和表达式
赋值运算符与赋值表达式
赋值运算符“=”
子主题
算术运算符与算术表达式
双目运算符“+ - * / %(取余)”
单目运算符:“++(自增)、--(自减)、-(取负)”
算术运算符的优先级:()、 ++ --、 * / %、+ -
关系运算符与关系表达式(比较运算)
<、<= 、>、>=、==、!=
返回布尔值(ture 或 false)
计算结果为逻辑型
逻辑运算符与逻辑表达式
&&逻辑与、||逻辑或、!逻辑非
与、或为双目运算符;非为单目运算符
位运算符
位运算符是对于二进制数进行操作
&与、|或、^异或、~非
位运算符和逻辑运算符用了同样的符号
移位运算符(二进制位)
左移(<<)
有符号右移(>>)
无符号右移(>>>)“零扩展”
左移赋值运算符(<<=):运算符左边的值向右移动由右边的值指定的位数,再将得到的结果赋回左边的变量。
右移赋值运算符(>>=)
无符号右移赋值运算符(>>>=)
条件运算符
由三个操作对象,生成一个值
格式:<布尔表达式>?value1:value2
eg : int a = 4, b = 9, c = 0; c = (a >b ) ? 1:2 结果 c = 2
运算符的优先级与结合性
括号>自增、自减、逻辑非>算术>移位>关系>位逻辑>逻辑>条件>赋值
合理使用()指明运算顺序,提高程序可读性
基本数据类型
4大类基本数据类型
整数类型
byte(一个字节,8个位bit,)取值范围-2^7~(2^7-1)
short(两个字节,16个位)取值范围-2^15~(2^15-1)
int(4个字节,32个位)取值范围-2^31~(2^31-1)
long(8个字节,64个位)取值范围-2^63~(2^63-1)
浮点类型
float(4个字节,32位)
double(8个字节,64位)
字符类型
char(2个字节,16位)
布尔类型(逻辑变量)
ture
false
数据类型转换
自动转换:当把低级别的变量值赋给更高级别的变量时,系统自动完成数据类型转换
强制类型转换:当把级别高的变量的值赋给级别低的变量时,需要强制类型转换
常量和变量
常量
定义:程序执行期间其值不会发生变化的量 语法:final datatype CONSTNAME = VALUE(final是Java关键字,表示定义的是常量,datatype为数据类型,CONSTNAME为常量的名称,VALUE是常量值) eg: final double PI = 3.14
变量
定义:变量(variable)是一块取了名字的、用来存储Java程序信息的内存区域; 定义的每块被命名的内存区域都只能存储一种特定类型的数据; 在Java中,使用变量之前需要先声明变量; 语法:type identifier[=value][,identifier[=value]...];type是Java的基本类型、类或者接口类型的名称,identifier(标识符)是变量的名称。=value表示用具体的值对变量进行初始化; eg : double d1;d2;
变量作用域
变量的作用域指明可以访问该变量的程序代码的范围; 分类:局部变量、类成员变量、方法参数、异常处理参数
标识符和关键字
1. 标识符
定义:用来标识程序中各元素的字符序列 标识符必须以字母、下划线(_)、美元符号($)开头 最好使用字母、数字、和下划线 java语言是大小写敏感的且无长度限制 标识符不能是关键字
2. 关键字
定义:Java中一些赋以特定含义、并用做专门用途的单词 作用:主要用于标识数据类型名或程序构造名 类型:类类型(Class Type)、数据类型(Data Type)、控制类型(Control Type)、存储类型(Storage Type)、其他类型(Other Type) 注:所有的Java关键字都是小写的
for(表达式1;表达式2;表达式3) { 循环体语句; }
do { 循环体语句; } |while(条件表达式);
while(条件表达式){ 循环体语句; }
switch(表达式){ case 常量值1: 语句块; break; case 常量值2: 语句块; break; …… case 常量值n: 语句块; break; default: 语句块; break; }
if(条件表达式){ 语句或块; }else{ 语句或块; }
Java面向对象1
垃圾回收机制
finalize
System.gc(强制启动垃圾回收器来回收垃圾)
方法中的参数传递
基本数据类型的参数传递
· 方法的形式参数就相当于方法中定义的局部变量,方法调用结束时也就被释放了, 不会影响到主程序中同名的局部变量。
引用数组类型的参数传递
· 对象的引用变量并不是对象本身,它们只是对象的句柄(名称)。一个对象可以有 多个句柄
命令行参数
main()是程序的入口; java 类名【参数列表】; 在java中数组也是预定义的类,它拥有属性length;
访问控制
Java中的访问控制
1、public访问控制:声明公共类,可被其他所有类访问和引用,程序其他部分可以 创建这个类的对象,访问这个类内部可见的成员变量和调用他 们的方法。 类属性尽量不要用public关键字,会造成安全性和数据封装 的下降
2、缺省访问控制符:规定该类只能被同一个包中的类访问和引用; 通过声明类的访问控制符可以使整个程序结构更加清晰、严谨。
3、private私有访问控制符:只能被该类自身访问和修改; 选择私有方法的种类为:其一是与类的使用者无关的那些方法; 其二是如果类实现改变了,不容易维护的那些方法。
4、protected保护访问控制符:可以被三种类引用 1、该类自身 2、与它在同一个包中的其他类 3、在其他包中的该类的子类 使用protected修饰符主要作用是允许其他包中的 它的子类来访问父类的特定属性。
static关键字的使用
static是静态修饰符,可以修饰类的属性,也可以修饰类的方法。被static修饰的 属性不属于任何一个类的具体对象,是公共存储单元。任何对象访问它时,取得的 都是相同的数值。当需要引用或修改一个static限定的类属性时,可以使用类名,也 可以使用某一个对象名,效果相同。在类中,也可以将某一块代码声明为静态,这样的程序块叫做静态代码初始化段。
静态属性:静态代码块只能定义到类里面,它独立于任何方法,不能定义在方法里面; 静态代码中的变量都是局部变量,只在本块内有效; 静态代码块会在类被加载时自动执行,而无论加载类时JVM还是其他的类; 一个类中可以定义多个静态代码块,执行的顺序根据定义的顺序进行; 静态代码块只能访问类的静态成员,而不允许访问非静态成员。
静态方法:声明和定义,静态方法的定义与定义非静态方法区别只是多了一个static; 调用静态方法不用创建对象; 静态方法在访问本类成员时,只允许访问静态成员。
final关键字的使用
使用final关键字,这个变量一旦被初始化便不能改变,对基本类型来说变量值 不能更改,对对象变量来说其引用不可再变; final变量定义时可以直接给其赋值,也可在构造方法中初始化,二者只能选择其一。
final方法:将方法声明为final,此方法不能被扩展,并且也不允许任何从此类继承 的类来覆写这个方法,但是依然可以继承。
final类: 不能被继承,也不能修改和扩展。
this引用句柄
· 一个对象中的一个成员方法,可以引用另外一个对象的成员。 · this在方法内部就是这个方法所属的对象的引用变量。 · 在成员方法中,对访问的同类中的成员前不加this引用,效果时一样的; · 必须用this的情况:1、通过构造方法将外部传入的参数赋值给类成员变量 构造方法的形式和参数名称与类的成员变量名相同; 2、假设有一个容器类和一个部件类,在容器类的某个方法 中要创建部件类的实例对象,而部件类的构造方法要接收 一个代表其所在容器的参数; 通过this引用把当前的对象作为一个参数传递给其他方法和 结构的应用。 3、构造方法时在产生对象时被Java系统自动调节的,不能在程 序中像调节其他方法一样去调节构造方法。但是可以在一 个构造方法里调用其他重载的构造方法,不是用构造方 法名,而是用this(参数列表)的形式。根据其中的参 数列表,选择相应的构造方法。
构造方法
构造方法的定义与作用
特征:具有相同的的类名称: 不含返回值; 通过new关键字调用; 若没有定义构造器系统会自动定义一个无参的构造函数; 作用: 构造该类的对象,经常也用来初始化对象的属性。
构造方法的语法格式: 【访问修饰符】 <类名>(【参数列表】) { //构造方法的语句体 }
构造方法的重载
构造的方法也可以被重载; 定义多个相同名称的构造方法,含有不同的参数,来完成构造方法的重载; 重载构造方法可以完成不同的初始化操作,
构造方法的一些细节
当编程者为该类定义了构造方法,系统不再提供默认的构造方法了。 要自定义构造方法,都需要带上一个无参数的构造方法,否则,会出错。 构造方法一般都是public的,因为它们在对象产生时会被系统自动调用。
类与对象
类的声明
Java程序设计的基本单位。使建立对象的模板 java中类的声明格式: 【修饰符】 class 类名 【extends 父类】【implement 接口名】{ 类成员变量声明 ; // 描述类的状态 类方法的声明 //描述对象的行为 }
类头:修饰符:说明类的属性; 控制访问符 1、public(公共)任何类都可访问; 2、private(私有)自身内部函数访问 3、protected(受保护的)能被继承类受保护的成员访问,不能被私有成员访问; 抽象类说明符 abstract 用对类声明时,该类不能创建对象 最终类说明符 final 不仅用于类声明也可用于变量和方法。用于类该类不能有子类,用于变量时,变量赋初值后不能修改,用于方法时,方法不能被重载; class关键字:类定义的开始,class后跟新定义的名字。 类名: 遵循Java命名方式。 extends 关键字:后跟父类的名字,表明继承的父类,确定继承关系。 implement 关键字:后跟类实现的接口列表。
成员变量的声明(类的属性):成员变量 的声明方式如下: 【修饰符】数据类型 变量名; 修饰符:public 可被所有其他类引用。 private:仅能被该类自身引用很和修改,不能被其他类(包括子类)引用。 protected:该类自身、子类、同一包中的其他类。 缺省:本包中的类; Static:类成员变量,对所有的实例一致,引用时前缀可使用类名或者对象名 final:数值不变常量,定义同时应对其进行初始化。 数据类型:可以是任何Java的有效数据类型。 变量名:标识该变量
成员方法的声明:类的方法也称为类的成员函数,用来规定类属性上的操作,实现对外界提供的服务,也是类与外界交流的接口。 方法的实现包括两部分内容:方法声明和方法体。
类的实例对象及使用
java创建对象的格式:类名 方法名; 在使用对象之前必须给它们分配内存,这是由new关键字实现的; 变量在被初始化之前时不能使用的。
面向对象程序设计概念
面向过程程序设计
采用模块分解与功能抽象,自顶向下,分而治之。 程序结构为:程序 = 数据结构 +算法 数据时单独的整体,算法也是单独的整体。
面向对象程序设计
程序的主题集中在主体/对象(主语)上; 程序结构为:对象 = (数据结构 + 算法) 程序 = 对象1 + 对象2Y+……+对象n 将对象的使用者与设计者分开
面向对象方法的特征
1、抽象:抽象就是抽出事务的本质特征而暂时不考虑他们的细节; 抽象类为所有的子类提供一个通用的模板; 抽象类可以避免子类设计的随意性;
2、对象:对象是封装了数据结构及可以施加在这些数据结构上操作的封装体。 属性和操作是对象的两大要素; 属性是对象静态特征的描述,操作是对象动态特征的描述。
3、类:类是一组具有共同特性的所有对象成员的集合; 类是对象的模板; 对象(Object)是类(Class)的一个实例。
4、封装:把对象的属性和操作结合在一起,构成一个独立的封装体: 尽可能隐蔽对象的内部细节,对外形成一个边界; 只保留有限的对外接口,使与之外部发生联系。 提高系统的可扩展性与可维护性。 程序设计要求:”高内聚,低耦合“
5、继承::继承可以使一个类继承另一个类的属性和方法; 继承是对某一批类的抽象,实现对显示世界更好的建模; extend(扩展)子类是父类的扩展; 子类得到父类的全部属性和方法(除了构造方法); java中只有单继承模式(通过接口也可实现多继承); 作用:可减少代码的重复性,使代码更加简洁。 子类可以根据需求对从父类继承来的方法进行重写; 重写方法必须与原方法具有相同方法名称、参数列表、返回类型; 重写的方法不能比原方法更严格的访问权限(由于多态)。
6、多态性:不同类型的对象接收相同的消息时产生不同的行为; 多态就是同一个接口,使用不同的实例而执行不同的操作; 优点:消除类型之间的耦合关系、可替换姓、可扩展性、 接口性、灵活性、简化行; 存在的三个必要条件:继承、重写、父类引用指向子类对象
7、消息:某个对象发出的服务请求; 对象提供的服务的消息格式成为消息协议; 消息包括被请求的对象标识、被请求的服务标识、输入信息和应答信息。
8、结构与关联:部分/整体、一般/特殊、实例连接、消息连接