java知识体系

java知识体系
java知识体系

Java知识体系

目的:为了更好的认识java体系

1、java基础知识

1.1 基础知识

1.1.1 配置环境变量

新建java_home变量(安装目录),值为:C:\Program Files\Java\jdk1.6.0_14;此值为JDK的安装位置。

新建classpath变量(类加载路径),值为:.;%java_home%\lib;%java_home%\lib\tools.jar

修改path变量(使得系统可以在任何路径下识别java命令),值为:%java_home%\bin;%java_home%\jre\bin

1.1.2 访问修饰符

Public:任何地方可以访问

Private:只有自身可以访问

Protected:同一个包和子类可以访问

默认:只有同一个包内可以访问

1.2 对象的清理

1.2.1认识Java的自动垃圾回收

垃圾回收是Java语言的一大特性,方便了编程,是以消耗性能为代价的。而垃圾在这里只无用的对象。而C++是需要程序员自己写析构函数来释放内存的,麻烦,也有可能忘记而导致内存泄露。

Java语言对内存的分配管理是通过JVM内部机制决定的。程序员可以不关心其处理。

1.2.2垃圾回收的原理和意义

Java虚拟机中有个称之为垃圾回收器的东西,实际上这个东西也许真正不存在,或者是已经集成到JVM中了,但这无关紧要,我们仍然可以称为为垃圾回收器。

垃圾回收器的作用是查找和回收(清理)无用的对象。以便让JVM更有效的使用内存。

垃圾回收器的运行时间是不确定的,由JVM决定,在运行时是间歇执行的。虽然可以通过System.gc()来强制回收垃圾,但是这个命令下达后无法保证JVM会立即响应执行,但经验表明,下达命令后,会在短期内执行你的请求。JVM通常会感到内存紧缺时候去执行垃圾回收操作。

垃圾回收过于频繁会导致性能下降,过于稀疏会导致内存紧缺。这个JVM会将其控制到最好,不用程序员担心。但有些程序在短期会吃掉大量内存,而这些恐怖的对象很快使用结束了,这时候也许有必要强制下达一条垃圾回命令,这是很有必要的,以便有更多可用的物理内存。

从上面了解到,没有用的对象就是垃圾。准确的说,当没有任何线程访问一个对象时,该对象就符合垃圾回收的条件。

对于String,存在一个字符串池,这个不属于本文讨论的范围,字符串池中的垃圾回收,算法和这里所讨论的垃圾回收完全是两码事。但是不得不说的是,字符串的胡乱拼接,往往导致性能急剧下降,尤其是在庞大的循环语句中,拼接字符串就是在让程序慢性自杀。这也是很多Java程序员容易犯的毛病。

字符串既然是池,就是为了缓冲,为了有更高的命中率,因此垃圾回收的频率也许会比JVM对象垃圾回收器要低很多。

垃圾回收器仅仅能做的是尽可能保证可用内存的使用效率,让可用内存得到高效的管理。程序员可以影响垃圾回收的执行,但不能控制。

1.2.3通过编程影响垃圾回收

虽然程序员无法控制JVM的垃圾回收机制。但是可以通过编程的手段来影响,影响的方法是,让对象符合垃圾回收条件。

分别说来有一下几种:

1、将无用对象赋值为null.

2、重新为引用变量赋值。比如:

Person p = new Person("aaa");

p = new Person("bbb");

这样,new Person("aaa")这个对象就是垃圾了——符合垃圾回收条件了。

3、让相互联系的对象称为“岛”对象

Person p1 = new Person("aaa");

Person p2 = new Person("bbb");

Person p3 = new Person("ccc");

p1=p2; p2=p3; p3=p1;

p1=null; p2=null; p3=null;

在没有对p1、p2、p3置null之前,它们之间是一种三角恋关系。分别置null,三角恋关系依然存在,但是三个变量不在使用它们了。三个Person对象就组成了一个孤

岛,最后死在堆上——被垃圾回收掉。

1.2.4强制的垃圾回收System.gc()

实际上这里的强制,是程序员的意愿、建议,什么时候执行是JVM的垃圾回收器说了算。

调用垃圾回收也不一定能保证未使用的对象一定能从内存中删除。

唯一能保证的是,当你内存在极少的情况,垃圾回收器在程序抛出OutofMemaryException之前运行一次。

1.3 集合

1.4 文件流

1.4.1输出字节流

1.4.2 输入字节流

1.4.3 输入输出字符流

1.5 网络

1.5.1 TCP和UDP的区别

TCP是面向连接的通信协议,TCP提供两台计算机之间的可靠的无差别错的数据传输。

UDP是无连接通信协议,UDP不保证可靠的数据的传输,但能够向若干个目标发送数据,接受发自若干个源的数据。

1.6 多线程

1.6.1 实现多线程

实现多线程:继承自Thread类,可以重写run()方法去覆盖去Thread中的run()方法;实现Runnable接口并实现它的run()方法。

线程的优先级代表该线程的重要程度(不是绝对的),当有多个线程同时处于可执行状态并等待获得CPU 时间时,线程调度系统根据各个线程的优先级来决定给谁分配CPU 时间,优先级高的线程有更大的机会获得CPU 时间,优先级低的线程也不是没有机会,只是机会要小一些罢了。

1.6.2 多线程方法的解释和区别

1.start()是启动一个线程。

2.join()是直到执行完(或强制执行一段时间)当前的线程后才往下执行主线程或其他的线程

3.stop()是停止当前的线程。

阻塞线程比较多

sleep() 方法:sleep() 允许指定以毫秒为单位的一段时间作为参数,它使得线程在指定的时间内进入阻塞状态,不能得到CPU 时间,指定的时间一过,线程重新进入可执行状态。可能给其他线程执行的机会(自私,睡着了,不释放锁,时间到了才放锁)suspend() 和resume() 方法:两个方法配套使用,suspend()使得线程进入阻塞状态,并且不会自动恢复,必须其对应的resume() 被调用,才能使得线程重新进入可执行状态。

yield() 方法:yield() 使得线程放弃当前分得的CPU 时间,但是不使线程阻塞,即线程仍处于可执行状态,随时可能再次分得CPU 时间。调用yield() 的效果等价于调度程序认为该线程已执行了足够的时间从而转到另一个线程。不过yield()只能使同等级别的线程获取执行的机会(公平竞争,释放大家再次选举)。而sleep(1000)使同级别或不同级别的都有可能。

wait() 和notify() 和notifyAll()方法是Object中定义的方法:

