Java自学笔记.docx

上传人:b****5 文档编号:8635619 上传时间:2023-02-01 格式:DOCX 页数:36 大小:128.67KB
下载 相关 举报
Java自学笔记.docx_第1页
第1页 / 共36页
Java自学笔记.docx_第2页
第2页 / 共36页
Java自学笔记.docx_第3页
第3页 / 共36页
Java自学笔记.docx_第4页
第4页 / 共36页
Java自学笔记.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

Java自学笔记.docx

《Java自学笔记.docx》由会员分享,可在线阅读,更多相关《Java自学笔记.docx(36页珍藏版)》请在冰豆网上搜索。

Java自学笔记.docx

Java自学笔记

Byte2B

Short2B

Int4B

Long8B

Char2B

Float4B

Double8B

Booleantruefalse

If(true)division

Intnum=newint[3](数组的定义,须定义时附初值)

转义符:

\b退格\t水平制表符Tab

\n换行\f表格符

\r回车\'、\""、\\

0开头的为八进制,0x开头为16进制,其余为十进制,所有Java编程语言中的整数类型都是带符号的数字。

Java字节码的两种执行方式

1、即时编译方式:

解释器先将字节码编译成机器码,然后再执行该机器码。

2、解释执行方式:

解释器通过每次解释并执行一小段代码来完成Java字节码程序的所有操作。

通常采用的是第二种方法。

由于JVM规格描述具有足够的灵活性,这使得将字节码翻译为机器代码的工作具有较高的效率。

对于那些对运行速度要求较高的应用程序,解释器可将Java字节码即时编译为机器码,从而很好地保证了Java代码的可移植性和高性能。

原码:

将最高位作为符号位(以0代表正,1代表负),其余各位代表数值本身的绝对值(以二进制表示)。

反码:

一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,其余各位是对原码取反。

补码:

一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,则符号位为1,其余各位是对原码取反,然后整个数加1。

~位求反,^按位异或。

右移运算符对应的表达式为x>>a,运算的结果是操作数x被2的a次方来除,左移运算符对应的表达式为x<

>>>表示不带符号右移,负数的右移,左边空出来的补1。

三目运算符(?

)相当于条件运算符,表达式x?

y:

z(max=(a>b)?

a:

b)用于判断x是否为真,如果为真表达式的值为y,否则为z。

OOP面向对象的编程,它是先确定数据结构,在确定运算,而面向过程的是先确定算法,在确定数据结构。

现实生活中具有共同特性的对象的抽象就称之为类,类由类声明和类体构成,类体又由变量和方法构成。

Static:

静态的方法和静态的变量只属于某一个类,不属于类的对象;非静态的方法是只属于对象。

静态的方法和静态的变量的引用直接通过类名引用,静态的方法中不能调用非静态的方法和引用非静态的成员变量。

反之,则可以,可以用类的方法obj去调用静态的方法。

常量的定义:

finaldoublePI=3.1415926,final常量可以在声明的同时赋初值,也可以在构造函数中赋初值。

为了节省内存,我们常将常量声明为静态的(static),静态的常量只能在声明时赋初值。

final标记的类不能被继承。

final标记的方法不能被子类复写。

final标记的变量(成员变量或局部变量)即为常量,只能赋值一次。

在Java中,通过关键字extends继承一个已有的类,被继承的类称为父类(超类、基类),新的类称为子类(派生类)。

在Java中,不允许多重继承。

覆盖(override)发生在子类与父类之间,可以使用super访问父类被子类隐藏的变量或覆盖的方法:

super.父类中的类名就可调用被覆盖的父类中的类了,用super调用父类中的构造方法,只能放在程序的第一行。

Vector类类似于一个数组,使用时无需声明上限,随着元素的增加,Vector的长度会自动增加。

PublicVector(intinitialCapacity,intcapacityIncrement):

创建一个初始长度为initialCapacity的Vector,当向量需要增加时,增加capacityIncrement个元素。

Vector():

创建一个原始大小为10的默认矢量。

在每次再分配中,分配的额外空间的总数由在创建矢量时指定的增量来确定。

如果没有指定增量,在每个分配周期,矢量的大小增一倍。

