java基础总结精品.docx

上传人:b****8 文档编号:9229094 上传时间:2023-02-03 格式:DOCX 页数:43 大小:46.35KB
下载 相关 举报
java基础总结精品.docx_第1页
第1页 / 共43页
java基础总结精品.docx_第2页
第2页 / 共43页
java基础总结精品.docx_第3页
第3页 / 共43页
java基础总结精品.docx_第4页
第4页 / 共43页
java基础总结精品.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

java基础总结精品.docx

《java基础总结精品.docx》由会员分享,可在线阅读,更多相关《java基础总结精品.docx(43页珍藏版)》请在冰豆网上搜索。

java基础总结精品.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1