必须在synchronized代码块中使用,在synchronized代码被执行期间,线程可以调用对象的wait()方法,释放对象的锁标志,进入等待的状态,并且可以调用notify()或者notifyAll()方法通知正在等待的其他线程。notify()通知的是等待队列中的第一个线程,notifyAll()通知的是等待队列中的所有数量。

几个方法配套使用,wait() 使得线程进入阻塞状态,它有两种形式,一种允许指定以毫秒为单位的一段时间作为参数,另一种没有参数,前者当对应的notify() 被调用或者超出指定时间时线程重新进入可执行状态,后者则必须对应的notify() 被调用。

1.6.3 wait和sleep的区别

wait()在object类里定义;sleep()在Thread类里定义。

wait()方法只能放在同步方法或同步块中,表示资源同步时,线程需要等待。

sleep()方法可放在任何位置,表示当前线程睡眠。

wait()方法会释放对象锁;sleep()不会释放对象锁。

wait()方法要等待唤醒之后,线程才会继续执行。

sleep()则是休眠一段时间,线程自动恢复执行.

sleep()必须捕获异常,而wait(),notify()和notifyAll()不需要捕获异常

1.6.4 notify()和notifyAll()的区别

notify() 方法导致解除阻塞的线程是从因调用该对象的wait() 方法而阻塞的线程中随机选取的,我们无法预料哪一个线程将会被选择,所以编程时要特别小心,避免因这种不确定性而产生问题。

notifyAll() 方法将把因调用该对象的wait() 方法而阻塞的所有线程一次性全部解除阻塞。当然,只有获得锁的那一个线程才能进入可执行状态。

1.6.5 run和start的区别

run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;

start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程;

start()方法是启动(即开辟)一个线程的方法,因此线程的启动必须通过此方法,

而run()方法,只是Thread类的一个方法,它本身并不能开辟线程。

1.7 异常

运行时异常和Error是catch不了的。

throw和throws的区别

throw是抛出一个具体的异常类,产生一个异常。

throws则是在方法名后标出该方法会产生何种异常需要方法的使用者捕获并处理。

自定义异常必须继承Exception类。

1.8 格式化

1.9 数字运算

1.10 正则表达式

1.10.1次数限定符

* 0次或多次

+ 至少1次

? 0或1次

{n} 指定n次

{n,} 至少n次

{n,m} 匹配n-m次

2、JA V A面向对象的基础知识

2.1 面向对象的三个特征

2.1.1 封装

属性是私有,方法的公开的。

自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

2.1.2 继承

它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

2.1.3 多态

实现多态有2种方式:静态多态(编译时的多态,在同一个类中)和动态多态(一个对象可以有多种类型)。

是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。

一句话:允许将子类对象赋值给父类的引用或父类指向子类的对象。

2.1.4 总结

封装可以隐藏实现细节,使得代码模块化。

继承可以扩展已存在的代码模块(类)。

封装和继承属于代码重用。

多态是为了接口重用。

2.1.5 继承、聚合、组合、关联的区别

继承很好理解,下图表示(实线):

实现也很好理解,下图表示(虚线):

依赖(代码中通常表示的是局部变量、方法参数、返回值),下图表示:

关联(代码中通常表示的类的属性),下图表示:

聚合(关联的一种,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;has-a,空心菱形),下图表示

组合(关联的一种,表示更强的关系,整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,contains-a,实心菱形),下图表示

2.2 抽象、接口定义及区别

抽象类里面可以有非抽象方法

但接口里只能有抽象方法

声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现

该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是

一个抽像类,并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静

态方法。Abstract 类的子类为它们父类中的所有抽像方法提供实现,否则它们

也是抽像类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在

类中实现这些方法。

接口(interface)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个

有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除

了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将

程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何

对像上调用接口的方法。由于有抽像类,它允许使用接口名作为引用变量的类

型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,

instanceof 运算符可以用来决定某对象的类是否实现了接口。

2.3 匿名类、内部类、匿名内部类

在一个类中定义另外一个类,这个类就叫做内部类或内置类(inner class) 。

内部类分为成员内部类、静态嵌套类、方法内部类、匿名内部类。

内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class 文件,但是前面冠以外部类的类命和$符号。内部类不能用普通的方式访问。内

部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无

论是否是private的。

我们为什么使用内部类?

A、在内部类(inner class)中,可以随意的访问外部类的成员,这可以让

我们更好地组织管理我们的代码,增强代码的可读性。

B、内部类可以用于创建适配器类,适配器类是用于实现接口的类。使用

内部类来实现接口,可以更好地定位与接口关联的方法在代码中的位置。

C、内部类的更多用法(匿名inner class实现一个接口,不过切记最后那个

分号;实现继承和接口实现时出现同名方法的问题;实现多重继承的功能)

2.4 反射

这种动态的获取信息及动态调用方法的机制在Java中称为“反射”

(reflection)。

Reflection 是Java被视为动态(或准动态)语言的一个关键性质。

在JDK中,主要由以下类来实现Java反射机制,这些类都位于

https://www.360docs.net/doc/0516202185.html,ng.reflect包中:

Class类:代表一个类;

Field 类:代表类的成员变量(成员变量也称为类的属性);

Method类:代表类的方法;

Constructor 类:代表类的构造方法;

Array类:提供了动态创建数组,以及访问数组的元素的静态方法;

在https://www.360docs.net/doc/0516202185.html,ng.Object 类中定义了getClass()方法,因此对于任意一个Java对象,都可以通过此方法获得对象的类型。Class类是Reflection API 中的核心

类,它有以下方法:

getName():获得类的完整名字;

getFields():获得类的public类型的属性(包括继承的类的public属性);

getDeclaredFields():获得类的所有属性;

getMethods():获得类的public类型的方法;(包括继承的类的public方

法);

getDeclaredMethods():获得类的所有方法;

getMethod(String name, Class[] parameterTypes):获得类的特定方法,name

参数指定方法的名字,parameterTypes 参数指定方法的参数类型;

getConstructors():获得类的public类型的构造方法;

getConstructor(Class[] parameterTypes):获得类的特定构造方法,

parameterTypes 参数指定构造方法的参数类型;

newInstance():通过类的不带参数的构造方法创建这个类的一个对象;

通过默认构造方法创建一个新对象:

Object objectCopy=classType.getConstructor(new Class[]{}).newInstance(new Object[]{});

