Java初级知识总结.docx
- 文档编号:17200512
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:92
- 大小:2.31MB
Java初级知识总结.docx
《Java初级知识总结.docx》由会员分享,可在线阅读,更多相关《Java初级知识总结.docx(92页珍藏版)》请在冰点文库上搜索。
Java初级知识总结
目录
基础知识:
1
程序流程控制:
顺序;选择;循环3
函数(方法)6
数组7
面向对象13
继承19
内部类24
异常25
包(package)30
多线程31
String类34
集合框架39
泛型43
常用类47
IO流49
GUI布局59
正则表达式66
补充知识I
数据结构I
JAVA知识总结
基础知识:
1.人机交互方式:
图形化界面;命令行形式(命令提示符)。
2.命令行方式,基本指令:
dir(列出当前目录下的文件名称);md(新建目录);rd(删除目录);cd(进入文件夹);cd..(退回上一层目录);cd\(直接返回根目录);del(删除文件);注:
在dos删除文件不走回收站。
exit(退出dos命令行)。
3.Java语言三种构架:
JavaSE(标准版),JavaEE(企业版),JavaME(小型版)。
4.Java语言特点:
跨平台性:
在不同的平台间都可以运行;原理:
系统存在
JVM虚拟机,相当于一个解析器。
5.JRE:
Java运行环境;JDK:
Java开发工具包。
开发工具都在bin目录下。
6.Java源文件的扩展名.java;编译后的文件扩展名.class。
7.编译文件命令:
javac;运行文件命令:
java。
8.注:
类名前有public修饰时,文件名和类名必须相同。
9.单行注释:
//一般用在代码中某几句比较重要的语句多行注释:
/*换行*/一般用在测试的时候文档注释:
/**换行*/一般用在类名的前面或者是main函数的前面注:
单行注释可以加单行注释,但是多行注释不能再嵌套多行注释。
10.main函数是程序的入口,会被JAVA虚拟机调用。
11.定义类的时候,不能使用关键字作为类名,也不能使用数字开头。
Java语言组成部分:
java严格区分大小写
1)关键字:
被Java语言赋予特殊意义的单词。
注:
关键字都用小写。
2)标识符:
在程序中自定义的一些名称,无长度限制,中文也可做标识符;组成:
26个英文字母,数字0-9,符号$_规范:
包名:
所有字母小写;类名接口名:
多单词组成时所有首字母大写;变量名或函数名:
第一个单词首字母小写从第二个单词首字母大写;常量名:
所有字母都大写,不同单词用下划线连接。
注:
数字不能作为开头,不能使用关键字和保留字做标识符。
3)注释:
对程序中的难以理解或重要的部分进行解释。
4)常量:
表示不能改变的数值。
注:
字符都放在一个单引号内,字符串放在双引号中。
Java中整数有三种表现形式:
八进制;十进制;十六进制(用0x开头)。
注:
负数二进制其实就是其绝对值二进制取反+1,取反就是将二进制的1变成0,0变成1.在内存中数字占用4个字节,负数的最高位都是1.
5)变量:
是指值在运行期间可以别改变的量,就是将不确定的数据进行存储。
也就是需要在内存中开辟一个空间。
如何开辟内存空间:
明确数据类型、变量名称和数据来完成。
必须有一个名称:
变量名;空间的类型:
数据类型;
6)数据类型:
基本数据类型(数值型(整数类型(byte、short、int、long)、浮点类型(float、double))、字符型(char)、布尔型(boolean));引用数据类型(类(class)、接口(interface)、数组([]))。
注:
整数默认类型:
int;小数默认类型:
double。
基本数据类型不能通过自动或强制与引用数据类型进行转换。
7)定义变量的格式:
数据类型变量名=初始化值;什么时候定义变量:
当数据不确定的时候,需要对数据进行存储是,就定义一个变量来完成存储动作。
8)类型转换:
自动类型提升(隐式类型转换);类型强制转换(显式类型转换)。
转换原则:
容量小的自动转换成容量大的顺序为byte、short、char-->int-->long-->float-->double;容量大的转换为容量小的数据类型时,要加上强制转换符,但可能造成精度溢出或降低。
注:
字符1和数字1在ASCII码代表数字不同,字符1代表数字是49.所有的byte型、short型和char的值都被提升到int型。
三者不能互转,在运算时先转换成int类型。
9)
运算符:
算术运算符:
取模(%);自增(++);自减(--);注:
取模出现负数只看负数的绝对值去取模。
比较运算符:
等于(==),不等于(!
=).运算结果都是boolean类型的值,即true或者false。
逻辑运算符:
与(&),或(|),异或(^),非(!
)。
用于连接boolean类型表达式。
&与&&的区别:
&无论左边是true是false,右边都运算,&&当左边是false时,右边不运算,因此&&效率较高。
|与||的区别:
|两边都参与运算,||当左边为true,右边不运算。
注:
异或与或只有一个地方不一样,异或真^真=假。
位运算符:
左移(<<),右移(>>),无符号右移(>>>),反码(~),与(&),或(|),异或(^)。
三元运算符:
(条件表达式)?
表达式1:
表达式2;如果条件为true,运算后结果为表达式1;否则运算结果为表达式2。
注:
左移其实就是乘以2的移动位数次幂;右移就是除以2的移动位数次幂。
右移:
最高位有原有数据最高位的值而定,如果最高位是0,右移后,用0补空位;如果最高位是1,右移后,用1补空位。
无符号右移:
无论最高位是什么,右移后,都用0补。
一个数异或另一个数两次,结果还是其本身。
10)a++:
a=a+1;b=a++:
b=a,a=a+1;++a:
a=a;b=++a:
b=a+1,a=a+1.
11)字符串数据和任何数据使用加号都表示相连接,最终都变成字符串。
例:
”5+5=”+5+5结果是5+5=55;”5+5=”+(5+5)结果是5+5=10.
12)转义字符:
通过反斜线“\”来转变后面字符或符号的含义。
例:
\n:
换行;\b:
退格(相当于backspace);\r:
按下回车键(window系统,回车符是由两个字符来表示\r\n);\t:
制表符(tab键)。
13)Shorts=5;第一种运算:
s=s+5;第二种运算:
s+=5;比较:
第一种运算进行了两次运算,先做完加法在赋值,有个自动类型提升过程;而第二种运算只做一次赋值运算,把左右两边和赋给左边。
最大的不同在于第二种做了一个自动转换动作,第一种没有,第一种运算完是一个int类型的值,不能把它赋给short类型的变量,精度丢失。
简析:
s=s+5;//编译失败,因为s会被提升为int类型,运算后结果还是int类型,无法赋值个short类型。
s+=5;//编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。
14)分隔符:
空白分隔符:
用来分隔关键字和标识符;
普通分隔符:
一般是用“.”“;”“:
”三种。
程序流程控制:
顺序;选择;循环
1.If语句
格式:
if(条件表达式){
语句块}
条件表达式成立,就执行语句块;否则不执行。
如果语句块只有一条语句,
那么大括号可以省略。
注:
如果if语句后是分号,那么if不能作用到下面的代码。
2.If-else语句格式:
if(条件表达式){
语句块1}
else{
语句块2}
与三元运算符的区别:
if-else简写格式:
变量=(条件表达式)?
表达式1:
表达式2
三元运算符:
好处:
可以简化if-else代码;
弊端:
因为是一个运算符,所以运算完必须要有一个结果。
3.If-elseif语句格式:
if(条件表达式){语句块1}elseif{语句块2}elseif{语句块3}
……
else{语句块n}
4.Switch语句格式:
switch(表达式){//表达式只能是byte、short、char、int类型
case取值1;//开关控制,取值1符合,则执行语句1.
执行语句1;
break;//执行结束
case取值2;
执行语句2;
break;
……
default;
执行语句n;
break;//最后这个break可以省略。
}
if和switch选择:
如果判断的数值不多,而且符合byte、short、char、int
这四种类型,两个语句都可以使用,建议使用switch,因为效率高,依据
枚举型值来判断,也选用switch语句;对区间判断和对boolean类型判断,
使用if语句,if语句使用范围更广。
5.While语句
格式:
while(条件表达式){
执行语句;}
特点:
如果条件表达式一直满足,那么循环一直进行,称之为死循环。
因此
需要在执行语句中对条件进行限制,防止死循环。
6.dowhile语句
格式:
do{
执行语句
}while(条件表达式);
特点:
条件无论是否满足,循环体至少被执行一次。
注:
语句结束有两种方式:
1.后面跟个大括号;2.后面跟个分号。
7.for语句
格式:
for(初始化表达式;循环条件表达式;迭代语句){
执行语句;}//执行语句也叫循环体
执行流程:
循环初始化--->循环条件表达式--->不满足退出;
满足执行循环体--->循环迭代。
初始化表达式只执行一次,
循环条件不成立时,循环终止。
注:
1.for和while能互相转换,但是当变量只为循环的增量存在控制循环
次数的话,用for语句体现,内存相对优化点。
2.变量有自己的作用域,对于for来说,如果用于控制循环的增量定
义在for语句中,那么该变量值在for语句中有效,for语句执行完毕,
该变量在内存中释放。
8.总结:
什么时候使用循环语句。
当要对某些语句执行很多次时,就使用循环结构。
循环注意:
一定要明确那些语句参与循环,那些不参与循环。
9.无限循环的最简单表达形式:
for(;;){}
while(true){}
10.计数器思想,通过一个变量记录数据状态的变化,也需要通过循环完成。
11.
累加思想,原理:
通过变量记录每次变化的结果。
通过循环的形式进行累加的动作。
12.break(跳出)应用范围:
选择结构和循环结构。
continue(继续)应用范围:
应用于循环结构。
结束本次循环,继续下次循环。
注:
break和continue单独存在时,下面不能有任何语句,因为执行不到。
函数(方法)
1)定义:
函数就是定义在类中的具有特定功能的一段独立小程序。
2)格式:
修饰符返回值类型函数名(参数类型形式参数1,参数类型形式参数2,……){执行语句;
return返回值;}
返回值类型:
函数运行后的结果的数据类型;若没有具体的返回值时,这
时返回值类型用一个特殊的关键字来标识,即void,代表函数没有具体的
返回值;当函数的返回值类型是void时,函数中的return语句可以省略不
写。
参数类型:
形式参数的数据类型。
形式参数:
是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:
传递给形式参数的具体数值。
return:
用于结束函数。
返回值:
该值会返回给调用者。
3)当程序中需要多次进行某个操作(如输入不同数值进行运算),代码出现了重复,为了提高代码的复用性,对代码进行抽取,将抽取的部分定义成一个独立的功能,方便日后使用。
Java中对功能的定义是通过函数的形式来体现的。
4)特点:
1 定义函数可以将功能代码进行封装;
2 便于对该功能进行复用,提高代码的复用性;
3 函数只有被调用才会被执行;
5)注意:
函数只能调用函数,不可以在函数内部定义函数;定义函数时,函数的结果应该返回给调用者,交由调用者处理。
6)应用:
如何定义一个函数?
A.由于函数是实现一个具体的功能的,那么首先明确该功能的运算结果是什
么,也就是明确函数的返回值类型。
B.再明确定义该功能的过程中是否需要未知的内容参与运算,也就是明确函
数的参数列表(参数的类型和参数的个数)。
7)重载(overload):
同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。
特点:
与返回值类型无关,只看参数列表。
优点:
方便于阅读,优化了程序设计。
应用:
当定义的功能相同,但参与运算的未知内容不同,那么,这时就定义
一个函数名称表示该功能,而通过参数列表的不同来区分多个同名函数。
数组
1.定义:
同一种类型数据的集合,可以将数组看做是一个容器。
2.特点:
数组可以存储任何类型的数据,包括原始数据类型和引用数据类型,但是一旦指定了数组的类型后,就只能存储指定类型的数据。
3.优点:
可以自动给数组中的元素从0开始编号,方便操作这些元素。
4.格式1:
元素类型[]数组名=new元素类型[元素个数或数组长度];
new:
用于在内存中定义一个真实的容器实体。
数组名:
数据类型是数组类型,而不是前面的元素类型。
5.格式2:
元素类型[]数组名={元素,元素,……};
6.格式3:
元素类型[]数组名=new元素类型[]{元素,元素,……};
7.数据明确时,选用格式2或3创建数组;否则选用格式1。
8.内存结构:
java在运行时,需要在内存中分配空间,为了提高运算效率,需要对空间进行不同区域的划分,因为每一片区域都有特定的处理数据的方式和内存管理方式。
9.栈内存:
用于储存局部变量,当数据使用完,所占空间会自动释放。
10.堆内存:
数组和对象,用new创建的都在堆内存中。
11.数组的常见操作:
1 获取数组中的元素:
数组名[数组下标];
2 十进制-->二进制;十进制-->十六进制;
3
遍历数组中的元素:
用到for循环,定义变量为数组的下标。
4 获取数组的长度:
用到一个属性length。
使用方式:
数组名.length;
5 数组元素排序:
java已经定义好一种排序:
Arrays.sort(arr);开发中
要使用该句代码。
6 查表法十进制-->十六进制:
7 查表法十进制-->十六进制:
8 进制转换优化:
该优化主要是将进制转换间的共同部分封装成一个函
数,再在其他函数中调用该函数并输入相应参数就可以进行相应的进制间转换,其中num是输入需要转换的数值,base是输入需要转换的进制减一,也就是十到二
(1),十到八(7),十到十六(15),最后offset是输入偏移量,这时根据数据在内存中的存储方式进行计算,也就是十到二(偏移1位),十到八(偏移3位),十到十六(偏移4位)。
注:
一个数在计算机中存储方式:
例如60
0000-00000000-00000000-00000011-1100.
9 获取数组的最值:
12.数组创建完毕后,系统会给不同类型的数组不同的默认初始值。
String类型:
null;int类型:
0;double类型:
0.0;Boolean类型:
false。
13.二维数组:
应用-->例如一个公司n个小组各个季度的销售额。
格式1:
int[][]arr=newint[3][4];
说明:
定义了一个名称为arr的二维数组,二维数组中有3个一维数组,每
个一维数组中有4个元素。
格式2:
int[][]arr={{},{},…,{}};
14.折半查找:
正常查找-->折半查找(为了提高效率)
正常查找:
定义功能,获取key第一次出现在数组中的位置。
如果返回-1,
那么代表该key在数组中不存在。
折半查找:
提高效率,但是必须保证该数组是有序的数组。
折半的另一种方式:
练习:
一个有序数组,将一个元素插入到该数组中,保证该数组仍是有序地。
面向对象
1.对象:
一切客观存在的事物都是对象。
2.特点:
例:
电脑是个对象:
打开(关闭)电脑是面向过程,强调动作打开(关闭);而面向对象就是将打开(关闭)电脑这些行为封装进电脑这个对象中,我们调用电脑那么就可以使用打开(关闭)电脑这些功能了。
1 面向对象是相对面向过程而言;
2 面向对象和面向过程都是一种思想;
3 面向过程强调的是功能行为;
4 面向对象是将功能封装进对象,强调具备了功能的对象;
5 面向对象是基于过程的。
3.面向对象三大特征:
封装,继续,多态。
注:
以后开发,其实就是找对象使用,没有对象,就创建一个对象;工作重
点就是找对象、建立对象、使用对象、维护对象。
4.类与对象的关系:
类就是对现实生活中事物的描述;对象就是这类事物,实实在在的个体。
对于现实生活的事物对象,提取对象中的共性内容,对具体的抽象就是类。
具体对象就是对应java在堆内存中用new建立的实体。
描述事物其实就是在描述事物的属性和行为。
5.类:
对大量对象的抽象;属性对应类中变量;行为对应类中的方法(函数)。
1 格式:
[修饰符]class类的名称{}
2 组成:
属性(成员变量或全局变量)+方法(函数)
3 属性:
记录、描述类特征的直接定义在类中的变量;
4 方法:
对象的某项功能的封装。
5 通过类创建对象格式:
类名类类型变量=new类名();
6.类类型:
属于引用数据类型,一般是同过new创建的对象,并且赋值给一个类类型的变量(也叫作句柄)。
类类型变量指向对象。
7.成员变量与局部变量的区别:
作用范围:
成员变量的作用域是整个类,局部变量作用域是函数或语句中;内存中的位置:
成员变量在堆内存中,因为对象的存在,才在内存中存在,局部变量存在于栈内存中。
注:
成员变量可以不需要初始化就直接使用,那是因为成员变量存在于堆内
存中,都有系统给予的默认初始化值;局部变量需要初始化才能使用,因为
局部变量存在于栈内存中。
8.匿名对象:
对象的简化形式,一般有两种使用情况:
当对对象方法仅进行一次调用时;匿名对象可以作为实际参数进行传递。
格式:
new类名();区别于类创建对象.
应用:
当对对象方法(属性调用没意义)仅进行一次(多次操作会将前一次的
覆盖掉,没意义)调用时。
9.封装:
是指隐藏对象的属性和事项细节,仅对外提供公共的访问方式。
优点:
将变化隔离;便于使用;提高重用性;提高安全性。
原则:
将不需要对外提供内容都隐藏起来;把属性都隐藏,提供公共方法对
其访问。
10.private关键字:
私有,权限修饰符:
用于修饰类中的成员(成员变量,成员函数)。
私有只在本类中有效。
将属性私有化以后,类以外即使建立了对象也不能直接访问,但是对象应该有这个属性,就需要在类中提供对应的访问属性的方式。
注:
私有仅仅是封装的一种表现形式,封装不是私有。
11.每一个封装的属性都有两个访问方式:
一个设置(set)方法,其返回值类型一般都是无返回值类型(void);一个获取(get)方法,其返回值类型与输入的数据类型一致。
之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句,对访问的数据进行操作,提高代码的健壮性。
例:
我们在对人的属性年龄封装在提供的方法中判断是否符合年龄的实际情况,不能出现负数或者很大的数。
12.构造函数:
通过类创建对象,对象一建立,就会调用与之对应的构造函数。
作用:
给对象进行初始化。
特点:
函数名和类名相同;不用定义返回值类型;不可以写return语句。
注意:
当一个函数中没有定义构造函数时,系统会给与一个默认的空参数
的构造函数(形式:
类名(){}),方便该类进行初始化和创建对象,否则对
象是建立不出来的,因为对象没有初始化;当在类中自定义了构造函数后,
默认的构造函数就没有了。
多个构造函数是以重载的形式存在的。
13.构造函数与一般函数的区别:
1 构造函数与一般函数在写法上不同;
2 在运行上也不同:
构造函数是在对象一建立就运行,而一般函数只有在
对象调用时才执行,是给对象添加其具备的功能;
3 一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多
次。
14.什么时候定义构造函数:
当分析事物时,该事物具备一些特性或行为,那么将这些内容定义在构造函数中。
15.构造代码块:
对象一建立就运行,并且优先于构造函数执行;
作用:
给对象初始化。
16.构造代码块和构造函数的区别:
1 构造代码块是给所有的对象初始化;构造函数是给对应的对象初始化。
2 构造代码块中定义的是不同对象的共性初始化内容。
例:
中国人。
17.this关键字:
当一个对象创建后,java虚拟机就会给这个对象分配一个引用自身的指针,这个指针的名字就叫做this。
简单说:
那个对象在调用this所在的函数,this就代表那个对象。
应用:
this可以用于区分成员变量和局部变量;当定义类中功能(函数)时,
该函数内部要用到调用该函数的对象时,这时用this来表示这个对象;但
凡本类功能内部使用到本类对象,都用this表示;用于构造函数之间互相
调用,要用到this关键字,必须写在构造函数的第一行,因为初始化动作
要先执行,调用格式:
this(参数)。
18.static关键字:
静态修饰符;用于修饰成员(成员变量,成员函数)。
当成员被静态修饰后,就多了一种调用方式,除了被对象调用外,还可以直接被类名调用,格式:
类名.静态成员。
特点:
1 随着类的加载而加载,也就是说,静态会随着类的消失而消失,生命周
期最长;
2 优先于对象存在,静态是先存在的,对象是后存在的;
3 被所有对象所共享;
4 可以直接被类名调用。
19.成员变量被static修饰时叫做静态的成员变量或类变量,其他叫实例变量。
两者之间的区别:
1 存放位置:
类变量随着类的加载而存在于方法区中;
实例变量随着对象的建立而存在于堆内存中。
2 生命周期:
类生命周期最长,随着类的消失而消失;
实例变量生命周期随着对象的消失而消失。
20.方法区(也叫作共享区,数据区):
java程序的执行JVM会开辟5个区域。
21.静态使用注意事项:
1 静态方法只能够访问静态成员,非静态方法既可以访问静态成员也可以
访问非静态成员。
2 静态方法中不可以定义this、super关键字,因为静态优先于对象存在,
所以静态方法中不可以出现this。
3 主函数是静态的。
22.静态利弊:
利处:
对对象的共享数据进行单独空间的存储,节省空间。
没有必要每一个对象中都存储一份;可以直接被类名调用。
弊端:
生命周期过长,访问出现局限性。
(静态虽好,只能访问静态)
23.主函数:
是一个特殊的函数,作为程序的入口,可以被JVM调用。
主函数的格式是固定的,JVM识别。
主函数中只有args(变量名)是可以改变的。
定义格式:
publicstaticvoidmain(String[]args){}
public:
代表该函数的访问权限是最大的。
static:
代表着主函数随着类的加载就已经存在了。
void:
主函数没有具体的返回值。
main:
不是关键字,但是是一个特殊的单词,可以被JVM识别。
(String[]args):
函数的参数,参数类型时一个数组,该数组中的元素是
字符串,也称作字符串类型数组。
24.JVM在调用主函数时,传入的参数(args)是:
newString[0];我们向主函数传值可以用下面的方式:
25.什么时候
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 初级 知识 总结