马士兵java自学笔记Word格式.docx
- 文档编号:21904796
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:13
- 大小:71.20KB
马士兵java自学笔记Word格式.docx
《马士兵java自学笔记Word格式.docx》由会员分享,可在线阅读,更多相关《马士兵java自学笔记Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
数据类型按容量大小排序为:
Byte,short,char->
int->
long->
float->
double
Byte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型
2.容量大的暑假类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;
使用时要格外注意。
3.有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。
++(--):
在前时先运算再取值;
在后时先取值再运算。
当“=”两侧数据类型不一致时,可以使用默认类型转换或使用强制类型转换原则进行处理,可以将整型常量赋值给byte,short,char等类型变量,而不需要进行强制类型转载,只要不超出其表数范围。
字符串连接符:
1.“+”除用于算术加法运算外,还可用于对字符串进行连接操作;
2.“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串,然后再进行连接;
3.当进行打印时,无论任何类型,都自动转为字符串进行打印。
Break语句用于终止某个语句块的执行,用在循环语句体中,可以强行退出循环;
Continue语句用在循环语句体中,用于终止某次循环过程,跳过循环体中continue语句下面未执行的循环,开始下一次循环过程;
Java中switch语句只能探测int类型值。
Java语言中使用下述形式调用方法:
对象名.方法名(实参列表)
Java中进行函数调用中传递参数时,遵循值传递的原则:
基本类型传递的是该数据值本身,引用类型传递的是对对象的引用,而不是对象本身。
类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
构造函数与类同名且没有返回值。
构造函数是定义在Java类中的一个用来初始化对象的函数。
创建对象时,使用构造函数初始化对象的成员变量。
方法的重载:
指一个类中可以定义有相同的名字,但参数不同的多个方法。
调用时,会根据不同的参数表选择对应的方法。
this关键字:
1.在类的方法定义中使用的this关键字代表使用该方法的对象的引用;
2.当必须指出当前使用方法的对象是谁时要使用this;
3.有事使用this可以处理方法中成员变量和参数重名的情况;
4.this可以看作是一个变量,它的值是当前对象的引用。
Static关键字:
1.在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份;
2.用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所有在static方法中不可以访问非static的成员。
静态方法不再是针对于某个对象调用,所以不能访问非静态成员。
3.可以通过对象引用或类名(不需要实例化)访问静态成员。
Java只支持单继承,不允许多继承:
一个子类只能有一个基类,一个基类可以派生出多个子类来。
对于classd的权限修饰只可以用public和default。
1.public类可以在任意地方被访问;
2.default类只可以被同一个包内部的类访问。
方法的重写:
1.在子类中可以根据需要对从基类中继承来的方法进行重写;
2.重写方法必须和被重写方法具有相同方法名称,参数列表和返回类型;
3.重写方法不能使用比被重写方法更严格的访问权限。
继承中的构造方法:
1.子类的构造的过程中必须调用其基类的构造方法;
2.子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法;
使用this(argument_list)调用本类的另外的构造方法;
如果调用super,必须写在子类构造方法的第一行;
3.如果子类的构造方法中没有显示的调用基类构造方法,则系统默认调用基类无参数的构造方法。
4.如果子类的构造方法中既没有显式调用基类构造方法,而基类中又又没有无参的构造方法,则编译出错。
Object类是所有Java类的根基类;
Object类中定义有publicStringtoString()方法,其返回值是String类型,描述当前对象的有关信息;
在进行String与其他类型数据的连接操作时,将自动调用该对象类的toString()方法;
Object类中定义有publicStringequals(Objectobj)方法,提供定义对象是否“相等”的逻辑,Object的equals方法定义为:
x.equals(y)当x和y是同一个对象的应用时返回true否则返回false;
对象转型(casting):
1.一个基类的引用类型变量可以“指向”其子类的对象;
2.一个基类的引用不可以访问其子类对象新增加的成员(属性和方法);
3.可以使用引用变量instanceof类名来判断该引用类型所“指向”的对象是否属于该类或该类的子类;
4.子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之成为向下转型(downcasting).
多态:
1.要有继承;
2.要有重写;
3.父类引用指向子类对象。
抽象类:
1.用abstract关键字来修饰一个类时,这个类叫做抽象类;
用abstract来修饰一个方法时,该方法叫做抽象方法;
2.含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写;
3.抽象类不能被实例化;
4.抽象方法只需声明,而不需实现。
final关键字:
1.final的变量的值不能够被改变;
2.final的方法不能够被重写;
3.final的类不能够被继承。
接口:
1.接口(interface)是抽象方法和常量值的定义的集合;
2.从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现;
3.接口特性:
(1)多个无关的类可以实现同一个接口;
(2)一个类可以实现多个无关的接口;
(3)与继承关系相似,接口与实现类之间存在多态性;
(4)接口声明属性默认为publicstaticfinal的;
也只能是publicstaticfinal的;
(5)接口中只能定义抽象方法,而且这些方法默认为public的,也只能是public的;
(6)接口可以继承其他的接口,病添加新的属性和抽象方法。
异常:
1.Java程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给Java运行时系统,这个过程成为抛出(throw)异常;
2.当Java运行时系统接受到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程成为捕获(catch)异常。
3.try代码段包含可能产生例外的代码;
try代码段后跟有一个或多个catch代码段;
每个catch代码段声明其能处理的一种特定类型的异常并提供处理的方法;
当异常发生时,程序会终止当前的流程,根据获取异常的类型去执行相应的catch代码段;
finally段的代码无论是否发生异常都有执行;
4.异常的分类:
(1)Error:
成为错误,有Java虚拟机生成并抛出,包括动态链接失败,虚拟机错误等,程序对其不做处理;
(2)Exception:
所有异常类的父类,其子类对应了各种各样可能出现的异常事件,一般需要用户显式的声明或捕获;
(3)RuntimeException:
一类特殊的异常,如被0除,数组下标超范围等,其产生比较频繁,处理麻烦,如果显式的声明或捕获将会对程序的可读性和运行效率影响很大。
因此有系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)。
5.try语句:
(1)try{…}语句指定了一段代码,该段代码就是一次捕获并处理例外的范围;
(2)在执行过程中,该段代码可能会产生并抛出一种或几种类型的异常对象,它后面的catch语句要分别对这些异常做相应的处理;
(3)如果没有例外产生,所有的catch代码段都被略过不执行。
6.catch语句:
(1)在catch语句块中是对异常进行处理的代码,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象;
(2)在catch中声明的异常对象(catch(SomeExceptione))封装了异常事件发生的信息,在catch语句块中可以使用这个对象的一些方法获取这些信息,如:
a)getMessage()方法,用来得到有关异常事件的信息;
b)printStackTrace()方法,用来跟踪异常事件发生时执行堆栈的内容。
7.finally语句:
(1)finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其它部分以前,能够对程序的状态作统一的管理;
(2)无论try所指定的程序块中是否抛出例外,finally所指定的代码都要被执行;
(3)通常在finally语句中可以进行资源的清楚工作如:
关闭打开的文件,删除临时文件…
8.自定义异常的使用步骤:
(1)通过继承java.lang.Exception类声明自己的异常类;
(2)在方法适当的位置生成自定义异常的实例,并用throw语句抛出;
(3)在方法的声明部分用throws语句声明该方法可能抛出的异常。
重写方法需要抛出与原方法所抛出异常类型一致异常或不抛出异常!
数组:
1.数组可以看成是多个相同类型数据组合,对这些数据的统一管理;
2.数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量;
3.数组中的元素可以是任何数据类型,包括基本类型和引用类型;
4.Java语言中声明数组时不能指定其长度(数组中元素的个数);
5.Java中使用关键字new创建数组对象,格式为:
数组名=new数组元素的类型[数组元素的个数]
6.元素为引用数据类型的数组中的每一个元素都需要实例化;
7.数组的初始化:
(1)动态初始化:
数组定义与为数组元素分配空间和赋值的操作分开进行;
(2)静态初始化:
在定义数组的同时就为数组元素分配空间并赋值;
(3)数组元素的默认初始化:
数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化;
8.数组元素的引用:
(1)定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;
(2)每个数组都有一个属性length指明它的长度,如a.length的值为数组a的长度(元素个数);
9.二维数组:
(1)二维数组可以看成以数组为元素的数组;
(2)Java中多位数组的声明和初始化应按从高维到低维的顺序进行;
10.数组的拷贝:
(1)使用java.lang.System类的静态方法publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength);
(2)可以用于数组src从第srcPos项元素开始的length个元素拷贝到目标数组从destPos项开始的length个位置;
(3)如果源数据数目超过目标数组边界会抛出IndexOutOfBoundsException异常。
String类:
1.java.lang.String类代表不可变的字符序列;
2.String类的常见构造方法:
(1)String(Stringoriginal):
创建一个String对象为original的拷贝;
(2)String(char[]value):
用一个字符数组创建一个String对象;
(3)String(char[]value,intoffset,intcount):
用一个字符数组从offset项开始的count个字符序列创建一个String对象;
3.String类常用方法:
静态重载方法:
publicstaticStringvalueOf(…)可以将基本类型数据转换为字符串;
方法publicString[]split(Stringregex)可以将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组;
StringBuffer类:
1.java.lang.StringBuffer代表可变的字符序列;
2.StringBuffer和String类似,但StringBuffer可以对其字符串进行改变;
3.StringBuffer类的常见构造方法:
(1)StringBuffer():
创建一个不包含字符序列的“空”的StringBuffer对象;
(2)StringBuffer(Stringstr):
创建一个StringBuffer对象,包含与String对象str相同的字符序列;
4.StringBuffer常用方法:
基本数据类型包装类:
1.包装类(如:
Interger,Double等)这些类封装了一个相应的基本数据类型数值,并为其提供了一系列操作;
2.以java.lang.Interger类为例:
构造方法:
(1)Integer(intvalue)
(2)Integer(Strings)
3.包装类常见方法:
Math类:
java.lang.Math提供了一系列静态方法用于科学计算;
其方法的参数和返回值类型一般为double型:
File类:
1.java.io.File类代表系统文件名(路径和文件名);
2.File类的常见构造方法:
(1)publicFile(Stringpathname):
以pathname为路径创建File对象,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储;
(2)publicFile(Stringparent,Stringchild):
以parent为父路径,child为子路径创建File对象;
3.File的静态属性Stringseparator存储了当前系统的路径分隔符;
4.File类常用方法:
枚举类型:
1.只能够取特定值中的一个;
2.使用enum关键字;
3.是java.lang.Enum类型
用GUI设计完成1+1=2;
importjava.awt.*;
importjava.awt.event.*;
publicclassTFMath{
publicstaticvoidmain(String[]args){
newTFFrame().launchFrame();
}
}
classTFFrameextendsFrame{
TextFieldnum1,num2,num3;
publicvoidlaunchFrame(){
num1=newTextField(10);
num2=newTextField(10);
num3=newTextField(15);
LabellblPlus=newLabel("
+"
);
ButtonbtnEqual=newButton("
="
btnEqual.addActionListener(newMyMonitor());
setLayout(newFlowLayout());
add(num1);
add(lblPlus);
add(num2);
add(btnEqual);
add(num3);
pack();
setVisible(true);
privateclassMyMonitorimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
intn1=Integer.parseInt(num1.getText());
intn2=Integer.parseInt(num2.getText());
num3.setText("
"
+(n1+n2));
}
C/S监听和信息的发送
import.*;
importjava.io.*;
publicclassTCPServer{
publicstaticvoidmain(String[]args)throwsException{
ServerSocketss=newServerSocket(6666);
while(true){
Sockets=ss.accept();
System.out.println("
aclientconnect!
DataInputStreamdis=newDataInputStream(s.getInputStream());
System.out.println(dis.readUTF());
dis.close();
s.close();
publicclassTCPClient{
Sockets=newSocket("
127.0.0.1"
6666);
OutputStreamos=s.getOutputStream();
DataOutputStreamdos=newDataOutputStream(os);
Thread.sleep(30000);
dos.writeUTF("
helloserver!
dos.flush();
dos.close();
s.close();
线程调用,实现程序的交叉调用
publicclassTestThread1{
publicstaticvoidmain(Stringargs[]){
Runner1r=newRunner1();
r.start();
for(inti=0;
i<
100;
i++){
MainThread:
------"
+i);
classRunner1extendsThread{
publicvoidrun(){
i++){
Runner1:
监听器实现了什么接口(ActionListener),实现了什么方法(publicvoidactionPerformed(ActionEvente)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 士兵 java 自学 笔记