以上代码先调用Class类的getConstructor()方法获得一个Constructor 对象,它代表默认的构造方法,然后调用Constructor对象的newInstance()方法构造一

个实例。

获得对象的所有属性:

Field fields[]=classType.getDeclaredFields();

Class 类的getDeclaredFields()方法返回类的所有属性,包括public、protected、默认和private访问级别的属性。

Java允许我们从多种途径为一个class生成对应的Class object

(一)运用getClass()方法

(二)运用Class.getSuperclass()方法

(三)运用静态方法Class.forName(),这个最常用

(四)运用.class语法

(五)运用原始包装类的TYPE方法

2.5 浅复制和深复制

浅负责也叫浅克隆,深复制也叫深克隆。

克隆一般通过实现Cloneable中的clone方法来实现浅克隆和深克隆,但是

深克隆有一个问题,如果引用对象有很多,或者说引用套引用很多重,那么太

麻烦了。

业界常用的方法是使用串行化然后反串行化的方法来实现深克隆。由于串行化后,对象写到流中,所有引用的对象都包含进来了,所以反串行化后,等

于生成了一个完全克隆的对象。绝!这个方法的要求是对象(包括被引用对象)

必须事先了Serializable接口,否则就要用transient关键字将其排除在复制过程

中。

3、UML相关知识

3.1软件工程的生命周期

3.1.1 软件工程的生命周期

需求捕获、系统分析与设计、系统实现、测试、维护

3.2.UML(Unified Modeling Language)概述

3.3 UML组成

视图(View)是一个或多个图组成的对系统某个角度的抽象

图(Diagram)是模型元素集的图形表示

模型元素(Model Element)代表面向对象中的类、对象、接口、消息和关系的概念

通用机制(General Mechanism)用于表示其他信息,如注释、模型元素的语义等

3.4视图

视图由图组成,UML提供9种不同的视图,其中视图的包括

用例视图(强调系统功能)也称用户模型视图

用例图

逻辑视图(展现系统的静态或结构组成特征)也称为结构模型视图或静态视图

类图、对象图

并发视图(体现系统的动态或行为特征)也称为行为模型视图或动态视图

时序图、协作图、状态图、活动图

组件视图(体现系统实现的结构和行为特征)也成为实现模型视图

组件图

配置视图(体现系统实现的环境的结构和行为特征)也称环境模型视图或物理视图

配置图

3.5静态建模机制和动态建模机制

UML内容归纳为2大类:静态建模机制和动态建模机制

静态建模机制包括用例图、类图、对象图、组件图、配置图、包等

动态建模机制包括时序图、协作图、状态图、活动图、消息等

3.6 UML用来描述模型内容的有3种:事物、关系、图(静态视图和动态视图)

主要说说事物和关系

事物包括如下

结构事物:用例(椭圆)、类(矩形)、接口(圆心)、协作(虚椭圆)、活动类(粗线矩形)、组件、节点(资源:电脑)

行为事物:交互(通常画成带箭头的信息)、状态机(对象的一个或多个状态的集合)组织事物:包

辅助事物:注释

关系:关联、依赖、泛化、实现

3.7 类与类关系

类(矩形:名称、属性、操作、职责)

其中表示+、-、#是public、private、protected

关系

依赖(有方向的虚线):使用依赖、抽象依赖、授权依赖、绑定依赖

泛化(父类和子类的关系):描述了类之间的“is a kind of ”的关系,用子类指向父类的空心三角形箭头(实线)表示该关系。泛

化使得多态成为可能。

关联:描述一组具有相同结构特征、行为特征、关系和语义的链接。

关联的修饰有:名称(描述关系的性质)、角色(职责)、多重性(0..n)、聚合(整体和部分,即has a的关系)、

组合(是更强的关系,是另外一种聚合,整体有管理部分特有的职责并且有一致的生命周期)等。

实现:实现规格说明和其实现间的关系。它表示不继承结构而只继承行为。大多数情况下,实现关系用来规定接口和实现接口的类或

组件之间的关系。(带空心的箭头表示,线是虚线)

3.8类图

描述类、接口、协作以及它们之间关系的图。

类图包括7个元素:类、接口、协作、依赖关系、泛化关系、实现关系以及关联关系类图的作用:对系统的词汇建模、对简单的协作建模、对逻辑数据库模式建模

3.9对象图

表示某一刻一组对象以及它们之间关系的图

3.10包图(略)

3.11用例视图

用例(Use Case):对一个系统或一个应用的一种单一的使用方式所作的描述。

参与者(Actor):系统外部的一个实体(可以说任何事物或人)

参与者之间的关系(泛化关系、包含关系、扩展关系)

3.12时序图

描述对象之间传递消息的时间顺序,他用来表示用例中的行为顺序,是强调消息时间的交互图

包括4个元素:对象、生命线、激活、消息

3.13协作图

强调参与交互的各对象结构的信息。协作图是一种类图。

协作图中包含3个元素:对象、链、消息。

如图:

3.14状态图

通过类对象的生命周期建立模型来描述对象随时间变化的动态行为。

它包括:状态和转换

注意:初始状态:实圆心、终止状态:半实圆心。

状态机、状态、转化

其中状态包括:名字、入口/出口动作、内部转换、延迟事件、子状态。

转换包括:源状态、目标状态、出发事件、监护条件、动作

3.15活动图

描述一个过程或操作的步骤。描述状态外,更突出活动

动作状态、活动状态、动作流、分支、分叉和汇合、泳道、对象流。

3.16组件图

描述软件组件及组件之间的关系。

包括:组件、接口、关系(依赖、泛化、关联、实现)。

3.17配置图

显示软件系统运行的物理硬件。

包括节点(单个物理对象)、组件和关系(依赖和关联)

Java源代码___聊天室

Java 聊 天 室 制作人:_____杨永生_____ 制作时间:2012.9.26 目录 1本文简介 (2) 2聊天室截图与说明 (2) 2.1用Java编译: (2) 2.2服务器登录界面 (2) 2.3服务器窗口 (2) 2.4客服端登录界面 (3) 2.5客服端窗口 (3) 3服务器端 (6) 3.1MyServer()方法 (6) 3.2Login()方法 (10) 3.3Time()方法 (13) 4客户端 (14) 4.1MyClient()方法 (14) 4.2Login()方法 (18) 4.3Time()方法 (20)