向量名.add(“86”),添加元素;向量名.add(1,“86”),在第二个位置处插入元素;向量名.size(),返回向量的长度;向量名.remove(0),删除第一个元素;System.out.println(向量名.get(i)+""),输出第i个元素;System.out.println(+向量名.toString()),将向量转换成字符串之后输出。

Hashtable类存储的是对象的名值对,将对象的名和它的值相关联同时存储,并可以根据对象名来提取它的值。

在Hashtable中,一个键名只能对应一个键值,然而一个键值可以对应多个键名,键名必须是唯一的。

PublicHashlable(intinitialCapacity),构建散列表;publicObjectput(Objectkey,Objectvalue)。

hashCode()方法,只要保证不同的对象有不同的散列码就可以。

各种原始数据类型与String类型之间可以通过方法相互转换,valueOf()系列的静态方法用于从其他对象转换成字符串,intf=9;stringstr;str=String.valueOf(f);'a',字符型a;"a",字符串型a。

一个点号表示当前路径,两个点号表示上一层路径,因此在设置环境变量时,通常保留当前路径,常出现点号。

floatf;f=1.3;/*错误,由于java中小数常量1.3被认为是8个字节的双精度double类型,现被赋给只有4个字节的单精度float类型,显然会丢失精度.因此改为f=1.3f;1.3f表示为单精度float型变量.*/

if

(1)//编译报错出现不兼容的数据类型,将1改为true,//java中逻辑值只有两个true和false.

int[]num;num={1,2,3};//错误的定义,应改为int[]num={1,2,3};或改为int[]num=newint[]{1,2,3};

值得一提的是,使用浮点型数值时,默认的类型是double,在数值后面可加上D或是d,作为double类型的标识。

在Java中,D或d是可有可无的。

在数据后面加上

F或是f,则作为float类型的识别。

若是没有加上,Java就会将该数据视为double类型,而在编译时就会发生错误,错误提示会告诉设计者可能会失去精确度。

a+(-、*、/)=b:

a=a+b

数据类型的转换可分为下列两种:

“自动类型转换”与“强制类型转换”。

当Java发现程序的表达式中有类型不相符的情况时,会依据下列的规则来处理类型的转换。

1、占用字节较少的类型转换成占用字节较多的类型。

2、字符类型会转换成int类型。

3、int类型会转换成float类型。

4、表达式中若某个操作数的类型为double,则另一个操作数字也会转换成double类型。

5、布尔类型不能转换成其它类型

break语句可以强迫程序跳离循环,当程序执行到break语句时,即会离开循环,继续执行循环外的下一个语句。

continue语句可以强迫程序跳到循环的起始处,当程序运行到continue语句时,即会停止运行剩余的循环主体,而是回到循环的开始处继续运行。

Unicode,它为每个字符制订了一个唯一的数值,如此在任何的语言、平台、程序都可以安心地使用。

System.arraycopy(source(数组名),0,dest,0,x):

语句的意思就是:

复制源数组从下标0开始的x个元素到目标数组,从目标数组的下标0所对应的位置开始存取。

instanceof的语法格式为:

对象instanceof类(或接口)(AinstanceofB):

判断A是否是B的实例,也可以用它来判断一个类是否实现了某个接口,如果是返回true,否则返回false。

Arrays.sort(数组名)为数组排序的操作,但这个方法在java.util这个包里面,所以在用到的时候需要先将它导入。

Java允许二维数组中每行的元素个数均不相同,这点与一般的程序语言是不同的。

在二维数组中,若是想取得整个数组的行数,或者是某行元素的个数时,可利用“.length”来获取,其语法如下:

(数组名.length//取得数组的行数数组名[行的索引].length//取得特定行元素的个数)

方法可以简化程序的结构,也可以节省编写相同程序代码的时间,达到程序模块化的目的。

一个对象由一组属性和一组对属性进行操作的方法构成。

将具有相同属性及相同行为的一组对象称为类,类是一个独立的单位,它有一个类名,其内部包括成员变量,用于描述对象的属性;还包括类的成员方法,用于描述对象的行为。

面向对象的程序设计有三个主要特征,如下:

封装性(private)、继承性、多态性。

多态是面向对象程序设计的又一个重要特征,多态是允许程序中出现重名现象,Java语言中含有方法重载与成员覆盖两种形式的多态。

方法重载:

在一个类中,允许多个方法使用同一个名字,但方法的参数不同,完成的功能也不同。

成员覆盖:

子类与父类允许具有相同的变量名称,但数据类型不同,允许具有相同的方法名称,但完成的功能不同。

多态的特性使程序的抽象程度和简捷程度更高,有助于程序设计人员对程序的分组协同开发。

类是对某一类事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的个体,因而也称实例(Instance)。

韩红彩1169684066韩宏伟630876987

李才周250684253王家福314198337

徐平1196484775马含玉810985061

如果在类中声明了一static类型的属性,则此属性既可以在非static类型的方法中使用,也可以在static类型的方法中使用。

但用static类型的属性调用非static类型的属性时,则会出现错误。

在用/**开头后,第一行,或者头几行是类、变量或方法的主要描述。

其后,可以包括一个或多个不同的@标记。

每个@标记必须在一个新行的开头,或者跟随一个星号(*)之后,同类型的多个标记应该组合在一起。

在java中只允许单继承,而不允许多重继承,也就是说一个子类只能有一个父类,但是java中却允许多层继承。

子类在继承父类时,会继承父类中的全部的属性与方法。

当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法复写了父类中的方法。

同理,如果子类中重复定义了父类中已有的属性,则称此子类中的属性复写了父类中的属性。

this表示当前对象,而所谓的当前对象就是指调用类中方法或属性的那个对象。

在类中的所有方法里,只有构造方法是被优先调用的,所以使用this调用构造方法必须也只能放在构造方法的第一行。

this:

1、表示当前对象;2、调用本类中的方法或属性3、调用本类中的构造方法时,放在程序首行

super:

1、子类调用父类的方法或属性;2、调用父类中构造方法时,放在程序首行。

用super或this调用构造方法时都需要放在首行,所以,super与this调用构造方法的操作是不能同时出现的。

抽象类定义规则:

抽象类和抽象方法都必须用abstract关键字来修饰;抽象类不能被实例化,也就是不能用new关键字去产生对象;抽象方法只需声明,而不需实现;含有抽象方法的类必须被声明为抽象类,抽象类的子类必须复写所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。

Object类是Java类层中的最高层类,是所有类的超类。

换句话说,Java中任何一个类都是它的子类。

Assign:

指定、分配

接口(interface)里的数据成员必须初始化,且数据成员均为常量(publicstaticfinal),所以声明数据成员的关键字final可省略。

接口里的方法必须全部声明为publicabstract,也就是说,接口不能像抽象类一样保有一般的方法,而必须全部是“抽象方法”,抽象方法声明的关键字abstract是可以省略的。

Implements

所有寄存器均为32位

一个类只可以继承一个父类,但却可以实现多个接口。

接口与一般类一样,均可通过扩展的技术来派生出新的接口。

原来的接口称为基本接口或父接口,派生出的接口称为派生接口或子接口。

通过这种机制,派生接口不仅可以保留父接口的成员,同时也可加入新的成员以满足实际的需要。

同样的,接口的扩展(或继承)也是通过关键字extends来实现的。

有趣的是,一个接口可以继承多个接口,也就是同时继承了多个接口的抽象方法与常量,这点与类的继承有所不同。

对象的多态性,即子类实例化对象可以转换为父类实例化对象。

(父类对象由子类实例化)

父类对象通过子类对象去实例化,实际上就是对象的向上转型。

向上转型是不需要进行强制类型转换的,但是向上转型会丢失精度。

与向上转型对应的一个概念就是“向下转型”,所谓向下转型,也就是说父类的对象可以转换为子类对象,但是需要注意的是,这时则必须要进行强制的类型转换。

Object是所有类的父类,其中的toString()和equals方法是需要被复写的。

“重载”(overloading),它是指在相同类内,定义名称相同,但参数个数或类型不同的方法,因此Java便可依据参数的个数或类型调用相应的方法。

“复写”(overriding),它是在子类当中,定义名称、参数个数与类型均与父类相同的方法,用以复写父类里的方法。

packag是在使用多个类或接口时,为了避免名称重复而采用的一种措施,使用时在类或接口的最上面一行加上package的声明就可以了。

//包的编译和运行

javac-d.Bao.java(“-d”:

表示生成目录“.”:

表示在当前目录下生成)

javademo.java.Bao

importdemo.java.a.Person改成importdemo.java.a.*,表示导入包中的所有类。

在java中有这样的规定:

导入全部类或是导入指定的类,对于程序的性能是没有影响的,所以在开发中可以直接写导入全部类会比较方便。

也可直接使用其他包中的类:

System.out.println(newdemo.java.a.Person().talk());

JDK中常见的包:

1、java.lang—包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。

在java.lang包中还有一个子包:

java.lang.reflect用于实现java类的反射机制。

2、java.awt—包含了构成抽象窗口工具集(abstractwindowtoolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。

3、javax.swing—此包用于建立图形用户界面,此包中的组件相对于java.awt包而言是轻量级组件。

4、java.applet—包含applet运行所需的一些类。

5、—包含执行与网络相关的操作的类。

6、java.io—包含能提供多种输入/输出功能的类。

7、java.util—包含一些实用工具类,如定义系统特性、与日期日历相关的函数。

8、java.sql

1、private访问控制符

private访问控制符,那么这个成员只能在这个类的内部使用。

注意:

不能在方法体内声明的变量前加private修饰符。

2、默认访问控制符

如果一个成员方法或成员变量名前没有使用任何访问控制符,就称这个成员所拥有的是默认的(default)访问控制符。

默认的访问控制成员可以被这个包中的其它类访问。

如果一个子类与其父类位于不同的包中,子类也不能访问父类中的默认访问控制成员。

3、protected访问控制符

如果一个成员方法或成员变量名前使用了protected访问控制符,那么这个成员既可以被同一个包中的其它类访问,也可以被不同包中的子类访问。

4、public访问控制符如果一个成员方法或成员变量名前使用了public访问控制符,那么这个成员可以被所有的类访问,不管访问类与被访问类是否在同一个包中。

包名中的字母一律小写,如:

demo.java;类名、接口名应当使用名词,每个单词的首字母大写,如:

TestPerson;方法名,第一个单词小写,后面每个单词的首字母大写,如:

talkMySelf;常量名中的每个字母一律大写,如:

COUNTRY。

开发者用的JDK中的包和类主要在JDK的安装目录下的jre\lib\rt.jar文件中,由于Java虚拟机会自动找到这个jar包,所以在开发中使用这个jar包的类时,无需再用classpath来指向它们的位置了。

jar文件就是JavaArchiveFile

只要在命令行中用以下命令就可以将一个包打成一个jar文件:

jar–cvfcreate.jardemo

·-c:

创建新的存档

·-v:

生成详细输出到标准输出上

·-f:

指定存档文件名

·create.jar:

是生成jar文件的名称

·demo:

要打成jar文件的包

进程是程序的一次动态执行过程,它经历了从代码加载、执行到执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到最终消亡的过程。

多进程操作系统能同时运行多个进程(程序),由于CPU具备分时机制,所以每个进程都能循环获得自己的CPU时间片。

由于CPU执行速度非常快,使得所有程序好象是在“同时”运行一样。

线程(Thread)是比进程更小的执行单位,线程是进程内部单一的一个顺序控制流。

所谓多线程是指一个进程在执行过程中可以产生多个线程,这些线程可以同时存在、同时运行,形成多条执行线索。

一个进程可能包含了多个同时执行的线程。

二者的区别:

同样作为基本的执行单元,线程是划分得比进程更小的执行单位;每个进程都有一段专用的内存区域。

与此相反,线程却共享内存单元(包括代码和数据),通过共享的内存单元来实现数据交换、实时通信与必要的同步操作。

每个Java程序都有一个缺省的主线程,对于Java应用程序,主线程是main()方法执行的线索;对于Applet程序,主线程是指挥浏览器加载并执行JavaApplet程序的线索。

要想实现多线程,必须在主线程中创建新的线程对象。

任何线程一般具有五种状态,即创建(Threadthread=newThread();)、就绪、运行、阻塞、终止。

在main()方法快结束时调用isAlive()方法,此时的状态不再固定,有可能是true有可能是false。

某个线程对象在启动(调用start()方法)之前调用了setDaemon(true)方法,这个线程就变成了后台线程。

在同一类中,使用synchronized关键字定义的若干方法,可以在多个线程之间同步,当有一个线程进入了有synchronized修饰的方法时,其它线程就不能进入同一个对象使用synchronized来修饰的所有方法,直到第一个线程执行完它所进入的synchronized修饰的方法为止。

Notify:

通知、唤醒

wait、notify、notifyAll这三个方法只能在synchronized方法中调用,同组里的wait只能被同组的notify唤醒通过控制run方法中循环条件的方式来结束一个线程的方法是推荐使用的,这也是实际中用的最多的方法。

要强制某一线程运行,可用join()方法。

join()方法会抛出InterruptedException的异常,所以编写时必须把join()方法编写在try-catch块内。

Demo(Demonstration):

示范flush:

刷新

RandomAccessFile在数据等长记录格式文件的随机(相对顺序而言)读取时有很大的优势,但该类仅限于操作文件。

newRandomAccessFile(f,"rw");//读写方式

newRandomAccessFile(f,"r");//只读方式

String.substring(intbeginIndex,intendIndex)方法可以用于取出一个字符串中的部分子字符串,但要注意的一个细节是:

子字符串中的第一个字符对应的是原字符串中的脚标为beginIndex处的字符,但最后的字符对应的是原字符串中的脚标为endIndex-1处的字符,而不是endIndex处的字符。

IO流大部分的方法操作时都进行了异常处理,这是因为所使用的方法处都用throws关键字抛出了异常,所以这里需要进行异常捕捉。

管道流主要作用是可以连接两个线程间的通信。

管道流也分为字节流(PipedInputStream、PipedOutputStream)与字符流(PipedReader、PipedWriter)两种类型,本节主要讲解PipedInputStream与PipedOutputStream。

一个PipedInputStream对象必须和一个PipedOutputStream对象进行连接而产生一个通信管道,PipedOutputStream可以向管道中写入数据,PipedInputStream可以从管道中读取PipedOutputStream写入的数据。

setclasspath=%classpath%;d:

\cn\mybole

sequence:

合并枚举(Enumeration)

字节输入流:

InputStream和OutputStream,字符输入流:

Reader和Writer,这四个类都是抽象类,使用时,都必须依靠其子类实例化。

中国大陆将每一个中文字符都用两个字节的数字来表示,原有的

ASCII码字符的编码保持不变,仍用一个字节表示,为了将一个中文字符与两个ASCII码字符相区别,中文字符的每个字节的最高位(bit)都为1,中国大陆为每一个中文字符都指定了一个对应的数字,并作为标准的编码固定了下来,这套编码规则称为GBK(国标码),后来又在GBK的基础上对更多的中文字符(包括繁体)进行了编码,新的编码系统就是GB2312,而GBK则是GB2312的子集。

Unicode编码的字符都占用两个字节的大小,也就是说全世界所有的字符个数不会超过2的16次方(65536)。

对象序列化(在某些书中也叫串行化),是指将对象转换成二进制数据流的一种实现手段,通过将对象序列化,可以方便的实现对象的传输及保存。

ObjectInputStream与ObjectOutputStream类,可以帮开发者完成保存和读取对象成员变量取值的过程,但要求读写或存储的对象必须实现了Serializable接口,但Serializable接口中没有定义任何方法,仅仅被用作一种标记,以被编译器作特殊处理。

如果不希望类中的属性被序列化,可以在声明属性之前加上transient关键字。

transient意思是临时的,即不会随类一起序列化到本地,所以当还原后,这个关键字定义的变量也就不再存在。

Applet程序能跨平台、跨操作系统、跨网络运行、代码小,易于快速地下载和发送,并且,它具有不需要修改应用程序就可增加Web页新功能的特性。

Applet程序不能单独运行,必须通过HTML调入后,方能执行以实现其功能。

Apple类中只有一

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1