CoreJava笔记.docx
- 文档编号:7118576
- 上传时间:2023-01-19
- 格式:DOCX
- 页数:91
- 大小:134.63KB
CoreJava笔记.docx
《CoreJava笔记.docx》由会员分享,可在线阅读,更多相关《CoreJava笔记.docx(91页珍藏版)》请在冰豆网上搜索。
CoreJava笔记笔记1.前言1-41.1.JAVA特点1-41.2.运行原理1-41.3.JAVA目录1-42.一基础知识2-42.1.配置环境2-42.2.Java中基本概念2-53.二定义,关键字和类型3-53.1.注释的三种形式3-53.2.Java代码中的“;”、“”、“”3-53.3.标识符3-53.4.数据类型3-63.5.命名规则3-64.三表达式和控制流4-64.1.变量和作用域4-64.2.操作符4-74.3.数字类型之间的转换4-74.4.强制类型转换4-84.5.转换的二种类型4-84.6.控制流4-84.7.循环语句4-85.四数组5-95.1.声明数组5-95.2.创建数组5-95.3.初始化数组5-105.4.多维数组5-105.5.数组拷贝5-106.五对象和类6-116.1.面向对象与面向过程6-116.2.对象的概念6-126.3.成员变量和局部变量6-126.4.成员方法6-126.5.This关键字6-136.6.访问控制符6-136.7.构造方法6-136.8.数据和方法的隐藏封装6-146.9.方法的重载6-157.六高级语言特性7-157.1.封装(encapsulation)7-157.2.继承(inherit)7-167.2.1.JAVA继承特点7-167.2.2.父类(SuperClass)和子类(SubClass)的关系7-177.2.3.系统构造一个对象的顺序7-177.3.多态(polymorphism)7-187.3.1.方法的覆盖(overridding)7-187.3.2.多态的分类7-187.3.3.运行时多态的三原则7-197.3.4.关系运算符:
instanceof7-207.4.静态变量,方法和类7-207.5.Singleton模式7-227.6.final关键字7-227.6.1.final变量不能被改变;7-227.6.2.final方法不能被改写;7-237.6.3.final类不能被继承;7-237.6.4.String类7-237.7.抽象类7-247.8.接口(模板方法模式)7-257.9.Object类7-277.10.封装类7-287.11.内部类7-297.11.1.内部类的分类7-297.11.2.成员内部类7-297.11.3.局部内部类7-307.11.4.静态内部类7-307.11.5.匿名内部类7-317.12.集合7-317.12.1.集合接口类层次7-327.12.2.集合类层次7-337.12.3.五个最常用的集合类之间的区别和联系7-337.12.4.比较7-357.13.反射7-378.七异常8-378.1.异常的基本概念8-378.2.捕获异常8-388.3.处理异常8-388.4.捕捉多个异常8-388.5.finally声明8-388.6.异常调用栈8-398.7.异常层次8-398.8.一些未检查的异常8-398.9.写你自己的异常8-398.10.抛出你自己的异常8-409.八图形用户接口9-4010.九AWT(AbstractWindowToolkit)事件模型10-4111.十TheAWTComponentLibrary11-4112.十一JFC(JavaFoundationClasses)12-4113.十二Applets13-4114.十三线程Thread14-4114.1.线程原理14-4114.2.线程实现的两种形式14-4214.3.线程的生命周期14-4314.4.Thread的方法14-4314.5.共享数据的并发处理14-4414.6.使用互斥锁的注意事项14-4415.十四标准I/O流与文件15-4615.1.对文件的操作15-4615.2.处理跨平台性15-4615.3.对象的序列化接口15-4715.4.I/O流基础15-4715.5.流的分类15-4715.6.I/O输入输出15-4816.十五网络编程16-5216.1.网络基础知识16-5216.2.TCPSocket16-5416.2.1.建立TCP服务器端16-5416.2.2.建立TCP客户端16-5516.3.建立URL连接16-5516.4.UDPsocket16-5816.4.1.建立UDP发送端16-5816.4.2.建立UDP接受端16-5917.java5.0的新特性17-5917.1.泛型17-5917.1.1.说明17-5917.1.2.用法17-6017.1.3.泛型的通配符?
17-6217.1.4.泛型方法的定义17-6317.1.5.泛型类的定义17-6317.1.6.泛型与异常17-6417.1.7.泛型的一些局限型17-6517.2.增强的for循环17-6617.3.自动装箱和自动拆箱17-6917.3.1.在基本数据类型和封装类之间的自动转换17-6917.4.类型安全的枚举17-7017.5.静态引入17-7117.6.C风格的格式化输出17-7217.7.BuildingStrings(StringBuilder类)17-7317.8.可变长的参数17-7317.9.JAVA5.0的注释(Annotation)17-7317.10.Callable和Future接口17-74JAVA数据库连接:
JDBC1.前言前言1.1.JAVA特点特点1)简单(Java语法是C+语法的一个“纯净”版本);2)可移植性(一次编译到处运行)3)面向对象4)分布式(Java把打开套接字连接等繁琐的网络任务变得非常容易)5)健壮性(Java编译器会检查出很多其他语言在运行时刻才显示出来的错误;Java采用的指针模型可以消除重写内存和数据崩溃的可能)6)多线程(多线程编程的简单性是Java成为流行的服务器端开发语言的主要原因之一)7)安全(用Java可以构建防病毒和防篡改的系统)9)动态(Java可随意增加新的方法以及实例变量,而客户端却不需做任何的更改)10)体系结构中立(字节码与计算机体系结构无关,只要存在运行时系统,可在多种处理器上执行)1.2.运行原理运行原理先编译*.java文件*.class文件运行*.class加载JVM(JAVA虚拟机)1.3.JAVA目录目录JRE运行环境SRC类库BIN应用程序2.一一基础知识基础知识2.1.配置环境配置环境LINUX系统(修改环境配置文件)1打开shell2vi.bash_profile3JAVA_HOME=JAVA目录路径4PATH=$JAVA_HOME/bin:
其他路径5CLASSPATH=.6exportJAVA_HOMECLASSPATHWindows系统我的电脑属性环境变量设置环境变量:
JAVA_HOME=路径PATH=%PATH%;c:
j2sdk1.4.2_05bin;CLASSPATH=.;2.2.Java中基本概念中基本概念1)源文件在最顶层只包括一个public类型的类/接口,文件名与类/接口名同并以.java作为文件后缀。
2)包(package,在源文件中thisidentify只能放在第一行,且最多只能是一行)一个将类和接口组织在一块的实体,在文件系统中以目录/文件夹型式呈现。
3.二二定义,关键定义,关键字和类型字和类型3.1.注释的三种形式注释的三种形式/单行注释/*一或多行注释*/*文档注释*/3.2.Java代码中的代码中的“;”、“”、“”Java语句以分号分隔;Java代码块包含在大括号内;忽略空格。
3.3.标识符标识符1)用以命名类、方法和变量、以及包;遵守JAVA的命名规范类以每个单词都以大写字母开头。
方法和变量第一个字母不大写,其他依旧2)以字符、“_”或“$”开头;3)无长度限制。
3.4.数据类型数据类型1)整型byte1B8位-128到127short2B16位-215到215-1int4B32位-231到231-1long8B64位-263到263-12)浮点类型float4B32位double8B64位3)字符类型char2B16位4)布尔型booleanfalse/true注:
1)char是无符号的16位整数,字面值必须用单引号括起来;a2)String是类,非原始数据类型;3)长整型数字有一个后缀为“L”或“l”,八进制前缀为“0”,十六进制前缀为“0x”;4)黙认浮点类型为double;5)float数据类型有一个后缀为“f”或“F”,Double数据类型后可跟后缀“D”或“d“3.5.命名规则命名规则1)类/接口名首字母大写;2)方法、变量名第一个字母小写,其余首字母大写;3)常量名称全部大写;4)包名全部小写。
4.三三表达式和控制流表达式和控制流4.1.变量和作用域变量和作用域1)局部变量定义在方法内部,其作用域为所在代码块,也称为临时变量、栈变量。
存在于栈中。
2)实例变量定义在类内部方法之外,其作用域为整个类。
如未定义初值,系统会自动为其赋黙认值。
存在于堆中默认数值类型黙认值byte0short0int0long0Lfloat0.0fdouble0.0dcharu0000空格booleanfalse*Allreferencetypesnull4.2.操作符操作符System.out.println(3/2)按整型计算得11)前面是零补零,前面是一补一;2)无符号右移;和对于负数不一样正数:
等于除以X的2次方负数:
正数的结果13)&短路与,前面为假,表达式为假,后面不须计算;4)|短路或,前面为真,表达式为真,后面不计算;例:
if(a3&(b=a)=0)b赋值if(a3&(b=a)=0)b不赋值4.3.数字类型之间的转换数字类型之间的转换1)byteshortintlong2)charint-float3)floatdouble4)long-float5)long-double6)intdouble注:
1)实箭头表示无信息损失的转换,虚箭头表示转换可能引起损失;2)int和float同为32位,但float要有几位表示幂的位数,在精度位数上要比int要小,所以有可能会有损失。
long转为double同理;3)char和short同为16位,但char属无符号数,其范围为0216,short的范围为-215215-1,所以char和short不能相互转换;4)byte、short、char属child型,在计算时会自动转为int型,然后转为更大范围类型(long、short、double)。
4.4.强制类型转换强制类型转换1)语法:
圆括号中给出要转换的目标类型,随后是待转换的变量名。
例:
doublcx=9.997;intnx=(int)x;2)如果试图强制转换的类型超出了目标类型的范围,结果是一个被截取的不同的数值;3)不能在布尔值和任何数字类型间强制类型转换,如确要转换,可使用条件表达式,例:
b?
1:
0。
4.5.转换的二种类型转换的二种类型1)赋值doublea=1.0fint=j;2)方法调用doubleconverValue(intvalue)returnvalue;3)数值计算转换-9.232e20+1;4.6.控制流控制流if()if().elseif().elseif().elseswitch()casevariable:
.casevariable:
.default:
注解:
switch()内数据类型为child类型byteshortchar自动转换为intcase块中不加break时顺序执行下面的语句。
4.7.循环语句循环语句for(inti=0;in;i+)while()dowhile();-加分号例子:
loop:
for(inti=0;in;i+)for(intj=0;jm;j+)if(3=j)breakloop;/-loop为标签只能用在循环语句中,循环/嵌套中用于跳到外层循环辨析:
intx,a=6,b=7;x=a+b+;/-a=7,b=8,x=13intx=6;x=x;/-6的二进制0110取反得11001再转成补码(取反加一)1011175.四四数组数组5.1.声明数组声明数组1)一组相同类型(可以是类)数据的集合;2)一个数组是一个对象;3)声明一个数组没有创建一个对象;4)数组能以下列形式声明:
inti或intiCarc或Carc*C+中只能Carc*JAVA中推荐用Carc;5.2.创建数组创建数组1)创建基本数据类型数组inti=newint2;2)创建引用数据类型数组Carc=newCar100;3)数组创建后有初始值。
数字类型为0,布尔类型为false,引用类型为null5.3.初始化数组初始化数组1)初始化、创建、和声明分开inti;i=newint2;i0=0;i1=1;2)初始化、创建、和声明在同一时间inti=0,1;Carc=newCar(),newCar();5.4.多维数组多维数组1)有效inti1=newint23;inti2=newint2;i20=newint2,i21=newint3;*C+中int=newint3;有效2)无效inti1=newint3;3)数组长度-数组的属性lengthinti=newint5;intlen=i.length;/len=5;Studentst=newStudent46;len=st.length;/len=4;len=st0.length;/len=6;请问以下哪段代码哪个可正确执行?
(a,c)1.achari=a,b;i=newcharb,c;bchari=a,b;i=b,c;cchari=newchar2;i=newcharb,c;dchari=newchar2;i=b,c;5.5.数组拷贝数组拷贝System.arrayCopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength);拷贝一个数组到另一个数组。
6.五五对象和类对象和类6.1.面向对象与面向过程面向对象与面向过程面向对象:
EverythingisanObject为什么面向对象?
符合我们看待客观世界的思维方式各司其职各尽所能可重用性可移植性可插入性可扩展性弱耦合性面向过程:
先有算法,后有数据结构面向对象:
先有数据结构,后有算法定义类定义属性:
实例变量定义方法:
声明实现Overload:
方法名相同,参数表不同编译器根据参数,选择一个方法,允许自动类型提升,就近匹配原则定义构造方法:
1.分配空间2.初始化属性3.调用某一个构造方法ClassNamecn=newClassName();对象变量:
引用、句柄存储的是对象的地址(栈空间)参数传递:
简单类型参数:
值传递对象类型参数:
地址传递this:
当前对象调用本类其他的构造方法,必须放在构造方法的第一行封装:
该隐藏的隐藏,该公开的公开属性:
隐藏private方法:
该公开的公开public方法声明:
可以公开方法实现:
不可以公开实现细节的改变对架构的影响最小化6.2.对象的概念对象的概念什么是对象:
EVERYTHINGISOBJECT(万物皆对象)所有的事物都有两个方面:
1有什么(属性):
用来描述对象。
2能够做什么(方法):
告诉外界对象有那些功能。
后者以前者为基础。
*一个对象的属性也可以是一个的对象。
这是一种对象的关联(associate)publicclassStudentprivateStringname;-对象privateintage;-基本类型privategender;publicvoidstudy()-方法6.3.成员变量和局部变量成员变量和局部变量1实例变量:
定义在类中但在任何方法之外。
(New出来的均有初值)实例变量中对象默认值为null。
实例变量的作用域在本类中完全有效,当被其他的类调用的时候也可能有效。
2局部变量:
定义在方法之中的变量。
局部变量要先赋值,再进行运算,而实例变量均已经赋初值。
这是局部变量和实例变量的一大区别。
局部变量不允许范围内定义两个同名变量。
实例变量和局部变量允许命名冲突,但在局部变量的作用域内局部变量优先,访问实例变量是使用this.variableName。
对于引用型类型变量Carcart=newCar();变量cart存在在栈中,而cart对象实际存在在堆中。
如果没有引用NewCart();垃圾回收会很快回收这个匿名对象。
简单的垃圾收集器原理每个对象都包含了一个引用计数器,GarbageCollection运行时检查对象的这个计数器,垃圾收集器会在整个对象列表中移动巡视,一旦它发现其中一个引用计数成为0,就释放它占据的存储空间。
6.4.成员方法成员方法方法定义1)格式(argument_list)throws例如:
publicStringgetName()returnname;2)当没有返回值时,返回类型必须被定义为void。
3)构造方法没有返回类型。
4)返回类型必须与方法相邻,其他修饰符号可以调换位置。
参数传递Java语言总是使用传值调用。
这意味着方法得到的只是所有参数值的拷贝。
因此,方法不能修改传递给它的任何参数变量的内容。
对于对象类型的参数传递的也是该对象的引用值,方法中并不能改变对象变量,但能通过该变量调用对象的方法或修改对象的成员。
*方法与函数的区别,方法的内容是和对象的属性紧密相连的,函数只为了解决一个功能。
6.5.This关键字关键字1)this是个隐式参数,代表被构造的对象;publieclassPersonprivateStringname;publicvoidsetName(Stringname)this.name=name;-this.name为成员变量2)如果构造器的第一个语句具有形式this(.),那么这个构造器将调用同一类中的其他构造器。
3)在构造器中this()必须放在方法的第一行。
*Super关键字也是个隐形参数,代表被构造对象的父类。
同样也必须在构造方法的第一行6.6.访问控制符访问控制符权限高public全部可见protected本类可见,同包可见,子类可见default本类可见,同包可见private本类可见权限低6.7.构造方法构造方法构造方法是在生成对象的过程中调用的方法,但构造方法并不能创建对象。
其特点为:
1构造方法没有返回值。
2构造方法的方法名与类名相同。
格式为:
publicClassName()构造方法也可以是其他的限制符privateprotecteddefaultprivate一般用在singleton模式中。
在一个对象的生成周期中构造方法只用一次,一旦这个对象生成,那么这个构造方法失效。
*接口不能创建实例,因为没有构造方法可以构造多个构造方法,但多个构造方法的参数表一定不同,参数顺序不同即属于不同的构造方法:
-构造方法的重载publicstudent(stringname,inta)publicstudent(inta,stringname)为两个不同的构造方法。
如果我们未给系统提供一个构造方法,那么系统会自动提供一个为空的构造方法。
如果我们提供了有参的构造方法,那么系统不会再提供无参的构造方法了。
这样当被子类继承时,如果子类构造方法不人为调用父类的有参构造方法就会出现异常。
6.8.数据和方法的隐藏数据和方法的隐藏封装封装publicclassPersonprivateStringname;-数据的隐藏privateintage;publicStringgetName()-方法尽量公开returnname;publicintgetAge()returnage;有些方法也需要隐藏起来,比如:
ClassSingletonPrivateSingleton()PublicstaticSingletongetInstance().If(.)Singleton=newSingleton();/对生产对象的条件进行限制Returnsingleton;6.9.方法的重载方法的重载Overloading在一个类中可以定义多个同名方法,各个方法的参数表一定不同。
但修饰词可能相同,返回值也可能相同。
在程序的编译过程中根据变量类型来找相应的方法。
Overloading被认为是编译时的多态。
Overloading只是为方便程序员编程的解决方法,编译之后的方法名实际加上了各参数类型成为唯一的名字。
普通方法publicvoidaa(inta,doubleb)throwsIOExceptionprivateintaa(doublea,intb)protecteddoubleaa(Stringa,Stringb)构造方法也可以实现overloading。
例:
publicvoidteach();publicvoidteach(inta);publicvoidteach(Stringa)为三种不同的方法。
Overloading方法对于不匹配的参数是从低向高转换的。
Byteshortfloatintlongdouble。
System.out.println(“%5.2f,%10.3f”,num,num2);按格式输入7.六六高级语言特性高级语言特性7.1.封装封装(encapsulation)1事物的内部实现细节隐藏起来2对外提供一致的公共的接口间接访问隐藏数据3可维护性7.2.继承继承(inherit)7.2.1.JAVA继承特点继承特点继承:
父类的成员能否继承到子类?
子类能否访问到父类的成员private:
本类内部可以访问不能继承到子类(default):
本类内部可以访问,同包其他类也可以访问;能否继承到子类?
不一定protected:
本类内部可以访问,不同包的子类也可以访问,同包其他类也可以访问能继承到子类public:
任何地方都可以访问能继承到子类从严到宽覆盖:
方法名:
相同参数表:
相同访问限制符:
相同或者更宽返回值类型:
相同或者子类返回的类型是父类返回的类型的子类对象的构造过程:
1.递归的构造父类对象2.分配空间3.初始化属性4.调用本类的某一个构造方法super:
调用父类的某一个构造方法父类对象多态:
1.对象不变2.只能对对象调用编译时类型中定义的方法3.运行时,根据对象的运行时类型,找覆盖过的方法来调用(运行时动态类型判定)强制类型转换instanceof屏蔽子类差异,利用父类共性做出通用编程属性的遮
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CoreJava 笔记