1 本文简介 这是一个简单的Java聊天室,仅提供给一些刚学Java的学生做实验,本文也是仅供参考. 本文代码都有注释,希望读者能读懂代码,本实验内部还有一些错误,比如只能一条一条的发信息,不能连发,希望能解决本问题的朋友能给我发信息,我的QQ号就是百度号! 2 聊天室截图与说明 2.1 用Java编译: 本代码有七个类,放在六个java文件中,类名在下方希望读者自己观看, 2.2 服务器登录界面 要先运行服务器端的程序 用户名:y 密码:1 用户名密码可以自己设定点击确定可以登录,2秒后到服务端界面 2.3 服务器窗口

聊天室的IP为本机的网络虚拟IP,在任何电脑上都能用,端口应设置在1024以后, 2.4 客服端登录界面 和服务器端的登录一样 2.5 客服端窗口

当登录上后客服端就显示已经连接了,此时服务器端的窗口如下

由于本程序设计的不是很完整,具体的聊天要先从客服端开始: 在客服端输入一条聊天内容后按确定,在服务器端就可以收到信息,之后客户端不能输入了,要等待服务器端来信息后才能继续输入信息. 想要结束聊天,直接可以关闭窗口,也可以输入’bye’后断开聊天

史上最全Java基础知识点归纳

史上最全Java基础知识点归纳 写这篇文章的目的是想总结一下自己这么多年来使用Java的一些心得体会,主要是和一些Java基础知识点相关的,所以也希望能分享给刚刚入门的Java 程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE 相关的、和Java中各个框架相关的内容。 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。 1.JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资

深开发者来说,不会JVM几乎是不可接受的。 JVM作为Java运行的基础,很难相信对于JVM一点都不了解的人可以把Java语言吃得很透。我在面试有超过3年Java经验的开发者的时候,JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证Java开发能力的高低。 在JVM这个大类中,我认为需要掌握的知识有: JVM内存模型和结构 GC原理,性能调优 调优:Thread Dump,分析内存结构 class二进制字节码结构,class loader体系,class加载过程,实例创建过程 方法执行过程 Java各个大版本更新提供的新特性(需要简单了解) 2.Java的运行(基础必备) 这条可能出看很简单,Java程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行Java程序,底层IDE又是如何执行Java程序呢?很多人并不了解。

java课程设计报告__利用java实现简单聊天室(可编辑)

java课程设计报告_-_利用JAVA实现简单聊天室 利用JAVA实现简单聊天室 1.课程设计目的 在当今的信息时代,越来越多的聊天工具被应用,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。使用Java 语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入式设备进行应用程序的开发Java语言的重要概念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。 此次课程设计的题目为简单的聊天室,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。 2.设计方案论证 2.1设计思路 Java是一种简单的,面对象的,分布式的,解释的,键壮的安全的,结构中立的,可移植的,性能很优异的多线程的,动态的语言Java去掉了C++语言的许多功能,如:指针运算、结构、typedefs、#define让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。这将减少平常出错的50%。而且,Java很小,整个解释器只需215K的RAM。Java简单聊天室,它是图形界面、线程、流与文件等技术的综合应用其界面主要采用了包程序实现了的基本功能有:Pentium 2.8GHz以上

内存:256MB以上 硬盘空间:80G以上 操作系统:Windows XP 运行环境:JDK,JCreator 2.5 程序功能图及程序相关说明主功能框图 图1 程序基本框图 表1 聊天室基本功能表 序号 文件名 主要功能 1 ServerHost 被服务器调用 2 Client 显示聊天室 3 ClientUser 被客户端调用 4 LogIn 注册登陆 5 Objecting

JAVA基础知识考核含答案

精品文档 JAVA基础知识考核题 班级:姓名:成绩: 一、选择题(80分,每题2分) 1.J ava编译器的命令是( D ) A.java B. appletviewer C. jdb D. javac 2. Java解释器的命令是( A ) A.java B. appletviewer C. jdb D. javac 3. Java开发人员使用的开发工具包是( C ) A.JVM B. JRE C. JDK D. Eclipse 4. 下列说法正确的是( B ) A. 使用Java语言开发的程序可以在任何平台下运行,且不需要JRE B. 使用Java语言开发的程序可以在任何平台下运行,但需要JRE C. Java虚拟机是独立的,JDK中不包含虚拟机 D. Java语言编译后是字节码文件,操作系统可直接执行 5. 下列全部是合法的Java标识符的是( B ) A. 09stu teacher $money B _salary post123 name C case abstract final D #ID list today 6. 程序中有如下语句 final float PI = 3.14f; 下列说法正确的是( C ) A PI 是一个变量,初始化的值是3.14. B 定义有错误,PI 是float类型3.14后不能加f C PI 是一个常量,其值是3.14 D 对PI可以重新赋值,如PI = 3.1415926; 7 下列初始化值正确的是(B )

A float score = 90.5; B boolean flag = false; C char 慮敭?尠张三; D boolean num = 1; 8. 有如下代码 . 精品文档 class ScopeVar { public static void main(String [ ] args) { int num = 10; if ( num = = 10) { int num1 = num * num; } num1 = num1+10; System.out.println(num1); } } 输出正确的是( D ) A 110 B 20 C 不确定 D 程序错误 9. 下面对Scanner 描述正确的是( C ) A Scanner类提供输入数据的方法,但只能输入字符串 B Scanner的使用方法:Scanner.next(); C 使用Scanner需要导入java.util.Scanner类 D 从键盘读取一个整数的方法 Scanner sc = new Scanner(); int num = sc.nextInt(); 10. 有String str1=hello; int num=100; 则对str1+100 说法正确的是( A ) A str1+100 的值是一个字符串hello100 B str1+100会产生语法错误,字符串不能和整数相加 C str1+100不会产生语法错误,最终的结果是100,str1的值被忽略掉 D str1+100不会产生语法错误,最终的结果是hello,100被忽略掉 11. 哪种方法返回String中的字符数( B ) A. size() B. length() C.width() D.girth() 12. 下面创建数组正确的是B A int[] int_array = int[10]; B int[] int_array = new int[10]; C int[] int_array = new int(10);

java基础知识点总结

