JAVA基础知识点梳理精简.docx
《JAVA基础知识点梳理精简.docx》由会员分享,可在线阅读,更多相关《JAVA基础知识点梳理精简.docx(29页珍藏版)》请在冰豆网上搜索。
JAVA基础知识点梳理精简
JAVA基础知识点梳理(重点笔记)
1、标识符规则
a)可以由字母、数字、下划线、美元符$组成,不能以数字开头
b)不能就是java得关键字与保留字
c)严格区分大小写,且尽量见名知意
2、变量
publicclasstest{
ﻩpublicstaticvoidmain(String[]args){
ﻩStringlove="imooc";
System、out、println("变量love得内容就是:
"+love);
love="iloveimooc";
System、out、println("重新赋值后变量love得内容就是"+love);
}
}
3、变量命名习惯:
a)第一个单词得首字母小写,其后单词得首字母大写(骆驼式),myAge
b)变量命名时,尽量简短且能清楚得表达变量得作用,见名知意,如stuName
Ps:
java变量长度没有限制,但就是严格区分大小写
4、数据类型
a)int:
4个字节ﻩﻩ
b)Double:
8个字节
c)Float:
4个字节ﻩfloat变量赋值在数值后添加字母ffloat he=12、2f;
d)Char:
2个字节ﻩchar变量赋值使用单引号’’
e)Boolean:
1个字节取值只能为:
true与false
f)String :
引用数据类型
5、Java常量得应用:
a)Final 数据类型常量名=值;
b)常量名一般使用大写字符
6、逻辑运算符:
a)^:
异或 有且只有一个为true则返回true
7、条件运算符:
a)()?
正确表达式 :
错误表达式
i.Eg:
Stringstr=(8>5)?
“yes”:
“no”
8、运算符优先级最高得就是:
()
9、输出换行:
System、out、println();
//循环语句练习
packagettt;
publicclasstest6{
publicstaticvoidmain(String[]args){
ﻩﻩinti=1;
ﻩint sum1=0;
ﻩfor(;i<101;i++){
ﻩﻩif((i%3)!
=0){
ﻩﻩsum1+=i;
ﻩ}
ﻩ}
ﻩSystem、out、println("100以内不可以被3整除得数之与为:
"+sum1);
}
}
10、System、out、println换行
11、System、out、print不换行
package ttt;
importjava、util、Scanner;
publicclasstest8{
ﻩpublic staticvoidmain(String[] args){
ﻩint i=1;
ﻩﻩSystem、out、println("请键入一个9位以内得数:
");
ﻩScanner aa=newScanner(System、in);
ﻩint bb=aa、nextInt();
ﻩaa、close();
ﻩfor(;bb>9;i++){
ﻩﻩbb=bb/10;
}
System、out、println("i得值为"+i);
}
}
12、数组
a)声明数组:
i.数组类型[] 数组名;
ii.数组类型 数组名[];
b)ﻩ分配空间:
i、数组名 =new数据类型【数组长度】
Eg:
socres =newint[5];
合并:
int[] socres=newint[5];
c)int[]sorces={1,2,2,3};
等价于:
int[]sorces=new int[]{1,2,2,3};
d)数组名、length获取数组得长度
e)ﻩarrays类操作java中得数组
1、排序:
arrays、sort(数组名) (升序)
2、将数组转换为字符串:
arrays、toString(数组名);(可以实现把多个数组元素连接在一起,元素中间用逗号与空格隔开)。
f)ﻩforeach形式得for语句使用:
for(int i:
words){
ﻩSystem、out、print(i);
}
15、java中无参无返方法得调用
a)定义:
publicvoidshow(){} 方法名字第一个词小写,之后首字母大写
b)调用:
i.创建类得对象
ii.对象名、方法名();
16、java中无参有返方法得调用
a)Publicintshow(){ return sum; }
b)注意:
i.如果方法得返回类型为void,则方法中不能使用return返回值
ii.方法得返回值最多只能有一个,不能返回多个值
iii.方法返回值得类型必须兼容
17、方法得重载:
a)必须就是在同一个类中
b)方法名相同
c)方法参数得个数、顺序或类型不同
d)与方法得修饰符或返回值没有关系
18、随机数方法:
(int)(Math、random()*100)不需要导包
19、类与对象:
a)类就是模子,确定对象将会拥有得特征(属性)与行为(方法)
b)类就是对象得模型,具有相同属性与方法得一组对象得集合
c)对象:
i.属性——对象具有得各种特征
ii.每个对象得每个属性都有特定值
d)类就是抽象概念,仅仅就是模板,比如“手机”;对象就是一个具体得实体
e)所有得java程序都就是以类class为组织单元,由属性与方法组成
f)Java对象使用步骤:
i.类名对象名=new类名();
ii.Phonephone=new Phone();
iii.引用属性:
phone、screen=5;//给screen属性赋值5
iv.引用方法:
phone、send();//调用send()方法
20、成员变量与局部变量得区别
a)作用域不同
b)初始值不同
c)在同一个方法中,不允许有同名局部变量
d)两类变量同名时,局部变量具有更高得优先级
21、构造方法:
a)使用new+构造方法 创建一个新得对象
b)构造方法就是定义在java类中得一个用来初始化对象得方法
c)构造方法与类同名且没有返回值
v.构造方法得格式:
public构造方法名(){//初始化代码 }
vi.Phone phone=newPhone();
vii.构造方法得名字与类名相同
d)当没有指定构造方法就是,系统会自动添加无参得构造方法
e)当有指定构造方法,无论就是有参、无参得构造方法,都不会自动添加无参得构造方法
f)构造方法得重载:
方法名相同,但参数不同得多个方法,系统自动选择
22、静态变量static:
a)Static可以修饰变量、方法、代码块
b)访问(引用):
类名、变量名 hello、haha
c)定义:
public staticStringhaha=”imoc”;
d)Public:
表示公开得、公有得
23、静态方法:
a)访问:
类名、方法名();
b)静态方法中可以直接调用同类中得静态成员,但不能直接调用非静态成员。
c)如果调用非静态成员,可以通过对象来访问
d)在普通得方法中可以直接访问同类得非静态变量与静态变量
e)静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。
24、程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。
25、面向对象得三大特性:
封装、继承、多态
26、封装:
a)概念:
将类得某些信息隐藏在类内部,不允许外部程序直接访问,而就是通过该类提供得方法来实现对隐藏信息得操作与访问
b)好处:
只能通过规定得方法访问数据;隐藏类得实例细节,方便修改与实现
c)实现步骤:
i.修改属性得可见性:
设为private:
privateinta;
ii.创建getter/setter方法:
用于属性得读写
iii.在getter、setter方法中加入属性得控制语句:
对属性得合法性进行判断
iv.(其实就就是通过调用方法去读写属性)
v.可以通过eclipse 中source菜单中selectgetters andsetters tocreate
27、java中得包:
a)作用:
管理java文件;解决同名文件冲突
b)定义包:
package包名
i.必须放在java源程序得第一行
ii.包名间可以使用“、”隔开
iii.Eg:
、imooc、myclass‘;
c)ﻩ系统包:
Java、lang、(类):
包含java语言基础得类
Java、util、(类):
包含java语言中各种工具类
Java、io、(类):
只包含输入、输出相关功能得表
d)包得使用:
I、ﻩ可以通过import关键字,在某个文件使用其她文件中得类。
Import、imooc、music、myclass
Ii、ﻩJava中,包得命名规范就是全小写字母拼音
Iii、使用得时候不但可以加载某个包下得所有文件,也可以加载某个具体子包下得所有文件
访问修饰符得总结
访问修饰符
本类
同包
子类
其她
private
√
默认
√
√
protected
√
√
√
public
√
√
√
√
28、this关键字:
a)代表当前对象
i.This、属性 操作当前对象得属性
ii.This、方法调用当前对象得方法
b)封装对象得属性得时候经常会使用this关键字
29、java中得内部类:
(包含内部类得类称为外部类)
a)内部类提供了更好得封装,可以把内部类隐藏在外部类之内,不允许同一个包中得其她类访问该类
b)内部类得方法可以直接访问外部类得所有数据,包括隐私得数据
c)内部类所实现得功能使用外部类同样可以实现,只就是有时使用内部类更方便
d)内部类可以分为:
i.成员内部类
1.内部类中定义得方法可以直接访问外部类中得数据,不受访问控制符得影响
2.定义一个内部类对象:
ﻩﻩ内部类对象名=外部类对象、new内部类()
3.外部类不能直接使用内部类得成员与方法,可以先创建内部类得对象,然后通过内部类得对象来访问其她成员变量与方法
4.外部类与内部类具有相同得成员变量或方法,则内部类默认访问自己得成员变量或方法,如果要访问外部类得成员变量,可以使用this关键字
ii.静态内部类
1.静态内部类不能直接访问外部类得非静态成员,但可以通过 new外部类()、成员 得方式访问
2.如果外部类得静态成员与内部类得成员名称相同,可以通过“类名、静态成员”访问外部类得静态成员;如果外部类得静态成员与内部类得成员名称不同,则可以通过“成员名”直接调用外部类得静态成员
3.创建静态内部类得对象时,不需要外部类得对象,可以直接创建内部类对象名=new内部类();
iii.方法内部类
1.方法内部类就就是定义在外部类得方法中,方法内部类只在该方法得内部可见,即只在该方法内可以使用。
2.由于方法内部类不能在外部类得方法以外得地方使用,因此方法内部类不能使用访问控制符与static修饰符
iv.匿名内部类
30、继承:
a)Java里都就是单继承
b)好处:
i.子类直接拥有父类得所有属性与方法,但private除外
ii.实现代码得复用
iii.Class子类extends父类
c)Final关键字
i.修饰类:
则该类不允许被继承
ii.修饰方法:
则该方法不允许被覆盖(重写)
iii.修饰属性:
则该类得属性不会进行隐式得初始化(类得初始化属性必须有值)或在构造方法中赋值
iv.修饰变量,则变量得值只能赋一次,即常量
d)Super关键字
i.在对象得内部使用,可以代表父类对象
ii.方位父类得属性,或方法, super、agesuper、eat()
31、Object类:
a)Object类就是所有类得父类,如果一个类没有使用extends关键字明确标识继承另一个类,那么这个类默认继承object类
b)Object类中得方法,适合所有子类
c)方法:
i.toString()方法:
1.在object类里面定义得tostring()方法得时候返回得对象得哈希码(对象地址字符串)(用来区分对象)
2.如:
直接输出dog对象得值:
System、out、println(dog);
3.生成:
source菜单栏——>generatetoString()——>生成输出属性得方法
ii.Equals()方法:
1.比较得就是对象得引用就是否指向同一块内存地址:
Dogdog=newDog();
2.生成:
source菜单栏——>generatehashcode()andequals()、、、
a)类对象:
姓名、年龄、身高、、、obj、getclass()
b)类得对象:
小灰、25、170、、、obj
3.调用:
if(dog1、equals(dog2))——>判断两个对象就是否相同
32、多态:
(继承就是多态得基础)
a)引用多态:
i.父类得引用可以指向本类得对象:
animalsobj1=newanimals();
ii.父类得引用可以指向子类得对象:
animalsobj2=new dog();
iii.注意:
子类得引用不可以指向父类得对象:
dogobj3=new animals();
b)方法多态:
i.创建本类对象时,调用得方法为本类方法
ii.创建子类对象时,调用得方法为子类重写得方法或者继承得方法
33、多态中得引用类型转换
a)向上类型转换(隐式/自动类型转换),就是小类型到大类型得转换,无风险
b)向下类型转行(强制类型转换),就是大类型到小类型得转换,有风险,溢出
c)Instanceof 运算符,来解决引用对象时得类型,避免类型转换得安全问题
i.Eg:
Dogdog=newDog();
Animalanmal=dog;//自动类型提升,向上类型转换
Dogdog2=(Dog)animal;//强制类型转换,向下类型转换
Catcat=(Cat)animal;//编译时Cat类型;运行时Dog类型,报错
可以替换为:
if (animalinstanceofCat){
Catcat=(Cat)animal;
}
34、抽象类:
a)语法:
抽象类前使用abstract关键字修饰,则该类为抽象类
b)作用:
限制规定子类必须实现某些方法,但不关注实现细节
c)规则:
i.Abstract定义抽象类
ii.Abstract定义抽象方法,只有声明,不需要实现
iii.包含抽象方法得类就是抽象类
iv.抽象类中可以包含普通得方法,也可以没有抽象方法
v.抽象类不能直接创建,可以定义引用变量
d)现有Shape图形类,用Rectangle矩形与Circle圆形子类,求图形得周长与面积:
Shape、java:
package 、amooc;
publicabstract class Shape{
ﻩpublicabstract voidzhouchang(doublel,double w);
publicabstractvoid mianji(double l,doublew);
publicabstractvoidzhouchang2(doubler);
publicabstractvoidmianji2(doubler);
}
Rectangle、java:
package、amooc;
public classRectangleextendsShape{
ﻩpublicvoidzhouchang(doublel,doublew){
ﻩdoublez;
z=2*(l+w);
ﻩﻩSystem、out、println("长为:
"+l+" ,宽为:
"+w+",得长方形周长就是:
"+z);
ﻩ}
ﻩpublicvoidmianji(doublel,doublew){
ﻩdouble m;
ﻩm=l*w;
ﻩSystem、out、println("长为:
"+l+",宽为:
"+w+",得长方形面积就是:
"+m);
}
publicvoidzhouchang2(double r){
ﻩdoublez;
ﻩz=2*3、14*r;
System、out、println("半径为:
"+r+",得圆形周长就是:
"+z);
}
ﻩpublicvoid mianji2(doubler){
ﻩdoublem;
ﻩm=3、14*r*r;
ﻩSystem、out、println("半径为:
"+r+" ,得圆形面积就是:
"+m);
ﻩ}
}
imooc1、java:
package、amooc;
publicclassimooc1{
public staticvoid main(String[] args){
ﻩﻩRectanglez1=new Rectangle();
Shapem1=newRectangle();
Shape z2=newRectangle();
Shapem2=new Rectangle();
ﻩﻩz1、zhouchang(3,4);
ﻩm1、mianji(3,4);
ﻩz2、zhouchang2(3);
ﻩﻩm2、mianji2(3);
}
}
35、接口:
a)概念:
接口可以理解为一种特殊得类,由全局常量与公共得抽象方法所组成。
类就是一种实现体,而接口定义了某一批类所需要遵守得规范,接口不关心这些类得内部数据,也不关心这些类里方法得实现细节,它只规定这些类里必须提供某些方法
b)定义:
与类定义不同,定义接口不再使用class关键字,而就是使用interface关键字
c)基本语法:
[修饰符] interface接口名 [extends父接口1,父接口2、、、]
{
零个到多个常量定义
零个到多个抽象方法得定义
}
接口就是用来被继承、被实现得,修饰符一般建议用public
注:
不能使用private与protected修饰接口
d)接口定义常量:
接口中得属性就是常量,即使定义时不添加public staticfinal修饰符,系统也会自动加上
e)接口定义方法:
接口中得方法只能就是抽象方法,总就是使用,即使定义时不添加publicabstract,系统也会自动加上
f)使用接口1:
i.一个类可以实现一个或多个接口,实现接口使用implements关键字,java中一个类只能继承一个父类就是不够灵活得,通过实现多个接口可以做补充
ii.继承父类实现接口得语法为:
[修饰符]class 类名extends父类implements接口1,接口2、、、
{
类体部分//如果继承了抽象类,需要实现继承得抽象方法;要实现接口中得抽象方法、、、
}
如果要继承父类,继承父类必须在实现接口之前
Eg:
newinterfaceIjiekou (命名习惯,名字前加大写I)
g)使用接口2:
i.接口在使用过程当中,还经常与匿名内部类配合使用,匿名内部类就就是没有名字得内部类,多用于关注实现而不关注实现类得名称
ii.语法格式:
Interfacei=newInterface(){
public voidmethod(){
System、out、println(“匿名内部类实现接口得方式”);
}
};
注意:
末尾以分号结束
或:
newInterface(){
PublicvoidplayGame(){
System、out、println(“使用匿名内部类得方式实现接口”);
}
}、playGame();
h)在接口中定义方法geta(),正确得格式就是:
voidgeta();
注:
接口方法不能有方法体,同时方法得访问修饰符不能为private与protected
36、UML:
(unified modelinglanguage),又称统一建模语言或标准建模语言。
就是一个支持模型化与软件系统开发得图形化语言,为软件开发得所有阶段提供模型化与可视化支持。
a)用例图:
(theusecase diagram)
i.用例图能够以可视化得方式,表达系统如何满足所收集得业务规则,以及特定得用户需求等信息
b)序列图:
(thesequencediagram)
i.序列图用于按照交互发生得一系列顺序,显示对象之间得这些交互
c)类图:
(theclassdiagram)
i.UML类图业务逻辑与所有支持结构一同被用于定义全部得代码结构
d)UML建模工具:
i.Visio、rationalrose、powerdesign
37、综合练习:
答答租车系统
a)功能:
i.展示所有可租车辆
ii.选择车型、租车量
iii.展示租车清单,包含:
总金额、总载货量及其车型、总载人量及其车型
b)项目分析:
i.数据模型分析
1.通过对现实世界得事与物主要特征得分析、抽象,为信息系统得实施提供数据存取得数据结构以及相应得约束
2.数据结构得组成:
操作(方法)、属性
ii.业务模型分析
iii.显示与流程分析
38、异常:
走路被树叶绊倒,吃糖饼烫后脑勺,考试快交卷了才发现反面还有题、、、
a)组织图:
b)处理异常:
i.try-catch以及try-catch-finally
ii.Eg:
Try{
//一些会抛出异常得方法
}catch(Exceptione){
//处理该异常得代码块
}finally{
//最终将要执行得代码
}
iii、
package 、imooc0325;
public class test1{
/*
ﻩﻩdivide:
除数
result:
结果
ﻩﻩtry-catch捕获while循环
每次循环,divide减1,result=result+100/divide
如果:
捕获异常,打印输出"抛出异常了!
!
!
",返回-1
ﻩﻩ否则:
返回result
ﻩ*/
ﻩpublicinttest(){
ﻩﻩintdivide=10;
ﻩintresult =100;
try{
ﻩﻩwhile(divide>-1){
ﻩﻩﻩdivide--;
ﻩresult =result+100/divide;
ﻩﻩ}
ﻩreturn result;
ﻩ}catch(Exceptione){
ﻩﻩe、printStackTrace();//打印异常具体信息
ﻩﻩSystem、out、println("循环抛出异常了!
!
!
");
ﻩﻩreturn-1;
ﻩ}finally{
ﻩﻩSystem、out、println("我还会回来得~~");
}
}
ﻩpublic staticvoidmain(String[]args){
ﻩtest1tct=newtest1();
ﻩintresult=tct、test();
System、ou