基础知识部分总结Word格式.docx

上传人:b****8 文档编号:22562880 上传时间:2023-02-04 格式:DOCX 页数:12 大小:20.56KB
下载 相关 举报
基础知识部分总结Word格式.docx_第1页
第1页 / 共12页
基础知识部分总结Word格式.docx_第2页
第2页 / 共12页
基础知识部分总结Word格式.docx_第3页
第3页 / 共12页
基础知识部分总结Word格式.docx_第4页
第4页 / 共12页
基础知识部分总结Word格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基础知识部分总结Word格式.docx

《基础知识部分总结Word格式.docx》由会员分享,可在线阅读,更多相关《基础知识部分总结Word格式.docx(12页珍藏版)》请在冰豆网上搜索。

基础知识部分总结Word格式.docx

2、如果一个java源文件中没有public类,那么每个类的名字没特殊规则,即不必与文件同名。

3、在编译后产生的class文件中,仍旧是多个单独分开的class文件。

3、import关键字

1、import语句必须定义在所有的class定义之前。

2、import语句只是为编译器指明了一个路径,并不像C或C++中的#include,所以用import.*并不影响性能

4、Java中的几个特殊关键字

Java中的关键字许多大家都比较熟悉,而有几个就不是很常用,如:

1、goto和const是保留关键字,在java中没使用

2、strictfp和volatile不常用;

sizeof、zhen不是关键字。

3、true,false,null不是严格意义上的关键字,而是literals。

5、java方法中的传递值参

在Java方法中传递参数,对于基本类型来讲传递的是值参数,相当于建立的一个参数的拷贝,不影响原来变量的值。

在引用方法中可以改变传递对象的内容,但对象引用(像A@5d87b2)从来不会改变。