Created by AIwen on 2017/5/14. java是面向对象的程序设计语言;类可被认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都是引用变量,它们将会引用到类的对象。类用于描述客观世界里某一类对象的共同特征,而对象则是类的具体存在,java程序使用类的构造器来创建该类的对象。 java也支持面向对象的三大特征:封装、继承、和多态。java提供了private、protected、和public三个访问控制修饰符来实现良好的封装,提供了extends关键字让子类继承父类,子类继承父类就可以继承到父类的成员变量和和方法,如果访问控制允许,子类实例可以直接调用父类里定义的方法。继承是实现类复用的重要手段。使用继承关系来实现复用时,子类对象可以直接赋给父类变量,这个变量具有多态性。 面向对象的程序设计过程中有两个重要的概念:类(Class)和对象(object,也被称为实例,instance)。类可以包含三种最常见的成员:构造器、成员变量、和方法。 构造器用于构造该类的实例,java语言通过new关键字类调用构造器,从而返回该类的实例。构造器是一个类创建对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例。因此java语言提供了一个功能:如果程序员没有为一个类编写构造器,则系统会为该类提供一个默认的构造器,这个构造器总是没有参数的。一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器。 构造器用于对类实例进行初始化操作,构造器支持重载,如果多个重载的构造器里包含了相同的初始化代码,则可以把这些初始化代码放置在普通初始化块里完成,初始化块总在构造器执行之前被调用。静态初始化块代码用于初始化类,在类初始化阶段被执行。如果继承树里某一个类需要被初始化时,系统将会同时初始化该类的所有父类。 构造器修饰符:可以是public、protected、private其中之一,或者省略构造器名:构造器名必须和类名相同。 注意:构造器既不能定义返回值类型,也不能使用void声明构造器没有返回值。如果为构造器定义了返回值类型,或使用void声明构造器没有返回值,编译时不会出错,但java会把这个所谓的构造器当成方法来处理——它就不再是构造器。 实际上类的构造器是有返回值的,当使用new关键字来调用构造器时,构造器返回该类的实例,可以把这个类的实例当成构造器的返回值。因此构造器的返回值类型总是当前类,无须定义返回值类型。不要在构造器里显式的使用return来返回当前类的对象,因为构造器的返回值是隐式的。 java类名必须是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。 成员变量: 成员变量的修饰符:public、protected、private、static、final前三个只能出现一个再和后面的修饰符组合起来修饰成员变量,也可省略。 成员变量:由一个或者多个有意义的单词连缀而成,第一个单词首字母小写,后面每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。 类型:可以是java语言允许的任何数据类型,包括基本类型和引用类型。 成员方法: 方法修饰符:public、protected、private、static、final、abstract,前三个只能出现一个,static和final最多只能出现其中的一个,和abstract组合起来使用。也可省略。 返回值类型:可以是java语言的允许的任何数据类型,包括基本类型和引用类型。 方法名:和成员变量的方法命名规则相同,通常建议方法名以英文动词开头。 方法体里多条可执行语句之间有严格的执行顺序,排在方法体前面的语句总先执行,排在方法体后面的语句总是后执行。 static是一个特殊的关键字,它可用于修饰方法、成员变量等成员。static修饰的成员表明它属于这个类本身,而

JAVA聊天室实验报告

JA V A聊天室实验报告 姓名:马琳越 班级:131114 学号:13111368 日期:2014年4月23日

目录 目录 (2) JA V A程序课程设计任务书 (3) 摘要 (4) 第1章引言 (5) 第2章聊天室系统的设计 (7) 第3章界面设计 (11) 第4章总结 .................................................................................. 错误!未定义书签。

Java聊天室的设计任务书 1.主要内容 用JA V A实现基于C/S模式的聊天室系统。聊天室分为服务器端和客户端部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能。 2.具体要求 A.服务器端主要功能 (1).在特定端口上进行侦听,等待客户端连接。 (2).用户可以配置服务器端的侦听端口,默认端口为8888。 (3).向已经连接到服务器端的用户发送系统消息。 B. 客户端主要功能 (1).连接到已经开启聊天服务的服务器端。 (2).用户可以配置要连接的服务器端的IP地址和端口号。 (3).用户可以配置连接后显示的用户名。 (4).用户可以向所有人或某一个人发送消息。 3.主要参考文献及运用工具 (1)Bruce Eckel 著Thinking in Java ,李刚著疯狂Java讲义 (2)使用技术:Java 使用开发工具:Eclipse

摘要 在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。基于Java网络编程的强大功能,本次大作业要求使用Java编写一个聊天系统。 一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,但是,由于自己数据库知识的部分遗忘,本程序未连接数据库,采用客户机/服务器架构模式,通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信。 本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。使用JAVA语言编写,开发工具采用Eclipse。服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。大大增强了程序对服务器资源的利用。 聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息等等功能。

Java Socket实现多人聊天室

Java Socket实现多人聊天室---swing做UI 标签:socket聊天javaexception服务器string 2011-08-31 15:06 20679人阅读评论(25) 收藏举报 分类: java(21) 版权声明:本文为博主原创文章,未经博主允许不得转载。 今天翻硬盘的workspace发现一个Java Socket实现多人聊天室的源码,不记得是什么时候的事情了,貌似不是我写的。但写得还不错, 至少算个有模有样的聊天室工具。我简单的修改了一下,拿出来跟大家分享一下,仅供参考。。。 界面是用swing写的,还不懒,简约大方。有图有真相:

正如上图所示,这个程序分为服务器端和客户端,说白了就是两个main class,用eclipse 直接运行之。。。。。 聊天室的设计思想是:在局域网下,利用socket进行连接通信,当服务器端启动的时候,利用Thread线程不停的等待客户端的链接;当有客户端开启连 接的时候,服务器端通过IO流反馈“上线用户”信息给客户端,客户端也使用线程不停的接收服务器的信息,从而实现多人在线聊天功能。 程序中有三个类,分别Server.java(服务器端)、Client(客户端)、User.java(javabean)。代码如下: Server.java(服务器端): [html]view plaincopy 1.import java.awt.BorderLayout; 2.import java.awt.Color; 3.import java.awt.GridLayout; 4.import java.awt.Toolkit; 5.import java.awt.event.ActionEvent;

JAVA聊天室(参考实现)

第一章基于JAVA的聊天室设计与实现 一、设计目的: 信息技术的高速发展给人类生产,生活带来了广泛而深远的影响。“上网冲浪”“数码相机”“PDA”、“彩屏手机”、“蓝牙技术”等新产品,新概念层出不穷,不断冲击着人们的视听。这些高科技成果为人们带来便捷、快乐的同时,也促进了人机交互技术的发展。人机交互是关于设计、评价和实现供人们使用的交互式计算机系统,并围绕相关的主要现象进行研究的科学。它主要研究人与计算机之间的信息交换,涉及计算机科学,心理学,认知科学等诸多学科,是信息技术的一个重要组成部分,并将继续对信息技术的发展产生巨大影响。 聊天室是一项应用广泛,并且实用性强的一个非常典型的人机交互系统。在信息世界里,聊天工具的使用是非常频繁的,如MSN、QQ、校内通,之类的聊天工具许多人都正在使用。此次设计的聊天室系统虽然其功能简单,但是在开发技术和过程中,能够充分学习和使用JAVA的技术,进一步培养学生面向对象程序设计的思想,加深对面向对象程序设计四大特性的理解。

