java基础总结大全.docx
- 文档编号:9242453
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:38
- 大小:548.23KB
java基础总结大全.docx
《java基础总结大全.docx》由会员分享,可在线阅读,更多相关《java基础总结大全.docx(38页珍藏版)》请在冰点文库上搜索。
java基础总结大全
1、Java发展简史
1.Java是一种语言,具有自己的语法和数据结构
2.Java来自于sun,sun指的是斯坦福大学网络
3.具体发展历程
时间
描述
1991~1995
Sun为了占领智能消费电子产品市场,由jamesgosling负责该项目,来开发Oak语言
1995
将Oak改名为Java
1996
发布JDK1.0
1997
发布JDK1.1
1998
发布JDK1.2,将该版本命名为J2SDK,将Java更名为Java2
1999
将java分为三大块:
J2SE(Java标准版)、J2EE(Java企业版)、J2ME(Java微型版本)
2000
发布J2SE1.3
2002
发布J2SE1.4
2004
此时不再叫J2SE1.5,叫5.0
2005
2005Java10周年,将J2SE改为JAVASE、将J2EE改为JAVAEE、将J2ME改为JAVAME
2006
发布JAVASE6
java的特性
java是一门高级语言:
语言的分类(语言的三个阶段)
1.机器语言
2.低级语言
3.高级语言
java语言的特点
简单性,面向对象,可移植性《一次编译,到处运行》,健壮性,多线程
java开发工具
jdk的安装
注意:
必须记住jdk的安装位置:
D:
\ProgramFiles\Java\jdk1.7.0_21\
JRE的安装位置D:
\ProgramFiles\Java\jre7\
安装路径不能存在中文和空格
配置jdk的环境变量
计算机—》属性—》高级系统设置---》环境变量—》系统变量—》path—》在后面加上”;”(分号必须是英文半角的,如果原来有分号就不用加)在加上jdk安装目录下面的bin目录
如:
path:
D:
\programFiles\Java\jdk1.7.0_21\bin
验证方式:
在dos窗口输入java和javac命令,若java命令出错,那么说明没有安装成功,若javac命令出错,说明环境变量没有配置成功
第一个java程序
1.java的后缀名是.java
2.对于文件名首字母应该大写,每个单词之间首字母都是大写
3.运行方式:
a)win+R输入cmd进入dos窗口,到文件存放的指定目录e:
切换到e盘,通过cd到目录
b)通过javac命令编译java文件,然后通过java命令运行编译后的.class文件
c)
d)注意:
javac命令后跟的是java文件名.java,java命令后跟的是.class文件的文件名不带后缀名
java中的注释
1.单行注释//
2.多行注释/*注释内容*/
3.文档注释/**注释内容*/
代码中需要注意的
1.每个单词之间都是以空格进行间隔,类名后紧跟着一对花括号
2.main后面的小括号后面紧跟着一对花括号
3.
4.输出语句结束时一定要有一个分号
5.java严格区分大小写
常见错误
1.若public修饰的类名不与文件名一致,将无法编译成功
publicclass和class的区别
对于public修饰的类也就是说publicclass类名来说,类名必须与文件名保持一致,而且每个文件中只能有一个public修饰的类,public修饰的类的访问权限大于没有public修饰的类
对于没有public修饰的类也就是说:
class类名,这种我们一般称为内部类,可以不跟文件名保持一致,但要符合标识符的命名规则,并且不能与本文件中的其它类名相同
标识符的命名规则
在java中,我们一般将类名,方法名,变量名,接口名统称为标识符
1.由字母,数字,下划线和$符号组成
2.不能以数字开头,不能是java关键字
3.严格区分大小写
4.要求见名识意
5.符合驼峰命名法
6.类名要求首字母大写
2.数据类型的分类:
基本数据类型:
(8个)
数值型:
1.整数型:
字节型(byte)、短整型(short)、整型(int)、长整型(long)
2.浮点型(小数类型):
单精度浮点型(float)双精度浮点型(double)
字符型:
char
布尔型:
boolean(可取值为:
true/false)
引用数据类型:
(3个)
数组:
Array
接口:
interface
类:
class
1.变量:
(1).定义一个变量
数据类型变量名;例如:
inta;
(2)。
定义一个变量并赋值:
数据类型变量名=变量值;
//定义float类型的变量的时候,要在值后面加上f例如:
floatf=1.2f;double类型的一般要求加上d但是可以不加
定义同一类型的两个变量时中间使用,进行分隔例如:
inta=10,b=20;
注意:
<1>在变量未赋值时直接输出会报:
JavaTest.java:
5:
错误:
可能尚未初始化变量
<2>在给float类型的变量赋值时,值必须加上f例如floatc=1.1f;
在给double类型赋值时,d可加可不加例如:
doublek=1.2或doublek=1.2d;
<3>在一个变量的适用范围内,不可重复定义相同的变量名
2.数据类型的转换
(1).从小到大自动转换byte,short,int,long,float,double
(2).从大到小强制转换例如:
byteby=(byte)a;//强制类型转换,将int类型的a转化为byte类型
3.java常用运算符
算术运算符
+,-,*,/,++,--,%(取模,取余数<取整数余下的那个数>)
关系运算符
<,<=,>,>=,==(等于),!
=(不等于)
布尔运算符
&&(短路与),||(短路或),&(逻辑与),|(逻辑或),!
(非)
赋值类运算符
=,+=,-=,*=,/=,%=
字符串连接运算符
+
条件运算符
?
:
三元运算符
其他运算符
Instanceof(判断该对象时否属于特定的实例),new(创建对象使用)
算术运算符
(1).intk=a++;//相当于k=a;a=a+1先赋值,在自增
(2).intm=++b;//相当于b=b+1;m=b;先自增,后赋值
所以:
当++在前,先进行自增在进行运算,当++在后先进行运算在自增
同理当—在前,先自减在进行运算,当—在后先进行运算在自减
关系运算符:
关系运算符的结果是boolean类型的,值为true/false
布尔运算符:
&&和&的时候:
有假则为假,全真则为真
||和|的时候:
有真则为真,全假则为假
逻辑与和短路与的区别:
《1》逻辑与的判断方式是:
从左到右依次判断,直到结尾
《2》短路与的判断方式是:
从左到右依次判断,直到出现false为止将不再判断,直接得到结果为false
逻辑或和短路或的区别
《1》逻辑或的判断方式是:
从左到右依次判断,直到结尾
《2》短路或的判断方式是:
从左到右依次判断,直到出现true为止将不再判断,直接得到结果为true
!
非:
取相反的结果(!
true为false,!
false的结果为true)
赋值运算符:
t+=12;//相当于t=t+12
t-=12;//相当于t=t-12
t*=12;//相当于t=t*12
t/=12;//相当于t=t/12
t%=12;//相当于t=t%12
条件运算符(三元或者三目运算符):
?
:
格式为:
布尔表达式?
表达为真时的值:
表达为假时的值
若表达式的结果为真,则取:
前面的值,若表达式的结果为假则取:
后面的值
3.控制语句
1.ifelse
1)if
a)语法:
if(布尔表达式){内容}如果布尔表达式为真,则进入内容部分,否则将直接跳过内容部分
b)如果省略{},那么if判断的概括范围为第一个分号;
c)要求:
每个人的{}不能省略,即使在if中只有一条语句的情况下
2)ifelse
d)语法:
if(布尔表达式){内容}else{}如果表示为真则进入内容部分,否则进入else部分
3)elseif()
语法:
if(布尔表达式){
内容
}elseif(布尔表示式){
内容
}elseif(布尔表示式){
内容
}else{
}
当找到满足的条件之后,即存在true之后将不会再往下继续执行该语句
例子:
2.switch…case….
语法:
switch(值){
case值1:
{
内容
break;
}
case值2:
{
内容
break;
}
case值3:
{
内容
break;
}
。
。
。
default:
内容;break;
}
注意;switch的取值只能是byteshortintchar类型的
3.for循环
格式:
for(初始变量;执行的条件;递增方式){
循环体
}
注意:
当变量满足执行条件时,将执行循环体部分,否则不执行循环体部分
这里的执行条件时boolean表达式
4.while循环
while(布尔表达式){
循环体;
注意:
循环体中一定要有变量改变的情况,注意死循环的问题
}
5.dowhile循环
do{
循环体
}while(循环条件);
while和dowhile的区别:
while先判断循环条件,在执行循环体,dowhile先执行循环体,在判断循环条件
那么对于dowhile来说不管循环条件是否成立,都会至少执行一次循环体
6.continue跳出本次循环继续下一次循环
4.数组
数组的概念
数组其实就是一组数据的集合
数组中的数据需要具有相同的数据类型
数组的定义方式
1.数据类型[]数组名=new数据类型[数组的长度];
2.数据类型[]数组名=new数据类型[]{数据1,数据2};
数组长度
1.我们一般通过数组名.length来获得数组的长度如:
arr.length
2.注意:
一般情况下定义数组的时候我们就会限定数组的长度
3.索引,下标:
索引即下标指的是数组中数据的所在位置,数组的下标从0开始
4.数组的最大下标永远比数组的长度小1
5.一般通过:
数组名[下标]来获取指定位置的值,或者给指定为位置赋值例如:
数组概要
数组是同一种数据类型的元素的集合
数组是一种引用数据类型,在内存中存储示意图如下:
1.数组是一组数据的集合
2.数组作为一种引用类型
3.数组元素的类型可以是基本类型,也可以是引用类型,但同一个数组只能是同一种类型
4.数组作为对象,数组中的元素作为对象的属性,除此之外数组还包括一个成员属性length,length表示数组的长度
5.数组的长度在数组对象创建后就确定了,就无法再修改了
6.数组元素是有下标的,下标从0开始,也就是第一个元素的下标为0,依次类推最后一个元素的下标为n-1,我们可以通过数组的下标来访问数组的元素
声明数组的两种方式
《1》数据类型[]变量名
《2》数据类型变量名[]
创建数组对象的两种方式
《1》数据类型[]数组名=new数据类型[数组的长度];
《2》数据类型[]数组名=new数据类型[]{数据1,数据2,数据3.。
。
。
};
二维数组的定义:
《3》数据类型[][]数组名=new数据类型[数组的长度][列的长度];
《4》数据类型[][]数组名=new数据类型[]{{数据1,数据2,数据3.。
。
。
},{数据1,数据2,数据3.。
。
。
},{数据1,数据2,数据3.。
。
。
}};
//定义二维数组的时候可以省略列但是不可以省略行,也可以理解为前面的不能省略,后面的可以省略
遍历二维数组的例子
int[][]arr=newint[][]{{2,3,8,9},{1,4,5},{5,7}};
int[][]arr4=newint[3][];//定义二维数组的时候可以省略列但是不可以省略行,也可以理解为前面的不能省略,后面的可以省略
for(inti=0;i for(intj=0;j System.out.print(arr[i][j]+","); } System.out.println(); } 5.方法初步: 1.方法是在一个java文件中可重复执行的代码块 2.方法的基本组成: [方法的修饰符]返回值类型方法名(参数列表){ 方法体 } <1>方法修饰符包括: public,protected,private,default(默认,不写的时候就代表的是default默认),static,final,abstract(抽象的),,,, 在写方法的时候,修饰符可以有多个中间用空格间隔,但是: public,protected,private,default,不可以同时出现 <2>返回值类型包括: (1)数据类型: 有数据返回时跟据返回的数据的类型定义相应的返回值类型,返回语句为return。 。 。 ;返回值类型由return返回的数据类型规定: 注意: 一个方法中只能return一个值,而且return语句必须在一个方法中的最后一行; (2)void: 没有return语句,即没有需要返回的数据的时候,将返回值的类型定义为void <3>方法名的命名规则符合标识符的命规则,首字母不需要大写 <4>参数的组成: 数据类型变量a,数据类型变量B,,,,参数的个数因实际情况而定,可以无参 <5>main方法一个java程序的主方法,在一个可运行的java文件中,必须存在main方法 3.总结: 1.有返回值的时候: 需要在调用的时候用一个变量来接收返回的值,变量的类型要与返回值的类型相同,那么返回值的类型要与返回的数据的类型相同 2.没有返回值的时候直接调用方法就行,不需要用任何参数接收 3.没有参数的时候: 直接调用方法名(); 4.有参数的时候: 调用的时候方法名(值,,,,);有几个参数传几个值。 参数之间用,间隔 方法的重载 定义: 在同一个类中,方法的名称相同,参数的个数、顺序、类型、至少有一个不同,那么就构成了方法的重载,注意: 方法的重载与返回值类型和方法的修饰符无关 注意: 参数的顺序指的是参数类型的顺序,而不是参数名的顺序 6.面向对象的特性: 封装,继承,多态 类的概念: 1.类是对现实中具有共性事物的抽象的描述 2.一个类包含属性和方法 a)属性: 描述类的状态,特征 b)方法: 描述类的行为,动作, 3.类的定义方式: a)修饰符class类名{ i.属性和方法; b)} c)public,protected,private,default,final,abstract,, 4.属性的定义方式: [修饰符]数据类型属性名; [修饰符]: public,protected,private,default(默认,不用写),final,static 属性名: 符合标识符的命名规则 创建对象的方法: 类名对象名=new类名(); 给对象的属性赋值: 对象名.属性名=属性值; 取值的时候直接写对象名.属性名,就可以获得相应的属性值 调用对象的方法 对象名.方法名(); 封装 1.private修饰的属性和方法,只能在本类中进行访问 2.对于用private修饰的属性,我们给它生成相应的公共的get和set方法 3.set方法一般情况下使用来赋值使用的,而get方法一般用来获取值 封装其实就是将属性私有化: 方法公开化,提高了属性的一个安全性 课堂练习: 写一个Student类,有name,age,sex三个私有属性,分别写出三个属性的get&set方法。 然后在Test类中给属性赋值,并且输出该属性的值 this关键字 this关键字代表: 这,这个的意思。 指的是当前调用的对象, this关键字: 1.用于区分局部变量和成员变量当局部变量与成员变量名字相同时,我们使用this关键字来区分成员变量和局部变量一般使用this来代指成员变量 2.成员变量(全局变量): 在类中,方法外定义的变量叫做成员变量—>属性 3.局部变量: 方法的参数列表以及方法中定义的变量叫做局部变量 需要注意: this只能用在构造函数和普通方法内部,还可以应用在成员变量的声明上,static标识的方法里是不能使用this的, 一个变量的使用范围是离它最近的一对{} static关键字 java中static表示静态的,可以用来修饰方法和属性。 被static修饰的变量: 作为类变量,这个变量属于类而不属于对象。 可以直接通过类名.属性名来访问 被static修饰的方法,可以直接通过类名访问,类名.方法名(参数列表); 总结: 变量 同一个类中 不同类中 静态 变量名 类名.属性名 非静态 变量名 对象名.属性名 //在同一个类中在一个普通方法中,可以直接使用属性名来赋值取值,在一个静态的方法中,可以直接对静态的属性赋值取值 //在不同类中访问静态的属性需要类名.属性名访问非静态的属性需要对象名.属性名 方法 在同一个类中 不同类中 静态 方法名(参数列表) 类名.方法名(参数列表) 非静态 对象名.方法名(参数列表) 对象名.方法名(参数列表) //在同一个类中静态的方法可以直接用方法名(参数);非静态的需要对象.方法名(参数); //在一个普通方法中,可以直接使用方法名(参数)来调用本类中除main方法以外的任意方法;在静态方法中只能使用方法名(参数)调用除main以外的所有的静态方法, //在不同类中非静态的需要对象.方法名(参数);静态方法需要类名.方法名(参数); 总结: static修饰的属性和方法属于类而不属于对象,调用的时候需要类名.方法名,或者类名.属性名, 不用static修饰的方法或者属性调用的时候需要先创建对象然后对象名.属性名或者对象名.方法名 Package和import 1.当多个java文件不在同一个包中的时候,那么我们就需要在使用其他java类的时候,导入该类所在的包 2.package包,其实就是文件夹,通过package能使我们更好地分目录管理我们的代码文件(其中最重要的用途是为了解决同名但作用不同的类同时存在的问题。 ) 包的一般命名格式: 公司域名倒叙+项目名+模块名 3.import引入,导入在java类中我们可能用到其他包里面的class,则通过import来判断我们导入的是哪个包下面的哪个类import包名.类名; 4.常用的包: java.utiljava.langjava.iojava.sql 7.构造方法: (构造函数,构造器) 1.构造方法的作用: 实例化对象也就是说创建对象的时候初始化对象用的 2.基本格式: 访问修饰符方法名(参数列表){} <1>访问修饰符: public,private,protected,默认不用写(default) <2>方法名: 构造方法的方法名必须与类名相同 3.在没有显示的定义任何构造方法的情况下,系统默认会给我们提供一个无参的构造方法 4.构造方法也可以构成重载(在同一个类中,方法的名称相同,参数的个数、顺序、类型至少有一个不同) 8.继承 ●继承是实现软件可重用性的重要手段,子类继承父类则子类就具有了父类的特性 如: A继承B,A就拥有了B的所有特性,如现实世界中的儿子继承父亲的财产,儿子不用努力就有了财产,这就是重用性 ●java中只支持类的单继承,也就是说A只能继承B,A不能同时继承C ●java中的继承使用extends关键字来表示继承 ●语法格式: [修饰符]class子类extends父类{ } 在发生继承的父子类关系中创建子类对象的时候会先调用父类的构造函数 子类对象确实拥有父类对象中所有的属性和方法,但是父类对象中的私有属性和方法,子类是无法访问到的,只是拥有,但不能使用。 就像有些东西你可能拥有,但是你并不能使用。 所以子类对象是绝对大于父类对象的 方法的重写(方法的覆盖) 在父子类关系中,子类重写父类的非私有非静态的同名方法(方法名和参数以及返回值类型必须一样,且子类的访问权限不能小于父类可以大于等于父类,子类不能抛出比父类更多的异常,但可以是父类异常的子异常) 为什么要重写? 父类无法满足子类的需求,那么这时候我们就要重写父类的同名方法 满足重写的条件: 1.在继承关系(父子类)关系中 2.子类重写父类非私有非静态的同名方法 3.方法的名字、参数、返回值类型必须与父类相同 4.子类的访问权限不能小于父类 5.子类不能抛出比父类更多的异常,但可以是父类异常的子异常 重写(overWrite)和重载(overLoad)的区别: 1.重载要求在同一个类中,重写要发生在存在继承关系的两个类或者多个类中并且要求是非静态非私有的方法 2.重载要求参数的顺序、个数、类型至少有一个不同与返回值类型无关,重写是参数和返回值类型必须相同 3.方法的重载与访问修饰符无关,而重写要求子类的访问权限必须大于或等于父类, 4.在重载中与异常无关,但是重写要求子类不能抛出比父类更多的异常,但可以是父类异常的子异常 六.Java访问权限的列表 Java中关于权限的修饰符private,default,protectd,public 修饰符 类的内部 同一个包里 子类 任何地方(不在同一个包里) private Y N N N Default《默认的修饰符》 Y Y N N protected Y Y Y N public Y Y Y Y 9.接口和抽象类之间的关系 共同点: 1.都可以有抽象方法 2.都不能被实例化 3.一个类要实现一个抽象类那么必须重写它里面的所有抽象方法,一个类要实现接口,也必须重写接口中的所有的(抽象)方法 不同点: 1.接口不是类,用interface定义,抽象类是一个用abstract修饰符修饰的类 2.接口里面只能有抽象方法,抽象类可以有普通方法和抽象方法 3.实现接口需要implements,实现一个抽象类,需要继承,一个类可以实现多个接口,但是只能继承一个类 4.接口里面定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 基础 总结 大全