publicclasstt{ 

publicstaticvoidmain(Stringargs[]){

Aaa=newA();

aa.num=5;

ttt=newtt();

System.out.println("

11aa="

+aa+"

num="

+aa.num);

t.test(aa);

22aa="

voidtest(Aa){

Aab=newA();

a=ab;

33ab="

+ab+"

+ab.num);

classA{ 

intnum;

}

6、变量初始化

java中的变量在使用之前必须被初始化,当创建一个对象的时候一些类的变量会自动初始化并赋予缺省值。

数字类赋值0;

char类型赋值'

\u0000'

;

boolean类型赋值false;

引用对象赋值null;

注意的是在方法之外的类变量的值是自动赋初始值,而方法内的局部变量必须手工初始化。

classAA{ 

voidtest(){

intj;

j=5;

//没有这一行则编译不会通过。

j=j+num;

7、switch语句

这个点经常在求职笔试题目中出现。

default放在最上边编译没问题;

碰到符合分支的,如果没有break会一直向下运行。

publicstaticvoidmain(Stringargs[]){ 

t.test

(2);

//可改变成3运行一下看一下结果 

voidtest(inti){

switch(i){

default:

default"

);

case1:

111"

break;

case2:

222"

8、关于java中的label使用

·

break[label]

continue[lbele]

lable:

statement;

//这里的statement必须是一个loop循环

t.test();

voidtest(){ 

0000"

lb1:

for(inti=0;

i<

10;

i++){

lb2:

for(intj=0;

j<

2;

j++){

if(i==2)continuelb1;

i="

+i+"

j="

+j);

111111"

9、类型转换校正

classEmployee

|

classManager

向上校正,总是允许的,Manager直接使用父类Employee的方法。

向下校正,必须用instanceof检验,才能将一个Employee转换为Manager对象。

publicvoidtest(Employeee){

if(einstanceofManager){

Managerm=(Mnager)e;

...

10、方法重载(overloading)、方法覆盖(overriding)

方法重载(overloading)一定要求名字相同,参数不同,返回类型可以相同也可以不同

voidtest(inti){ 

classAAextendsA{

inttest(inti,intj){

return5;

注:

方法覆盖(overriding)要求名字,参数,返回类型全部必须相同,访问控制符可以不同,但必须大过父类的。

因为如果名字和参数都已经相同了则一定要求返回类型相同,否则认为这是一个新的方法了,名字就必须不同了。

publicvoidtest(inti){//若是换成private则编译不通过。

关于覆盖方法抛出异常的问题。

如A是父类,B是继承A的子类。

B中的方法meth()去覆盖父类A的此方法时,B中不能throws出新的异常,只能是父类抛出的异常或其子集。

更甚至可以不抛出异常。

11、关于类的构造器重载问题

classA{

publicA(inti){

publicAA(){

inti=5;

//这里出错,没有父构造器 

由于父类A自定义了构造器,所以缺省的构造器就丢失了,当子类的构造器自动试图调用父类没参数的构造器时却没有,所以会编译出错。

12、关于static关键字总结:

1、不能在static修饰的方法中引用this变量,只能引用一些静态变量或方法,或new新的对象(可以定义局部变量)。

简言之,静态方法或块中,只能引用静态的方法或变量。

2、类中的成员变量(static修饰)有缺省值,而类的定义的方法中的局部变量没有缺省值。

3、在类的构造器中,可以引用任何的静态或非静态的变量和方法,可以在非static方法中调用static方法。

4、static{}块中的代码在类装载中仅执行一次。

5、在7-7,Astaticmethodcannotbeoverriddenbutcanbehidden.不理解。

6、不能在无论非static方法中或static方法中定义static变量。

13、关于final关键字

1、不能继承final修饰的类,不能覆盖final修饰的方法。

2、final修饰的变量,若没赋值,必须在构造器中赋初始值。

finalintj;

publicA(){ 

j=9;

//若没有此行,则编译不通过。

3、final类型的方法参数可定义,但不能改变。

voidm(finalinti){//这一行的声明i为一个final没问题。

i++;

//但在这里面,i的值不能再被改变。

14、Interface接口关键字

1、接口中的变量

1、必须初始化其值。

2、默认修饰符为public+static+final,其他的修饰符不允许。

2、接口中的方法

1、默认为public+abstract

2、其它修饰符static,private,protected,final,synchronized,native均不能有。

interfaceA{

voids();

classAAimplementsA{

voids(){//编译器在这里提示由于接口中的方法s()修饰符默认是public,

//而这里的s()默认是protected,小于public所以不允许。

15、abstract抽象关键字

abstractclassA{

privateinti;

privatevoidm();

{}

抽象类中可以有私有的变量和私有属性,而接口就不行(原因如上),

这是因为java是按实例虚拟调用的,在生成某一个具体的对象可以有私有的属性或方法的。

privatevoidm(){};

publicabstractvoidn();

//若是private则编译不通过。

抽象类中的抽象方法是让其他类继承的,如果本身都是私有的,就没有什么意义了

16、集合类型

以有无顺序,允许不允许重复区分

Collections:

一组对象,无序集合,允许重复

Set:

无序集合,不允许重复

List:

有序集合,允许重复

注意:

在JDK1.1中定义的集合类型,都是线程安全的,所以都是“重量级”的。

像HashTable,Vector

而在java2中定义的一些新的集合类型如HashMap,ArrayList不是线程安全的,是“轻量级”的,但速度快,性能好。

这一点在许多公司面试试题都见过。

17、布局管理器

FlowLayout,BorderLayout,GridLayout,CardLayout

关于Panel和Frame默认的Layout常在一些公司的面试试题中出现。

1、Panel和Applet类默认的布局管理器是FlowLayout一个一个的加上去

2、Frame和window类默认的布局管理器是BorderLayout按东南西北加入

3、xyLayout是Borland公司开发的布局管理器。

18、面试试题中Applet部分

1、使用代码

<

appletcode="

a.class"

width=100height=200>

paramname=avlaue"

11"

>

/applet>

2、可以覆盖的方法init(),start(),stop(),destory(),paint(g)

19、面试试题中线程部分

1、基本实现方式两中,继承Thread类和实现Runnable接口

2、必须实现父类或接口中的run()方法。

3、有关线程方法,start()启动线程。

join()指在调用这个线程的方法或进程中,必须等待此线程运行结束才能继续其他进程。

4、线程中的同步synchronized,注意死锁。

20、对象串行化

1、仅仅对象类型的数据可以串行化。

2、标记为transient的数据不可以串行化。

存储一个对象到某种永久性存储叫persistence,如存储到磁盘、磁带或别的机器的内存中。

java.io.Serializable接口没有定义方法要实现,仅仅是一个标记暗示实现了这个接口的类可以被考虑串行化。

没有实现这个接口的对象不能保存或存储它们的状态。

当一个对象被串行化的时候,仅仅数据被保留,而方法和构造器不是串行化的部分。

一些对象类是不能串行化的因为他们代表的数据是经常变化的。

如java.io.FileInputSream和java.langThread。

如果串行化的对象包含了不可串行化的对象,整个串行化动作会失败,并抛出NotSerializableException。

21、java中的网络通讯

一般的TCP/IP网络数据通信主要可分2种,TCP和UDP

TCP:

TCP是面向连接的通信协议,就像打电话,先要拨通建立连接,传送的数据不会丢失。

java提供了ServerSocket和socket类。

在server端,建立一个serverSocket,并指定端口,并侦听连接。

服务器端代码 

ServerSocketsc=newServerSocket(1111);

Socketsocket1=sc.accept();

DataInputStreams_in=newDataInputStream(socket1.getInputStream());

客户端代码 

Socketsocket2=newSocket("

192.168.1.1"

1111);

UDP:

UDP非面向连接,就像写信,将传输的数据包成一个分组,可能有数据丢失

服务器端代码

DatagramSocketserver=newDatagramSocket(1234);

DatagramPacketin_packet=newDatagramPacket(in_buf,2000);

server.recieve(in_packet);

客户端代码

DatagramSocketclient=newDatagramSocket(1235);

DatagramPacketout_packet= 

newDatagramPacket(out_buf,100,"

1234);

client.send(outPacket);

22、String对象

一般讲来创建的两个对象如果用==来比较肯定是不等的,因为他们的引用地址是不同的,而==是对于对象来讲是比较对象地址的。

但对于String对象来讲是一个例外,两个String对象如果值相同,==比较也是相同的。

我想这可能与Sun公司对String对象定义有关。

Strings1="

123"

Strings2="

if(s1==s2) 

else

2222222"

结果输出:

111111

s

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

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

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

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