第二章功能介绍 1.需求分析 人们日常生活中越来越多地使用聊天室这项应用来为自己的工作和学习服务。一个操作简单,界面友好、运行稳定的聊天室对于小型局域网的用户可以起到很好的交流作用。所谓聊天室就是一个可以让许多用户同时互相通信的网上园地,个人用户可以通过聊天室将自己融入整个主流社会中。 根据目前使用聊天室的用户需求显示,用户对于聊天室主要有以下几点要求: (1). 与聊天室成员一起聊天,可以与聊天室成员私聊 (3). 可以改变聊天内容风格,用户注册(含头像)、登录 (4). 服务器,服务器过滤非法内容。 (5). 服务器发送通知,保存服务器日志,保存用户聊天信息。。 该简易聊天室是为许多喜爱聊天的用户开发设计的,和许多大型的网络聊天室相比该小聊天室功能比较简单,但能实现基本的聊天功能,点对多、点对点聊天和基本的用户功能,登录、查看在线用户等。 2、软件功能描述 (1)、用户设置:用户自定义自己的登录名,成功设置后,服务端能接收到新设置的用户名; (2)、登录功能:在服务端开启的情况下,用户可以以自己自定义或者默认的登录名和登录地址端口登录到客户端,并能在服务器端显示登录状态; (3)、公聊:用户可以与“所有人”聊天,在线用户可正常接收并正确显示公聊消 (4)、私聊:用在线用户和其他用户聊天。记录对于聊天室的其他用户是不可见的。 (5)、聊天心情:用户在聊天的过程中可以选择相应的心情来表达自己的情感。 (6)、系统消息:服务端运行,为每一个用户都能接收服务器端发送的信息提示信息。 (7)、用户的状态.每一个客户端用户都可以实时看到目前其他在线用户的状态。 (8)、用户剔除:用户可以被系统剔除,并重新登记登录名和地址。 (9)、用户退出:用户可以在正常情况下退出聊天室。 (10)、服务端控制:服务端开启的情况下,用户才能登陆成功和聊天;用户设置的地址端口也必须与服务端的侦听端口一致,否则不能登录。

java聊天工具源代码.doc

v1.0可编辑可修改 源代码 项目 QQClientProject: LoguiGui 代码 : package class LoguiGui extends { public LoguiGui() { initComponents(); } public Socket connectServer() { Socket s = null; try { s = new Socket("", 6666); } catch (Exception e) { (); } return s; } private void jButton1ActionPerformed evt) { quals(name)) { (this, "用户名不能为空, 请输入 ", "异常提示", ; return; } String pwd = new String()); "密码: " + pwd); if () == 0) {

v1.0可编辑可修改 (this, "密码不能为空,请输入", "异常提示", ; return; } final Socket s = (); endMsg(msg, s); eceiveMsg(s); etVisible(true); } }); (); } else { (this, "登录失败:" + r, "异常提示", ; } private void jLabel3MouseClicked evt) { etVisible(true); } }); } RegiterGui代码: package class RegiterGui extends { private static final String url = "jdbc:odbc:mydata"; private static final String user = "mzz";

超级经典java基础知识总结

Java基础知识总结 写代码: 1,明确需求。我要做什么? 2,分析思路。我要怎么做?1,2,3。 3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。 4,代码实现。用具体的java语言代码把思路体现出来。 学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点(使用注意): 3,该技术怎么使用。demo 4,该技术什么时候用?test。 ----------------------------------------------------------------------------------------------- 一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器; 1994年将Oak语言更名为Java; Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发; JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础; JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序; 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。 2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。 3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 环境变量的配置: 1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk path=%JAVA_HOME%\bin 2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。 classpath的配置: 1):永久配置方式:classpath=.;c:\;e:\ 2):临时配置方式:set classpath=.;c:\;e:\ 注意:在定义classpath环境变量时,需要注意的情况 如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件; 如果指定了classpath,那么会在指定的目录下查找要运行的类文件。 还会在当前目录找吗?两种情况: 1):如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。 2):如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。 一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。 4,javac命令和java命令做什么事情呢?

利用JAVA实现简单聊天室

利用JAVA实现简单聊天室 1.设计思路 Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。而且,Java 很小,整个解释器只需215K的RAM。 因此运用JAVA程序编写聊天室,实现简单聊天功能。程序实现了聊天室的基本功能,其中有: (1)启动服务器:实现网络的连接,为注册进入聊天室做准备。 (2)注册登陆界面:填写基本信息如姓名等,可以供多人进入实现多人聊天功能。 (3)发送信息:为用户发送信息提供平台。 (4)离开界面:使用户退出聊天室。 (5)关闭服务器:断开与网络的连接,彻底退出聊天室。 2.设计方法 在设计简单聊天室时,需要编写5个Java源文件:、、、、。 3 程序功能图及程序相关说明 (1)主功能框图

(2) 聊天室基本功能表 4.程序代码是说明 程序中引入的包:package Chat; import .*; import .*; import .*; import .*; import .*;

(1)服务器端代码中用户自定义类: 类名:Server 作用:服务器启动 继承的接口名:ActionListener public class Server implements ActionListener{ 定义的对象: count 计结果与分析 5个Java源文件:、、、、。分别编译这5个Java源文件,或运行“javac *.java”命令,编译全部的源文件,然后运行连接服务器的主类,即运行Server类。连接完毕后在运行注册的主函数类,即运行LogIn类。 首先运行启动服务器的文件,运行结果如下: 图1服务器启动成功 结果分析:在进入聊天室之前必须先启动服务器,实现服务器端的连接为用户的登录打开“窗口”。 其次运行用户注册登录文件,运行结果如下:

Java基础知识点复习资料

1、classpath的设置及作用:设置为set classpath=“绝对路径”。作用是指定Java类的执 行路径。是用来寻找class文件的。 2、path的设置及作用:是内部命令。在编译Java的时候需要用到javac命令在执行java 的时候要用到java命令,这两个命令不时windows自带的命令,所以我们使用的时候要设置好环境变量,这样就可以在任何目录下使用了。 3、JA V A数据类型:基本数据类型(数值型(整型(byte.short.int.long)、浮点型 (float.double))、字符型(char)、布尔型(boolean))、引用数据类型(class.数组、接口)。 4、JA V A基本运算符号:赋值运算符、算术运算符、关系运算符、逻辑运算符、条件运 算符、括号运算符。 5、JA V A程序基本控制语句: 1、if (判断条件) { 语句1; 语句2; } 2、if(判断条件) { 语句1; } else { 语句2; } 3、switch(表达式) { case 选择值1;语句主体1; break; case 选择值2;语句主体2; break; case 选择值3;语句主体3; break; default:语句主体; } 4、for(赋初始值;判断条件;赋值增减量) { 语句; } 5、while(判断条件) { 语句1; 语句2; } 6、do {

语句1; 语句2; } while(判断条件); break跳出循环。continue跳出本次循环进入到下次循环。 6、数组的概念及使用:数组是由一组相同类型的变量所组成的数据类型,它们以一个共 同的名称来表示。 格式一:数据类型数组名[] 数组名=new 数据类型[个数] 例:int i[] i=new int[8] 格式二:数据类型数组名[]=new 数据类型[个数] 例:int i=new int[8] 7、方法的声明及使用:完成某一特定功能的代码块。 返回值类型方法名称(类型参数1,类型参数2) { 程序语句; return表达式; } 8、方法的重载:在同一个类中允许同时存在一个以上的同名方法,只要他们的数据类型 参数个数不同即可。 例如:public static int Test(int i,intj) { return i+j; public static int Test(int x) { return x++; } pubic static double Tset(double m,double n) { return m+n; } public static int Test(int a,int b,int c) { return a-b+c; } } 在程序中Test方法被重载了4次,但每个重载了的方法所能接受参数的个数和类型不同。 9、类的定义: 将具有相同属性及相同行为的一组对象称为类。广义的讲,具有共同性质的事物的集合就称为类。 class 类名称 {

java基础知识

一、单项选择题 1.下列正确的Java的标识符是:( A )。 A. username B. %passwd C. 3d_game D. class 2.分析下面的程序段,程序的运行结果是: ( D ) public class Example{ public static void main(String args[] ){ int l=0; do{ System.out.println(“Doing it for l is:”+l); }while(--l>0); } } A. Doing it for l is 3 B. Doing it for l is 1 C. Doing it for l is 2 D. Doing it for l is 0 3.类的实例方法所表示的是( C )。 A.那个类的属性 B. 那个类的行为 C.从那个类创建的对象的行为D都不对 4.main方法是Java Application程序执行的入口点,合法的定义是( B )。 A.public static void main() B.public static void main( String args[] ) C.public static int main(String [] arg ) D.public void main(String arg[] ) 5.设int x;下面哪条命令检验x的值是否等于100? ( B ) A.x.equals(100) B.x==100C.x=100 D.以上所可以 6.为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为 前缀即:AB.method( )就可以调用它,该方法头的形式为( A )。 A.static void method( ) B.public void method( ) C.final void method( ) D.abstract void method( ) 7.设有下面两个类的定义: class Person { class Student extends Person { long id; // 身份证号 int score; // 入学总分 String name; // 姓名 int getScore(){ } return score;} } 问:类Person和类Student的关系是( C )。 A. 包含关系 B. 关联关系 C. 继承关系 D. 无关系,上述类定义有语法错误 8.在Java中,执行下面的语句后,c的值为( D )。 String s= "Jessica "; char c=s.charAt(6); A. "c " B. "a " C. 'c ' D. ’a ' 9.下面哪个是java语言中的关键字?( B ) A. sizeof B.abstract C. NULL D. Native 10.设int a=3.b=5,分析表达式a++-(--b)的值( A ) A. -1 B. 0 C. 1 D.都不对

java聊天工具源代码

源代码 项目QQClientProject: LoguiGui代码: package com.huaxia.qq.mzz.gui; import https://www.360docs.net/doc/0516202185.html,mon.Message; import https://www.360docs.net/doc/0516202185.html,mon.MessageService; import https://www.360docs.net/doc/0516202185.html,er; import https://www.360docs.net/doc/0516202185.html,.Socket; import javax.swing.JOptionPane; public class LoguiGui extends javax.swing.JFrame { public LoguiGui() { initComponents(); } public Socket connectServer() { Socket s = null; try { s = new Socket("127.0.0.1", 6666); } catch (Exception e) { e.printStackTrace(); } return s; } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String name = nameItem.getText(); System.out.println("用户名:" + name); if (name == null || "".equals(name)) { JOptionPane.showMessageDialog(this, "用户名不能为空,请输入", "异常提示", JOptionPane.ERROR_MESSAGE); return; } String pwd = new String(pwdItem.getPassword()); System.out.println("密码:" + pwd); if (pwd.length() == 0) { JOptionPane.showMessageDialog(this, "密码不能为空,请输入", "异常提示", JOptionPane.ERROR_MESSAGE); return;

Java基础知识

实验一Java基础知识 (以下作业输入输出要求采用控制台和对话框二种方式。) 1、输入一个以秒为单位的时间量,计算所包含的小时数、分钟数和剩余的秒数,并输出。 2、编程:从键盘输入坐标图中一个点的坐标,判断它属于哪个象限。 3、中国有句俗语“三天打鱼两天晒网”,某人从2012年1月1日起三天打鱼两天晒网,编 程计算这月某日,他在打鱼还是在晒网。某日从键盘输入,打鱼则输出Y,晒网则输出N。例如3日,输入为3,输出为Y。 4、编程猜数:计算机随机产生一个[10,20]区间的整数,由人来猜。输出猜测结果是大还是 小或是正确。 5、编程:输入某年某月后,输出该月的天数。 6、输入一个double型数代表美元和美分的总钱数,然后输出与总值等价的dollar(1元)、 quarter(2角5分)、dime(1角)、nickel(5分)、和penny(1分)的数目。 7、小学生学习减法的程序。程序随机产生二个一位整数number1和number2,且满足 number1>number2。程序显示数学算式,在学生输入答案后,程序输出答案是否正确。 8、编程从键盘输入某月第一天是星期几和该月的天数,打印该月月历。 9、编制猜数字游戏程序。每次运行程序时,先用随机函数产生一个整数,范围在100以内, 然后从键盘反复输入整数进行猜数,当未猜中时,提示所猜之数过大或过小,猜中时,指出猜的次数。最多允许猜6次。 10、输入某年某月某日,判断这一天是这一年的第几天? 11、如果一个整数的各位数之和能被9整除,则这个数也能被9整除。编程判断一个整数n是否能被9整除。其中,n由键盘输入。 12、阅读并分析程序,写出其输出结果,并上机验证。 public class BreakLabelDemo{ public static void main(String args[]){ int i,j; one: for(i=1;i<=10;i++){ System.out.print("Pass"+i+":"); for(j=1;j<=100;j++){ if(j==5)break one; System.out.print(j+"");; } } } } 13、编写一个石头剪刀布的小程序,可以使用户跟系统进行猜拳游戏。 游戏要求是:首先提示用户在石头剪刀布中间选择一个,确定后系统随机在石头剪刀布中间选择一个然后判断用户和系统哪个获胜。一局进行完后用户可以选择是否继续游戏,如果用户选择退出游戏则游戏结束。用户连续三次获胜系统提示“运气不错”后退出程序。如果连续失败三次,则提示“太倒霉了”退出程序。

JAVA基础知识考核(含答案)

JAVA基础知识考核题 班级:姓名:成绩:一、选择题(80分,每题2分) 1.J ava编译器的命令是( D ) A.java B. appletviewer C. jdb D. javac 2. Java解释器的命令是( A ) A.java B. appletviewer C. jdb D. javac 3. Java开发人员使用的开发工具包是( C ) A.JVM B. JRE C. JDK D. Eclipse 4. 下列说法正确的是( B ) A. 使用Java语言开发的程序可以在任何平台下运行,且不需要JRE B. 使用Java语言开发的程序可以在任何平台下运行,但需要JRE C. Java虚拟机是独立的,JDK中不包含虚拟机 D. Java语言编译后是字节码文件,操作系统可直接执行 5. 下列全部是合法的Java标识符的是( B ) A. 09stu teacher $money B _salary post123 name C case abstract final D #ID list today 6. 程序中有如下语句 final float PI = 3.14f; 下列说法正确的是( C ) A PI 是一个变量,初始化的值是3.14. B 定义有错误,PI 是float类型3.14后不能加f C PI 是一个常量,其值是3.14 D 对PI可以重新赋值,如PI = 3.1415926; 7 下列初始化值正确的是(B ) A float score = 90.5; B boolean flag = false; C char name = "张三"; D boolean num = 1; 8. 有如下代码

java聊天程序开题报告

大连大学 本科毕业论文(设计)开题报告 论文题目:JA V A聊天程序的设计与实现学院:信息工程学院 专业、班级:计科113 学生姓名:韩宗秋 指导教师(职称):王明军(讲师) 2015年 3 月 5 日填

毕业论文(设计)开题报告要求 开题报告既是规范本科生毕业论文工作的重要环节,又是完成高质量毕业论文(设计)的有效保证。为了使这项工作规范化和制度化,特制定本要求。 一、选题依据 1.论文(设计)题目及研究领域; 2.论文(设计)工作的理论意义和应用价值; 3.目前研究的概况和发展趋势。 二、论文(设计)研究的内容 1.重点解决的问题; 2.拟开展研究的几个主要方面(论文写作大纲或设计思路); 3.本论文(设计)预期取得的成果。 三、论文(设计)工作安排 1.拟采用的主要研究方法(技术路线或设计参数); 2.论文(设计)进度计划。 四、文献查阅及文献综述 学生应根据所在学院及指导教师的要求阅读一定量的文献资料,并在此基础上通过分析、研究、综合,形成文献综述。必要时应在调研、实验或实习的基础上递交相关的报告。综述或报告作为开题报告的一部分附在后面,要求思路清晰,文理通顺,较全面地反映出本课题的研究背景或前期工作基础。 五、其他要求 1.开题报告应在毕业论文(设计)工作开始后的前四周内完成; 2.开题报告必须经学院教学指导委员会审查通过; 3.开题报告不合格或没有做开题报告的学生,须重做或补做合格后,方能继续论文(设计)工作,否则不允许参加答辩; 4.开题报告通过后,原则上不允许更换论文题目或指导教师; 5.开题报告的内容,要求打印并装订成册(部分专业可根据需要手写在统一纸张上,但封面需按统一格式打印)。

java基础知识大全(必看经典)

第一讲 Java语言入门 1.1 Java的特点 1.1.1面向对象: ?与C++相比,JAVA是纯的面向对象的语言 C++为了向下兼容C,保留了很多C里面的特性,而C,众所周知是面向过程的语言,这就使 C++成为一个"混血儿"。而JAVA语法中取消了C++里为兼容C所保留的特性,如取消了头文件、指针算法、结构、单元等。 1.1.2可移植(平台无关性): ?生成中间字节码指令 与其他编程语言不同,Java并不生成可执行文件(.exe文件),而是生成一种中间字节码文件(.class文件)。任何操作系统,只要装有Java虚拟机(JVM),就可以解释并执行这个中间字节码文件。这正是Java实现可移植的机制。 ?原始数据类型存储方法固定,避开移植时的问题 Java的原始数据类型的大小是固定的。比如,在任何机器上,整型都是32位,而C++里整型是依赖于目标机器的,对16位处理器(比如8086),整数用两个字节表示;在像Sun SPARC这样的32位处理器中,整数用4个字节表示。在Intel Pentium处理器上,整数类型由具体的操作系统决定:对于DOS和Win32来说,整数是2个字节;对于Windows 9x 、NT和2000,整数是4个字节。当然,使整数类型平台无关之后,性能必然有所下降,但就Java来说,这个代价是值得的。Java的字符串,则采用标准的Unicode格式保存。可以说,没有这个特性,Java的可移植性也不可能实现。 1.1.3简单 ?JAVA在语法上与C++类似 JAVA的语法与C++很接近,有过C或者C++编程经验的程序员很容易就可以学会JAVA语法; ?取消了C++的一些复杂而低效的特性比如:用接口技术代替了C++的多重继承。C++中,一个类允许有多个超类,这个特性叫做"多重继承",多重继承使得编译器非常复杂且效率不高;JAVA 的类只允许有一个超类,而用接口(Interface)技术实现与C++的多继承相类似的功能 其它被取消的特性包括:虚拟基础类、运算符过载等 ?JAVA的基本解释器和类支持模块大概仅40K 即使加入基本的标准库和支持线程的模块,也才220K左右。与GUI(图形用户界面)相比,

相关文档
最新文档