文档库 最新最全的文档下载
当前位置:文档库 › Java精华积累

Java精华积累

问题一:我声明了什么!

String s = "Hello world!";

许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。

这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句:

String string = s;

我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。

问题二:"=="和equals方法究竟有什么区别?

==操作符专门用来比较变量的值是否相等。比较好理解的一点是:

int a=10;

int b=10;

则a==b将是true。

但不好理解的地方是:

String a=new String("foo");

String b=new String("foo");

则a==b将返回false。

根据前一帖说过,对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了new操作符,意味着将在内存中产生两个内容为"foo"的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用"=="操作符,结果会是false。诚然,a和b所指的对象,它们的内容都是"foo",应该是“相等”,但是==操作符并不涉及到对象内容的比较。

对象内容的比较,正是equals方法做的事。

看一下Object对象的equals方法是如何实现的:

boolean equals(Object o){

return this==o;

}

Object对象默认使用了==操作符。所以如果你自创的类没有覆盖equals方法,那你的类使用equals和使用==会得到同样的结果。同样也可以看出,Object的equals方法没有

达到equals方法应该达到的目标:比较两个对象内容是否相等。因为答案应该由类的创建者决定,所以Object把这个任务留给了类的创建者。

看一下一个极端的类:

Class Monster{

private String content;

...

boolean equals(Object another){ return true;}

}

我覆盖了equals方法。这个实现会导致无论Monster实例内容如何,它们之间的比较永远返回true。

所以当你是用equals方法判断对象的内容是否相等,请不要想当然。因为可能你认为相等,而这个类的作者不这样认为,而类的equals方法的实现是由他掌握的。如果你需要使用equals方法,或者使用任何基于散列码的集合

(HashSet,HashMap,HashTable),请察看一下java doc以确认这个类的equals逻辑

是如何实现的。

问题三:String到底变了没有?

没有。因为String被设计成不可变(i mm utable)类,所以它的所有对象都是不可变对象。请看下列代码:

String s = "Hello";

s = s + " world!";

s所指向的对象是否改变了呢?从本系列第一篇的结论很容易导出这个结论。我们来看看发生了什么事情。在这段代码中,s原先指向一个String对象,内容是"Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s 不指向原来那个对象了,而指向了另一个String对象,内容为"Hello world!",原来那

个对象还存在于内存之中,只是s这个引用变量不再指向它了。

通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改,或者说,不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因为String对象建立之后不能再改变,所以对于每一个不同的字符串,都需要一个String对象来表示。这时,应该考虑使用String B uffer类,它允许修改,而不是每个不同的字符串都要生成一个新的对象。并且,这两种类的对象转换十分容易。

同时,我们还可以知道,如果要使用内容相同的字符串,不必每次都new一个String。例如我们要在构造器中对一个名叫s的String引用变量进行初始化,把它设置为初始值,应当这样做:

public class D e m o {

private String s;

...

public D e m o {

s = "I nitial V alue";

}

...

}

而非

s = new String("I nitial V alue");

后者每次都会调用构造器,生成新对象,性能低下且内存开销大,并且没有意义,因为String对象不可改变,所以对于内容相同的字符串,只要一个String对象来表示就可以了。也就说,多次调用上面的构造器创建多个对象,他们的String类型属性s都指向同一个对象。

上面的结论还基于这样一个事实:对于字符串常量,如果内容相同,J ava认为它们代表同一个String对象。而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。

至于为什么要把String类设计成不可变类,是它的用途决定的。其实不只String,很多J ava标准类库中的类都是不可变的。在开发一个系统的时候,我们有时候也需要设计不可变类,来传递一组相关的值,这也是面向对象思想的体现。不可变类有一些优点,比如因为它的对象是只读的,所以多线程并发访问也不会有任何问题。当然也有一些缺点,比如每个不同的状态都要一个对象来代表,可能会造成性能上的问题。所以J ava标准类库还提供了一个可变版本,即String B uffer。

问题四:final关键字到底修饰了什么?

final使得被修饰的变量"不变",但是由于对象型变量的本质是“引用”,使得“不变”也有了两种含义:引用本身的不变,和引用指向的对象不变。

引用本身的不变:

final String B uffer a=new String B uffer("i mm utable");

final String B uffer b=new String B uffer("not i mm utable");

a=b;//编译期错误

引用指向的对象不变:

final String B uffer a=new String B uffer("i mm utable");

a.append(" bro k en!"); //编译通过

可见,final只对引用的“值”(也即它所指向的那个对象的内存地址)有效,它迫使引用只能指向初始指向的那个对象,改变它的指向会导致编译期错误。至于它所指向的对象的变化,final是不负责的。这很类似==操作符:==操作符只负责引用的“值”相等,至于这个地址所指向的对象内容是否相等,==操作符是不管的。

理解final问题有很重要的含义。许多程序漏洞都基于此----final只能保证引用永远指向

固定对象,不能保证那个对象的状态不变。在多线程的操作中,一个对象会被多个线程共享或修改,一个线程对对象无意识的修改可能会导致另一个使用此对象的线程崩溃。一个错误的解决方法就是在此对象新建的时候把它声明为final,意图使得它“永远不变”。其实那是徒劳的。

问题五:到底要怎么样初始化!

本问题讨论变量的初始化,所以先来看一下J ava中有哪些种类的变量。

1. 类的属性,或者叫值域

2. 方法里的局部变量

3. 方法的参数

对于第一种变量,J ava虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。

int类型变量默认初始值为0

float类型变量默认初始值为0.0f

double类型变量默认初始值为0.0

boolean类型变量默认初始值为false

char类型变量默认初始值为0(A SC II码)

long类型变量默认初始值为0

所有对象引用类型变量默认初始值为null,即不指向任何对象。注意数组本身也是对象,所以没有初始化的数组引用在自动初始化后其值也是null。

对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。instance 属性在创建实例的时候初始化,static属性在类加载,也就是第一次用到这个类的时候

初始化,对于后来的实例的创建,不再次进行初始化。这个问题会在以后的系列中进行详细讨论。

对于第二种变量,必须明确地进行初始化。如果再没有初始化之前就试图使用它,编译器会抗议。如果初始化的语句在tr y块中或if块中,也必须要让它在第一次使用前一定能够得到赋值。也就是说,把初始化语句放在只有if块的条件判断语句中编译器也会抗议,因为执行的时候可能不符合if后面的判断条件,如此一来初始化语句就不会被执行了,这就违反了局部变量使用前必须初始化的规定。但如果在else块中也有初始化语句,就可以通过编译,因为无论如何,总有至少一条初始化语句会被执行,不会发生使用前未被初始化的事情。对于tr y-catch也是一样,如果只有在tr y块里才有初始化语句,编译部通过。如果在catch或finall y里也有,则可以通过编译。总之,要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他们,如果不知道要出事化成什么值好,就用上面的默认值吧!

其实第三种变量和第二种本质上是一样的,都是方法中的局部变量。只不过作为参数,

肯定是被初始化过的,传入的值就是初始值,所以不需要初始化。

问题六:instanceof是什么东东?

instanceof是J ava的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是J ava的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:

String s = "I A M an Object!";

boolean isObject = s instanceof Object;

我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True。

instanceof有一些用处。比如我们写了一个处理账单的系统,其中有这样三个类:public class B ill {//省略细节}

public class P hone B ill e x tends B ill {//省略细节}

public class G as B ill e x tends B ill {//省略细节}

在处理程序里有一个方法,接受一个B ill类型的对象,计算金额。假设两种账单计算方法不同,而传入的B ill对象可能是两种中的任何一种,所以要用instanceof来判断:public double calculate(B ill bill) {

if (bill instanceof P hone B ill) {

//计算电话账单

}

if (bill instanceof G as B ill) {

//计算燃气账单

}

...

}

这样就可以用一个方法处理两种子类。

然而,这种做法通常被认为是没有好好利用面向对象中的多态性。其实上面的功能要求用方法重载完全可以实现,这是面向对象变成应有的做法,避免回到结构化编程模式。只要提供两个名字和返回值都相同,接受参数类型不同的方法就可以了:

public double calculate(P hone B ill bill) {

//计算电话账单

}

public double calculate(G as B ill bill) {

//计算燃气账单

}

所以,使用instanceof在绝大多数情况下并不是推荐的做法,应当好好利用多态。

阅读全文 (15)/评论/给never_a m e留言/扔小纸条/文件夹:java/j2ee

收藏:QQ书签https://www.wendangku.net/doc/0e10441643.html,/订阅:G oogle抓虾

J ava笔试题

never_a m e@2007-12-24 08:51

一、介绍J S P中常用的内部对象。

request、response、application、config、session、out、page、e x ception、pageConte x t。

二、简述HttpSession的作用,使用方法,可以用代码说明。

HttpSession session = request.getSession();

session.set A ttribute("na m e", new D ate());

D ate date = (D ate)session.get A ttribute("na m e");

三、简述Servlet请求时GE T方法和P OST方法的区别。

(1)GE T:把F or m的数据封装到请求行里URL后边,在浏览器地址栏能看见。

例如:/servlet/e x a m ples.HelloServlet?na m e=2p&password=123 P OST:把F or m的数据封装到请求体里,在浏览器地址栏看不见。

(2)GE T:F or m缺省方法;F or m的方法设成GE T;超级连接;浏览器地址栏直接输入。

P OST:F or m的方法设成P OST。

(3)编写Servlet时重写do G et(只支持GE T请求)或do P ost(只支持P OST请求)。

四、请列出标签中scope属性的候选值,并说明各候选值的存取范围。

......

page、request、session、application

B eanClass N a m e bean N a m e = (B eanClass N a m e)session.get A ttribute("bean N a m e");

if (bean N a m e == null) { bean N a m e = new B eanClass N a m e();

bean N a m e.set XXX();

}

五、简述Servlet生命周期。

Servlet首次创建实例时,W eb容器调用init()方法;每次请求Servlet时,W eb容器调用service(request, response)方法启动线程;Servlet实例销毁时,W eb容器调用destro y()方法。

六、清画出Servlet2.2以上W eb A pplication的基本目录结构。

J2EE1.2:J S P1.1 Servlet2.2

J2EE1.3:J S P1.2 Servlet2.3EJB2.0

J2EE1.4:J S P2.0 Servlet2.4EJB3.0

部署结构:

\my W eb-----\W EB—I N F-----web.xm l

|-----\classes\包\*.class

|-----\lib\*.jar

归档:*.war

开发结构:

\my W eb-----\src-----*.java

|-----\etc-----web.xm l, *.tld

|-----\lib-----*.jar

|-----\web-----*.jsp, *.ht m l, *.jpg

部署:三个拷贝,一个编译

七、谈谈你对三层结构的理解。

浏览器——W eb服务器(M V C)——数据库。(扩展画图)

八、名次解释。

a) J MS(J ava消息服务),做消息处理。

b) D OM(文档对象模型),用来解析X M L。

c) M V C(Model—V iew—Controller),分离表现逻辑、业务逻辑和数据。

d) J N DI(J ava命名和目录接口),提供名字服务。

e) LDAP(轻量级目录访问协议),提供数据的存储方式。

f) EJB(企业级J ava B ean),作为Model,可以封装数据(实体B ean),也可以表示业务功能(会话B ean),作为Model,可以处理消息(M DB)。

g) U M L(统一建模语言),提供画图的规范。R ose,V isio。

h) D T D(文档类型定义),规定X M L文件的格式。

i) X M L(可扩展的标记语言)。

j) JA X P(解析X M L的J ava API).

k) R M I(远程方法调用),在一个机器上使用另一个机器上创建的对象。

l) SO AP(简单对象访问协议),用在W ebService中。

九、程序设计,写出一个Servlet,实现以下功能,通过表单提取一个"ds"的参数(该参数代表一个可用的数据源),通过该参数获得一个可用的数据连接。

i m port java x.sql.*;

public class M y Servlet e x tends HttpServlet{

public void do G et(HttpServlet R equest request, HttpServlet R esponse response) throws I O Ex ception{

String ds = request.get P are m eter("ds");

Conte x t initial = new I nitialConte x t();

D ataSource dss = (D ataSource)initial.loo k up(ds);

Connection conn = dss.getConnection();

State m ent st m t = conn.createState m ent();

R esultSet rs = st m t.e x ecute Q uer y("select a, b, fro m my table");

while(rs.ne x t()){

rs.get XXX();

}

}

61、servlet的生命周期

web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destro y()方法。

62、如何现实servlet的单线程模式

<%@ page isThreadSafe="false"%>

63、页面间对象传递的方法

request,session,application,coo k ie等

64、J S P和Servlet有哪些相同点和不同点,他们之间的联系是什么?

J S P是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。J S P 编译后是"类servlet"。Servlet和J S P最主要的不同点在于,Servlet的应用逻辑是在J ava 文件中,并且完全从表示层中的HTM L里分离开来。而J S P的情况是J ava和HTM L可以组合成一个扩展名为.jsp的文件。J S P侧重于视图,Servlet主要用于控制逻辑。

65、四种会话跟踪技术

会话作用域Servlets J S P页面描述

page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 J ava servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 J S P页面

request是是代表与W eb 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 W eb 组件(由于 forward 指令和 include 动作的关系)

session是是代表与用于某个 W eb 客户机的一个用户体验相关的对象和属性。一个 W eb 会话可以也经常会跨越多个客户机请求

application是是代表与整个 W eb 应用程序相关的对象和属性。这实质上是跨越整个

W eb 应用程序,包括多个页面、请求和会话的一个全局作用域

66、R equest对象的主要方法:

set A ttribute(String na m e,Object):设置名字为na m e的request的参数值

get A ttribute(String na m e):返回由na m e指定的属性值

get A ttribute N a m es():返回request对象所有属性的名字集合,结果是一个枚举的实例getCoo k ies():返回客户端的所有Coo k ie对象,结果是一个Coo k ie数组

getCharacter E ncoding():返回请求中的字符编码方式

getContent L ength():返回请求的B od y的长度

getHeader(String na m e):获得HTT P协议定义的文件头信息

getHeaders(String na m e):返回指定名字的request Header的所有值,结果是一个枚

举的实例

getHeader N a m es():返回所以request Header的名字,结果是一个枚举的实例

get I nputStrea m():返回请求的输入流,用于获得请求中的数据

getMethod():获得客户端向服务器端传送数据的方法

get P ara m eter(String na m e):获得客户端传送给服务器端的有na m e指定的参数值

get P ara m eter N a m es():获得客户端传送给服务器端的所有参数的名字,结果是一个枚

举的实例

get P ara m eter V alues(String na m e):获得有na m e指定的参数的所有值

get P rotocol():获取客户端向服务器端传送数据所依据的协议名称

get Q uer y String():获得查询字符串

get R equest URI():获取发出请求字符串的客户端地址

get R e m ote A ddr():获取客户端的IP地址

get R e m oteHost():获取客户端的名字

getSession([B oolean create]):返回和请求相关Session

getServer N a m e():获取服务器的名字

getServlet P ath():获取客户端所请求的脚本文件的路径

getServer P ort():获取服务器的端口号

re m ove A ttribute(String na m e):删除请求中的一个属性

67、J2EE是技术还是平台还是框架?

J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。

J2EE也是一个框架,包括JDB C、J N DI、R M I、J MS、EJB、J T A等技术。

68、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?

P ublic String translate (String str) {

String te m pStr = "";

tr y {

te m pStr = new String(str.get By tes("I SO-8859-1"), "GB K");

te m pStr = te m pStr.tri m();

}

catch (Ex ception e) {

S y ste m.err.println(e.getMessage());

}

return te m pStr;

}

69、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。

区别主要答两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且

可以操作数值型

b.逻辑操作不会产生短路

70、X M L文档定义有几种形式?它们之间有何本质区别?解析X M L文档有哪几种方式?

a: 两种形式 dtd sche m a,b: 本质区别:sche m a本身是xm l的,可以被X M L解析器解

析(这也是从D T D上发展sche m a的根本目的),c:有D OM,S A X,ST A X等

D OM:处理大型文件时其性能下降的非常厉害。这个问题是由D OM的树结构所造成的,这种结构占用的内存较多,而且D OM必须在解析文件之前把整个文档装入内存,适合对

X M L的随机访问

S A X:不现于D OM,S A X是事件驱动型的X M L解析方式。它顺序读取X M L文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理X M L文件,适合对

X M L的顺序访问

ST A X:Strea m ing API for X M L (St A X)

71、简述s y nchroni z ed和java.util.concurrent.loc k s.L oc k的异同 ?

主要相同点:L oc k能完成s y nchroni z ed所实现的所有功能

主要不同点:L oc k有比s y nchroni z ed更精确的线程语义和更好的性能。s y nchroni z ed

会自动释放锁,而L oc k一定要求程序员手工释放,并且必须在finall y从句中释放。72、EJB的角色和三个对象

一个完整的基于EJB的分布式计算结构由六个角色组成,这六个角色可以由不同的开发

商提供,每个角色所作的工作必须遵循Sun公司提供的EJB规范,以保证彼此之间的兼

容性。这六个角色分别是EJB组件开发者(E nterprise B ean P rovider)、应用组合者(A pplication A sse m bler)、部署者(D eplo y er)、EJB服务器提供者(EJB Server

P rovider)、EJB 容器提供者(EJB Container P rovider)、系统管理员(S y ste m

A d m inistrator)

三个对象是R e m ote(L ocal)接口、Ho m e(L ocalHo m e)接口,B ean类

73、EJB容器提供的服务

主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。

74、EJB规范规定EJB中禁止的操作有哪些?

1.不能操作线程和线程API(线程API指非线程对象的方法如notif y,wait等),

2.不能操作awt,

3.不能实现服务器功能,

4.不能对静态属生存取,

5.不能使用I O操作直接存取

文件系统,6.不能加载本地库.,7.不能将this作为变量和返回,8.不能循环调用。

75、re m ote接口和ho m e接口主要作用

re m ote接口定义了业务方法,用于EJB客户端调用业务方法。

ho m e接口是EJB工厂用于创建和移除查找EJB实例

76、bean 实例的生命周期

对于Stateless Session B ean、E ntit y B ean、Message D riven B ean一般存在缓冲池管理,而对于E ntit y B ean和Statefull Session B ean存在Cache管理,通常包含创建实例,设

置上下文、创建EJB Object(create)、业务方法调用、re m ove等过程,对于存在缓冲池管理的B ean,在create之后实例并不从内存清除,而是采用缓冲池调度机制不断重用

实例,而对于存在Cache管理的B ean则通过激活和去激活机制保持B ean的状态并限

制内存中实例数量。

77、EJB的激活机制

以Stateful Session B ean 为例:其Cache大小决定了内存中可以同时存在的B ean实例的数量,根据M RU或N RU算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个EJB实例业务方法时,如果对应EJB Object发现自己没有绑定对应的

B ean实例则从其去激活B ean存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的ejb A ctive和ejb P assivate方法。

78、EJB的几种类型

会话(Session)B ean ,实体(E ntit y)B ean 消息驱动的(Message D riven)B ean

会话B ean又可分为有状态(Stateful)和无状态(Stateless)两种

实体B ean可分为B ean管理的持续性(B M P)和容器管理的持续性(CM P)两种

79、客服端调用EJB对象的几个基本步骤

设置J N DI服务工厂以及J N DI服务地址系统属性,查找Ho m e接口,从Ho m e接口调用Create方法创建R e m ote接口,通过R e m ote接口调用其业务方法。

80、如何给weblogic指定大小的内存?

在启动W eblogic的脚本中(位于所在D o m ian对应服务器目录下的

startServer N a m e),增加set M E M_ARG S=-X m s32m-X mx200m,可以调整最小内存

为32M,最大200M

81、如何设定的weblogic的热启动模式(开发模式)与产品发布模式?

可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务的启动文件或者co mm env文件,增加set PR O DU CT I O N_MO DE=true。

82、如何启动时不需输入用户名与密码?

修改服务启动文件,增加W L S_U S ER和W L S_P W项。也可以在boot.properties文件中增加加密过的用户名和密码.

83、在weblogic管理制台中对一个应用域(或者说是一个网站,D o m ain)进行j m s 及ejb或连接池等相关信息进行配置后,实际保存在什么文件中?

保存在此D o m ain的config.xm l文件中,它是服务器的核心配置文件。

84、说说weblogic中一个D o m ain的缺省目录结构?比如要将一个简单的

hello W orld.jsp放入何目录下,然的在浏览器上就可打入http://主机:端口

号//helloword.jsp就可以看到运行结果了?又比如这其中用到了一个自己写的java B ean该如何办?

D o m ain目录服务器目录applications,将应用目录放在此目录下将可以作为应用访问,如果是W eb应用,应用目录需要满足W eb应用目录要求,jsp文件可以直接放在应用

目录中,J avabean需要放在应用目录的W EB-I N F目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。

85、在weblogic中发布ejb需涉及到哪些配置文件

不同类型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xm l,weblogic-ejb-jar.xm lCM P实体B ean一般还需要weblogic-c m p-rdb m s-jar.xm l

86、如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置

缺省安装中使用D e m o I dentit y.j k s和D e m oTrust.j k s K e y Store实现SS L,需要配置服

务器使用E nable SS L,配置其端口,在产品模式下需要从C A获取私有密钥和数字证书,创建identit y和trust k e y store,装载获得的密钥和数字证书。可以配置此SS L连接是单向还是双向的。

87、如何查看在weblogic中已经发布的EJB?

可以使用管理控制台,在它的D eplo ym ent中可以查看所有已发布的EJB

88、CO RBA是什么?用途是什么?

CO RBA 标准是公共对象请求代理结构(Co mm on Object R equest B ro k er

A rchitecture),由对象管理组织 (Object Manage m ent G roup,缩写为 OM G)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。 其目的为:用不同的程序设计语言书写在不同的进程中运行,为不同的操作系统开发。

89、说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法Session F acade P attern:使用Session B ean访问E ntit yB ean

Message F acade P attern:实现异步调用

EJB Co mm and P attern:使用Co mm and J ava B eans取代Session B ean,实现轻量级访

D ata Transfer Object F actor y:通过D TO F actor y简化

E ntit yB ean数据提供特性

G eneric A ttribute A ccess:通过A ttibute A ccess接口简化E ntit yB ean数据提供特性

B usiness I nterface:通过远程(本地)接口和B ean类实现相同接口规范业务逻辑一致性

EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。

90、说说在weblogic中开发消息B ean时的persistent与non-persisten的差别

persistent方式的M DB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而J MS 服务器依然会将消息在此M DB可用的时候发送过来,而non-persistent方式的消息将被丢弃。

91、Servlet执行时一般实现哪几个方法?

public void init(ServletConfig config)

public ServletConfig getServletConfig()

public String getServlet I nfo()

public void service(Servlet R equest request,Servlet R esponse response)

public void destro y()

92、j2ee常用的设计模式?说明工厂模式。

J ava中的23种设计模式:

F actor y(工厂模式), B uilder(建造模式), F actor y Method(工厂方法模式),

P rotot y pe(原始模型模式),Singleton(单例模式), F acade(门面模式),

A dapter(适配器模式),

B ridge(桥梁模式), Co m posite(合成模式),

D ecorator(装饰模式), F l y weight(享元模式), P ro xy(代理模式),

Co mm and(命令模式), I nterpreter(解释器模式), V isitor(访问者模式),

I terator(迭代子模式), Mediator(调停者模式), Me m ento(备忘录模式),Observer(观察者模式), State(状态模式), Strateg y(策略模式),

Te m plate Method(模板方法模式), Chain Of R esponsibleit y(责任链模式)

工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,

该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。

93、EJB需直接实现它的业务接口或Ho m e接口吗,请简述理由。

远程接口和Ho m e接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。

94、排序都有哪几种方法?请列举。用JAVA实现一个快速排序。

排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)快速排序的伪代码。

//使用快速排序方法对a[ 0 :n- 1 ]排序

从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点

把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点

递归地使用快速排序方法对left 进行排序

递归地使用快速排序方法对right 进行排序

所得结果为l e f t +m i d d l e + r i g h t

95、请对以下在J2EE中常用的名词进行解释(或简单描述)

web容器:给处于其中的应用程序组件(J S P,S ERVLE T)提供一个环境,使

J S P,S ERVLE T直接更容器中的环境变量接**互,不必关注其它系统问题。主要有W EB服务器来实现。例如:TOMC A T,W EBL O GI C,W EB S P H ERE等。该容器提供的接口严格遵守J2EE规范中的W EB APPLI C A T I O N 标准。我们把遵守以上标准的W EB服务器就叫做J2EE 中的W EB容器。

EJB容器:E nterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。

J N DI:(J ava N a m ing &D irector y I nterface)JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。

J MS:(J ava Message Service)JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。

J T A:(J ava Transaction API)JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。

JAF:(J ava A ction F ra m e W or k)JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。

R M I/II O P:(R e m ote Method I nvocation /internet对象请求中介协议)他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。R M I是JAVA特有的。

96、JAVA语言如何进行异常处理,关键字:throws,throw,tr y,catch,finall y分别代表什么意义?在tr y块中可以抛出异常吗?

J ava通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在J ava中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一

个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。J ava的异常处理是通过5个关键词来实现的:

tr y、catch、throw、throws和finall y。一般情况下是用tr y来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或

最后(finall y)由缺省处理器来处理。

用tr y来指定一块预防所有"异常"的程序。紧跟在tr y程序后面,应包含一个catch子句

来指定你想要捕捉的"异常"的类型。

throw语句用来明确地抛出一个"异常"。

throws用来标明一个成员函数可能抛出的各种"异常"。

F inall y为确保一段代码不管发生什么"异常"都被执行一段代码。

可以在一个成员函数调用的外面写一个tr y语句,在这个成员函数内部写另一个tr y语

句保护其他代码。每当遇到一个tr y语句,"异常"的框架就放到堆栈上面,直到所有的

tr y语句都完成。如果下一级的tr y语句没有对某种"异常"进行处理,堆栈就会展开,直

到遇到有处理这种"异常"的tr y语句。

java面试笔试题大汇总(2) [转]

97、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

可以。必须只有一个类名与文件名相同。

98、M V C的各个部分都有那些技术来实现?如何实现?

M V C是Model-V iew-Controller的简写。"Model" 代表的是应用的业务逻辑(通过

J ava B ean,EJB组件实现), "V iew" 是应用的表示面(由J S P页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,

处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

99、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()

和suspend()方法为何不推荐使用?

有两种实现方法,分别是继承Thread类与实现R unnable接口

用s y nchroni z ed关键字修饰同步方法

反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处

于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使

用任何一个锁定的资源,就会造成死锁。所以不应该使用suspend(),而应在自己的Thread类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起,便用wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notif y()重新启动线程。100、java中有几种类型的流?JD K为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

字节流,字符流。字节流继承于I nputStrea m OutputStrea m,字符流继承于

I nputStrea mR eader OutputStrea m W riter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

101、java中会存在内存泄漏吗,请简单描述。

会。如:int i,i2; return (i-i2); //when i为足够大的正数,i2为足够大的负数。结果会造

成溢位,导致错误。

102、java中实现多态的机制是什么?

方法的重写Overriding和重载Overloading是J ava多态性的不同表现。重写Overriding 是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。103、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

对于G C来说,当程序员创建对象时,G C就开始监控这个对象的地址、大小以及使用情况。通常,G C采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当G C确定一些对象为"不可达"时,G C就有责任回收这些内存空间。可以。程序员可以手动执行S y ste m.gc(),通知G C运行,但是J ava语言规范并不保证G C一定会执行。

104、静态变量和实例变量的区别?

static i = 10; //常量

class A a; a.i =10;//可变

105、什么是java序列化,如何实现java序列化?

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

序列化的实现:将需要被序列化的类实现Seriali z able接口,该接口没有需要实现的方法,i m ple m ents Seriali z able只是为了标注该对象是可被序列化的,然后使用一个输出流(如:F ileOutputStrea m)来构造一个ObjectOutputStrea m(对象流)对象,接着,使用ObjectOutputStrea m对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

106、是否可以从一个static方法内部发出对非static方法的调用?

不可以,如果其中包含对象的m ethod();不能保证对象初始化.

107、写clone()方法时,通常都有一行代码,是什么?

Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。

108、在JAVA中,如何跳出当前的多重嵌套循环?

用brea k; return 方法。

109、L ist、Map、Set三个接口,存取元素时,各有什么特点?

L ist 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存k e y-value值,value可多值。

110、J2EE是什么?

J2EE是Sun公司提出的多层(m ulti-diered),分布式(distributed),基于组件(co m ponent-base)的企业级应用模型(enterpriese application m odel).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,B usiness层和组件,企业信息系统(EI S)层。

111、U M L方面

标准建模语言U M L。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图。

112、说出一些常用的类,包,接口,请各举5个

常用的类:B uffered R eader B uffered W riter F ile R eader F ile W irter String I nteger

常用的包:https://www.wendangku.net/doc/0e10441643.html,ng java.awt java.io java.util java.sql

常用的接口:R e m ote L ist Map D ocu m ent N ode L ist

113、开发中都用到了那些设计模式?用在什么场合?

每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了M V C的设计模式。用来开发J S P/Servlet或者J2EE的相关应用。简单工厂模式等。

114、jsp有哪些动作?作用分别是什么?

J S P共有以下6种基本动作 jsp:include:在页面被请求的时候引入一个文件。

jsp:use B ean:寻找或者实例化一个J ava B ean。 jsp:set P ropert y:设置J ava B ean的属性。jsp:get P ropert y:输出某个J ava B ean的属性。 jsp:forward:把请求转到一个新的页面。jsp:plugin:根据浏览器类型为J ava插件生成O BJE CT或E M BED标记。

115、A non ym ous I nner Class (匿名内部类) 是否可以e x tends(继承)其它类,是否可以i m ple m ents(实现)interface(接口)?

可以继承其他类或完成其他接口,在swing编程中常用此方式。

116、应用服务器与W EB S ERVER的区别?

应用服务器:W eblogic、To m cat、J boss

W EB S ERVER:II S、A pache

117、B S与CS的联系与区别。

C/S是Client/Server的缩写。服务器通常采用高性能的P C、工作站或小型机,并采用大型数据库系统,如Oracle、S y base、I nfor m i x或 S QL Server。客户端需要安装专用的客户端软件。

B/S是B rower/Server的缩写,客户机上只要安装一个浏览器(B rowser),如

N etscape N avigator或I nternet Ex plorer,服务器安装Oracle、S y base、I nfor m i x或 S QL Server等数据库。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。浏览器通过Web Server 同数据库进行数据交互。

C/S 与B/S 区别:

1.硬件环境不同:

C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.

B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行

2.对安全要求不同

C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.

B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。

3.对程序架构不同

C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑. B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求B/S结构的程序架构是发展的趋势, 从MS的.N et系列的B i z Tal k2000

Ex change 2000等, 全面支持网络的构件搭建的系统. S U N 和IB M推的J ava B ean 构件技术等,使 B/S更加成熟.

4.软件重用不同

C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.

B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子

5.系统维护不同

C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统

B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.

6.处理问题不同

C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统

B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小.

7.用户接口不同

C/S 多是建立的W indow平台上,表现方法有限,对程序员普遍要求较高

B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本.

8.信息流不同

C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低

B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更像交易中心。

118、LI N U X下线程,GDI类的解释。

LI N U X实现的就是基于核心轻量级进程的"一对一"线程模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。

GDI类为图像设备编程接口类库。

119、ST RU TS的应用(如ST RU TS架构)

Struts是采用J ava Servlet/J avaServer P ages技术,开发W eb应用程序的开放源码的fra m ewor k。 采用Struts能开发出基于M V C(Model-V iew-Controller)设计模式的应用构架。 Struts有如下的主要功能: 一.包含一个controller servlet,能将用户的请求发送到相应的A ction对象。 二.J S P自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。 三.提供了一系列实用对象:X M L处理、通过J ava reflection API s自动处理J ava B eans属性、国际化的提示和消息。

120、J do是什么?

JD O是J ava对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JD O提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDB C API的使用)。这些繁琐的例行工作已经转移到JD O产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JD O很灵活,因为它可以在任何数据底层上运行。JDB C只是面向关系数据库(RDB MS)JD O更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、X M L 以及对象数据库(O DB MS)等等,使得应用可移植性更强。

121、内部类可以引用他包含类的成员吗?有没有什么限制?

一个内部类对象可以访问创建它的外部类对象的内容

122、W EB S ERVI C E名词解释。J S W DL开发包的介绍。JA X P、JA X M的解释。SO AP、UDDI,W S DL解释。

W eb Service W eb Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得W eb Service能与其他兼容的组件进行互操作。

JA X P(J ava API for X M L P arsing) 定义了在J ava中使用D OM, S A X, X S L T的通用的接口。这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码。

JA X M(J ava API for X M L Messaging) 是为SO AP通信提供访问方法和传输机制的API。W S DL是一种X M L格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。

SO AP即简单对象访问协议(Si m ple Object A ccess P rotocol),它是用于交换X M L编码信息的轻量级协议。

UDDI 的目的是为电子商务建立标准;UDDI是一套基于W eb的、分布式的、为W eb Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的W eb Service注册,以使别的企业能够发现的访问协议的实现标准。

JAVA代码查错

1.

abstract class N a m e {

private String na m e;

public abstract boolean isStupid N a m e(String na m e) { }

}

大侠们,这有何错误?

答案: 错。abstract m ethod必须以分号结尾,且不带花括号。

2.

public class So m ething {

void doSo m ething () {

private String s = "";

int l = s.length();

}

}

有错吗?

答案: 错。局部变量前不能放置任何访问修饰符 (private,public,和protected)。final可以用来修饰局部变量

(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和m ethod 而非variable)。

3.

abstract class So m ething {

private abstract String doSo m ething ();

}

这好像没什么错吧?

答案: 错。abstract的m ethods不能以private修饰。abstract的m ethods就是让子类i m ple m ent(实现)具体细节的,怎么可以用private把abstract

m ethod封锁起来呢? (同理,abstract m ethod前不能加final)。

4.

public class So m ething {

public int addOne(final int x) {

return ++x;

}

}

这个比较明显。

答案: 错。int x被修饰成final,意味着x不能在addOne m ethod中被修改。

5.

public class So m ething {

public static void m ain(String[] args) {

Other o = new Other();

new So m ething().addOne(o);

}

public void addOne(final Other o) {

o.i++;

}

}

class Other {

public int i;

}

和上面的很相似,都是关于final的问题,这有错吗?

答案: 正确。在addOne m ethod中,参数o被修饰成final。如果在addOne m ethod里我们修改了o的reference

(比如: o = new Other();),那么如同上例这题也是错的。但这里修改的是o的m e m ber vairable

(成员变量),而o的reference并没有改变。

6.

class So m ething {

int i;

public void doSo m ething() {

S y ste m.out.println("i = " + i);

}

}

有什么错呢? 看不出来啊。

答案: 正确。输出的是"i = 0"。int i属於instant variable (实例变量,或叫成员变量)。instant variable有default value。int的default value是0。

7.

class So m ething {

final int i;

public void doSo m ething() {

S y ste m.out.println("i = " + i);

}

}

和上面一题只有一个地方不同,就是多了一个final。这难道就错了吗?

答案: 错。final int i是个final的instant variable (实例变量,或叫成员变量)。final的instant variable没有default value,必须在constructor (构造器)结束之前被赋予一个

明确的值。可以修改为"final int i = 0;"。

8.

public class So m ething {

public static void m ain(String[] args) {

So m ething s = new So m ething();

S y ste m.out.println("s.doSo m ething() returns " + doSo m ething());

}

public String doSo m ething() {

return "D o so m ething ...";

}

}

看上去很完美。

答案: 错。看上去在m ain里call doSo m ething没有什么问题,毕竟两个m ethods都在同一个class里。但仔细看,m ain是static的。static m ethod不能直接call non-static

m ethods。可改成"S y ste m.out.println("s.doSo m ething() returns " + s.doSo m ething());"。同理,static m ethod不能访问non-static instant variable。

9.

此处,So m ething类的文件名叫OtherThing.java

class So m ething {

private static void m ain(String[] so m ething_to_do) {

S y ste m.out.println("D o so m ething ...");

}

}

这个好像很明显。

答案: 正确。从来没有人说过J ava的Class名字必须和其文件名相同。但public class的名字必须和文件名相同。

10.

interface A{

int x = 0;

}

class B{

int x =1;

}

class C e x tends B i m ple m ents A {

public void p X(){

史上最全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面向对象精华总结教学文案

j a v a面向对象精华总 结

Java面向对象精华总结 面向对象是相对面向过程而言的,面向过程强调的是功能行为,面向对象是将功能封装进对象,强调具备了功能的对象。 面试官若问什么是面向对象(开放式问题,回答必须有自己的体会): 1、面向对象是一种思想,可以使复杂的问题简单化,可以使我们从执行者变成 指挥者 2、结合实际场景举个例子说明:面试官就是在用面向对象的思想思考问题,公 司里面现在有招人的需求,说明公司现在的业务量比较大,代表着公司在蓬勃发展,你需要找一些具有专业编程经验的人来帮你完成公司的工作,我就是那个对象,我具备专业编程的功能,你就是在指挥我做事情,就是使用我的功能,来为公司创造效益。【万物皆对象】 面向对象三大特征:封装、继承、多态 类和对象的关系: 类:对现实生活中事物的描述 对象:就是这类事物,实实在在存在个体 描述事物就是描述事物的属性(对应类中变量)和行为(对应类中方法),属性和行为共同称为类的成员(成员变量和成员方法) 成员变量作用于整个类中,局部变量作用于函数中,或者语句中 成员变量在堆内存中,因为对象的存在,才在内存中存在,局部变量:存在栈内存中 封装(Encapsulation):是指隐藏对象的属性和实现细节,仅对外提供公共访问方式

好处:将变化隔离、便于使用、提高重用性、提高安全性 封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问 private(私有):权限修饰符,用于修饰类中的成员(成员变量,成员函数),私有只在本类中有效。 static用于修饰成员(成员变量和成员函数) 被修饰的成员:随着类的加载而加载,优先于对象存在,被所有对象所共享,可以直接被类名调用。类名.静态成员【方法区、共享区、数据区】----存放类中的方法和共享数据。 什么时候定义静态函数:当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的,用类名直接调用。 Eg:获取数组的最大值 class ArrayTool { public static void main(String[] args) { int[] arr={5,8,4,1,3,5,8,77,55,99}; int max=GetMax.getMax(arr); System.out.println("max="+max); } } class GetMax { public static int getMax(int[] arr) { int max=0; for(int x=0;xarr[max]) max=x; } return arr[max];

java的心得体会[工作范文]

java的心得体会 篇一:java初学者学习心得 学习Java心得体会 学习了一学期的Java课程,觉得是该总结自己的心得体会了。开始学习任何一门课,兴趣最重要。一直觉得自己在学计算机编程语言,学习了很多,但每门语言都停留在知识边缘地带,都没深入到它们的精华部分,对它们的精华部分知之甚少,于是趁学校开设这门课,并且有自己的老师讲解,还有了上机的机会,比自己自学省事多了,于是鼓足信心,开始了漫长的java征途。 还记得我编写的第一个经典程序“hello Word”。从那时起我已开始走进Java的世界。当时自己不是很理解为什么main方法一定要这样来定义public static void main,能不能不这样写?问了好多同学,他们告诉我的答案是一样的“java本身要求就是这样子的”,但我自己不甘心,就进行了下面的好多操作:把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public 取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,

看看运行结果如何。结果把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么了main方法是这样定义的了。接着在以后的学习中我也采用这样的方法解决问题,却发现自己的速度比别人慢了好多,我就把自己的课余时间也分一部分给了java。 因为基础是最重要的,只有基础牢固才有可能对后面的学习有更加深刻的认识! 学习一门新的语言,参考书是离不开的。听老师说订的教材偏难,不适合我们初学者,于是我在图书馆借了参考书(一本篇幅较短的入门书来学习那些最简单、最基本的东西,包括学习Java语法等)。同时,对一个最简单的程序也应该多去调试,多想想如果改动一下会出现什么结果?为什么必须那样写?多去想想这些问题然后去操作,会让你有更多的收获。这样反复地思考是很有用的。 在学习Java的语法时,Java的语法是类似c语言的,所以学习的比较轻松。唯一需要注意的是有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么要用,怎么用,和同学一起讨论了好久才得以解决。 在学习Java的面向对象的编程语言的特性。比如继承,构造器,抽象类,接口,方法的多态,重载,覆盖,Java的异常处理机制。对于一个没有面向对象语言背景的人来说,

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编程基础知识点汇总及习题集》--答案

目录 第一章 Java入门 (2) 第二章 Java基础 (5) 第三章条件转移 (16) 第四章循环语句 (22) 第五章方法 (28) 第六章数组 (35) 第七章面向对象 (44) 第八章异常 (65)

第一章Java入门 知识点汇总 1、JAVA 三大体系 ?Java SE:(J2SE,Java2 Platform Standard Edition,标准版),三个平台中最核心 的部分,包含Java最核心的类库。 ?JavaEE:(J2EE,Java 2 Platform, Enterprise Edition,企业版),开发、装 配、部署企业级应用,包含Servlet、JSP、 JavaBean、JDBC、EJB、Web Service等。 ?Java ME:(J2ME,Java 2 Platform Micro Edition,微型版),用于小型电子设备 上的软件开发。 2、JDK,JRE,JVM的作用及关系 作用 ★JVM:保证Java语言跨平台 ★JRE:Java程序的运行环境 ★JDK:Java程序的开发环境 关系 ★JDK:JRE+工具 ★JRE:JVM+类库 3、JDK环境变量配置 ?path环境变量:存放可执行文件的存 放路径,路径之间用逗号隔开 ?classpath环境变量:类的运行路径, JVM在运行时通过classpath加载需要 的类 4、重点掌握两个程序 ?javac.exe:Java编译器工具,可以将编 写好的Java文件(.java)编译成Java 字节码文件(.class); ?java.exe:Java运行工具,启动Java虚 拟机进程,运行编译器生成的字节码 文件(.class) 5、一切程序运行的入口 public static void main(String args []){ System.out.println(“Hello World!”); } 课堂笔记

java面向对象知识点总结

j a v a面向对象知识点总 结 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

1 类和对象 类: 类是用来描述一类事物的共性内容的, 类是抽象的; 创建类,如何描述 属性功能 用变量来描述属性 用方法来描述功能 对象: 就是现实中具体的事物,对象是具体的; 创建对象 类名对象名 = new 类名(); 如何通过对象访问类中属性和方法呢 对象名.变量名 对象名.方法名(); 只要是new的对象,就是新创建的,就会在内存中开辟一段单独的空间匿名对象 创建的对象没有赋值给具体的变量; 所以给匿名对象的属性赋值是没有任何意义的; 匿名对象使用场景

1 调用方法 2 作为参数传递 3 添加进容器中 This 关键字 This. 类中的普通方法访问到的成员前边都有this.这个关键字This. 就代表当前对象, 普通方法, 创建对象调方法, 谁调用就代表谁 This(); 可以用来在构造函数中调用本类与之相对应的构造函数使用注意事项: 1 this() 只能是构造函数的第一条执行语句 2 this() 不能在构造函数之间相互调用 3 this() 不能调用自己 构造函数(方法) 构造函数的作用 用来给对象进行初始话的(初始化就是指给对象的各个属性赋值) 构造函数何时执行 对象一创建就会调用与之相对应的构造函数

构造函数语法 修饰符没有返回值类型类名(参数列表){ 具体执行的代码 } 构造函数自动添加 当一个类中我们没有明确指定构造函数的话,jvm会自动帮我们添加一个空参数的构造, 如果我们指定了,就不添加了 构造函数和普通函数的区别 执行时机不同 对象一创建就会调用与之相对应的构造函数 普通函数只有被调用才会执行 return 1 就是用来在方法中返回具体结果(结果类型必须和方法的返回值类型一致) 2 即便方法的返回值类型是void,方法中也可以出现 return; 3 构造函数中也可以有return关键字 成员变量和局部变量 1 作用范围不同, 成员变量是定义在类中的,在整个类中都起作用 局部变量是定义在方法中的,在所在代码块起作用

完成Java面向对象程序设计实验课的心得体会范文

Java面向对象程序设计实验课的心得体会经过这几周对Java面向对象程序设计的学习,让我更加了解到Java学习的重要性。 在实验课上,我们完成多个实验,在这个阶段的学习中,我从认识到熟悉,而后到能够自主运用。通过对Java的了解,我发现它确实有很多方便之处,它集抽象性、封装性、继承性和多态性于一体,实现了代码重用和代码扩充,提高了软件开发的效率。对于我们这个专业来说学好Java语言是很重要的,所以在实验的过程中我都尽力理解java编程思想、掌握基本技巧,尽量学到最多的知识。 学习程序设计的基本目的就是培养描述实际问题的程序化解决方案的关键技能,Java面向对象程序设计是一门实践性比较强的课程,在实际中,我们必须把理论和实践结合起来。在实验中,我们理解理论课上的知识,然后运用到实际的操作中,我们必须在现有的理论的基础上,进行实践。多次实验后,也让我看到了现在学习的一个很大弱点:只听不练,永远不会熟练运用;空记技巧,忽略思想,会在多变的习题中十分无奈。 Java思想:Java是一门面向对向语言,他定义一切都是对象面向对象,就是面对现实; 现实中的一切都是对象,他们有分类,就产生了“类”; 他们有不同,类和类之间的不同,使用类来区分; 同一个类中不同的对象的区别,使用成员区分。

所以,面向对象的内部逻辑是分类。 面向对象编程思想就象数学上的一些概念,如:空间、群、环、域等 原始的编程思想就象古典数学,人们只在一个集合上探讨问题,没有系统的方法(即运算)定义,于是仁者见仁、智者见智,这样在一定程度上造成了理论的一种混乱局面,不利于科学的发展。于是近代数学向公理化发展,这是什么意思呢?就是说,人们除了在限定论域(即上面的集合,面向对象也有此概念)外,还在此论域上加进了一套通用的、公认的运算(方法);集合加上集合上定义的运算就构成了数学上的空间、群等,在计算机领域里,就变成为“类”。这种集合上定义了操作的东西利用起来就方便多了,这使得人们讨论问题时都在给定集合的运算能力上下工夫,即有通用性可事半功倍。 面向对象的编程思想就要想近世代数的分析思想,首先要确定“论域”,即工程所涉及到的所有的“对象”,然后要分类处理,把隶属同一类别的对象集合在一起(做成一个集合),定义他们之间的运算性质及可以进行的操作,这样就构建了一个类,当然以后用到这个类的对象时都要通过已经定义了的操作来完成各项功能,这就是常要求的类的“类的成员变量要通过共有函数来操作”。 我想真正的面向对象编程思想不应该是编程思想,应该是面向对象的分析方法才对! 我的理解: 1、将分析过程为抽象的过程:简言之:分成多个小问题(组成部分),

JAVA实践心得体会

心得体会 此次只实训了短短的三周。虽说时间很短,但其中的每一天都使我收获很大、受益匪浅, 它不但极大地加深了我对一些理论知识的理解,不仅使我在理论上对java有了全新的认识, 在实践能力上也得到了提高,真正地做到了学以致用,更学到了很多做人的道理,对我来说 受益非浅。除此以外,我知道了什么叫团队,怎样和团队分工合作;同时我还学会了如何更好 地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。这也是第一 次让我亲身感受到理论与实际的相结合,让我大开眼界。也是对以前所学知识的一个初审吧! 这次实训对于我以后学习、找工作也是受益菲浅的,在短短的三周中相信这些宝贵的经验会 成为我今后成功的重要的基石;这对于我的学业,乃至我以后人生的影响无疑是极其深远的。 这次实训虽然是我们的第一次,不过同学们表现不错,由此看来,我们在进入大学的这 几个月里学到了不少的专业知识,只是自己感觉不到而已。对于所学专业,我们不能过于自 卑和担忧,否则会妨碍自己学习。实训是学习java的重要环节,有利于我们巩固专业知识、 掌握工作技能,提高就业筹码。 我把本次为期三周的实训看作是“理论与实践相结合的桥梁”。通过这周的实训和学习, 我知道了此次实训的目的,也清楚目前自己的不足,那就是缺乏相应的知识与经验,对所学 的专业知识不能够很好地运用于实践操作。正所谓“百闻不如一见”,经过这次自身的切身实 践,我才深切地理会到了“走出课堂,投身实践”的必要性。平时,我们只能在课堂上与老 师一起纸上谈兵,思维的认识基本上只是局限于课本的范围之内,也许就是这个原因就导致 我们对专业知识认识的片面性,使得我们只知所以然,而不知其之所以然!限制了我们网络 知识水平的提高。但是课本上所学到的理论知识是为我们的实际操作指明了方向、提供相应 的方法,真正的职业技巧是要我们从以后的实际工作中慢慢汲取的。而针对实际操作中遇到 的一些特殊的问题,我们不能拘泥于课本,不可纯粹地“以本为本”。 在这次实训中我得到了许多收获,我第一次体会到java工程师的工作是什么样子的,也 发现了很多不曾注意到的细节,在实训的演示过程中,我对作为一名java工程师注意的事项 应该从小事做起、从基本做起。把职业能力训练与职业素质有机的结合起来。相信这对我接 下来学习专业知识会起到很有效的帮助,在接下来的几个月里,我会以作为一名职业人的身 份在这几个方面要求自己,严格自我,向java工程师靠近。 而经过这次实训,让我明白如果是一个完整项目的开发,必须由团队来分工合作,否则, 即费力又费时还做不好这个项目。因此不管在工作中还是在生活中要和老师、同学保持良好 的关系是很重要的。做事首先要学做人,要明白做人的道理,如何与人相处是现代社会的做 人的一个最基本的问题。对于自己这样一个即将步入社会的人来说,需要学习的东西很多, 他们就是最好的老师,正所谓“三人行,必有我师”,我们可以向他们学习很多知识、道理。 实训结束了感觉虽然辛苦,但很充实。我想这就是java工程师的工作。我也体会到java 工程师成功地完成一个任务的那种兴奋,那种小有成就的感觉是只有置身其中的人才能 体会的。 总之,这次实训为我提供了与众不同的学习方法和学习体会,从书本中面对现实,为我 将来走上社会打下了扎实的基础。作为在校计算机专业的学生,现在我能做的就是吸取知识, 提高自身的综合素质,提高自己的职业技能,自己有了能力,到时候才会是“车到山前必有 路”。我相信在不久的未来,会有属于我自己的一片天空。 我希望计算机专业的同学在以后的学习或工作中以务实的态度给提供更多的机会锻炼自 己,为大家的成才与就业奠定坚实的基础;并希望同学们要做好角色定位,将自己所学的知识, 学熟、学精。 多学习和收集与项目有关的资料,来提高自己的业务水平,同时多请教经验丰富的老师, 使他们好的经验能够对自己起到借鉴作用,在他们的帮助下,能够很快的培养自己的管理技

JAVA技术--Java基础知识常见考试题JAVA技术.doc

一、单选题 1.对类:(B) public class Test( //...do something } 下面那个正确地定义了类Test的构造函数。 A)public void Test() () B)publicTest()(} C ) public static Test() (} D) publicTest(); 2.下面哪个函数是public void example()(...)的重载函数。(A) A)public void example( float f)(...) B)public int example() (...) C)public void example2()(...} D)public int example_overLoad ()(...) 3.下面的代码段中,执行之后i和j的值是_C_。 int i = 1; intj; j = i++; A)1, 1 B) 1,2 C) 2, 1 D) 2,2 4.以下for循环的执行次数是_B o for(int x=0,y=0;(y !=0)&&(x<4) ;x++); A)无限次B) 一次也不执行 C)执行4次D)执行3次 5.下面程序的输出结果是—C o public class People( String name; int id; public People( String str, int n )( name = str; id = n; } public String toString(){ return id + " :” + name; } public String print()(

JavaWeb期末总结

第一章Web开发基础知识(简单描述)表单(续) 表单元素

form body
元素括起整个表单,并给出一些基本定义。表单仅占用HTML文档的部分空间;实际上,一个HTML文档可以包含几个独立的、完成不同功能的表单。method指定了信息传递给HTTP服务器的方法;action给出与处理提交信息的脚本相关的URL(如“registinfor.asp”,“registinfor.jsp”)。 表单输入元素 ?用来把不同的字段放在表单里,以便用户输入信息。 ?name属性指定该字段在某个表单中的唯一名称; ?可选的value属性给出该标记的默认值。 ?在提交表单时,向Web服务器呈上以一组用“?”开头并用“&” 号分开的一组“名字=值”形式的信息,如 http://…/Scriptname?name=me&address=here&time=now ?type属性给出所使用标记的样式,“string”可以是: ?CHECKBOX(复选框)。 ?RADIO(单选按钮) ?TEXT(单行的文本输入栏)。 ?IMAGE(图像放在表单里) ?SUBMIT(提交按钮) ?RESET(清除按钮) ?HIDDEN(在表单中保留不供显示的内容) ?FILE(上传文件) 第二章Servlet开发 1.什么Servlet Servlet是用Java语言编写的运行在服务器端的小应用程序,能够接收Web客户端的请求,并能对Web客户端进行响应,通常是通过HTTP (HyperText Transfer Protocol)协议进行工作的。(可以认为Servlet是服务 器端的一个动态Java程序,用户通过访问这个程序获取服务器的服务。) 2. Servlet的主要方法 Servlet是一个Java类,通常会有3类方法,分别是: init方法,用于初始化。 destroy方法,用于释放资源。 service方法,服务类方法,对用户的请求进行处理,并对用户进行响应,几乎所有处理功能都在这里完成。这类方法可以有多个,最常用的

JAVA基础学习心得

java基础学习心得 第一篇:java学习需要什么基础第二篇:java 基础要点总结学习java必看第三篇:java学习心得笔记第四篇:java学习心得第五篇:关于java学习的一点心得体会更多相关范文 java学习需要什么基础 随着java这种语言的广泛运用,越来越多从事开发的人员开始学习接触这门课程,那么,java学习需要什么基础?java刚刚入门应该接触哪些知识呢?java入门应该学习什么内容呢? 首先要说明的,java有三个大的方向(j2se,j2me,j2ee),走不同的方向可能学的技术和要花费的时间可能有所不同。我是搞web方向的(j2ee),我学java除了以前一些简单的c语言语法外,没有太多的编程基础,我以前一直认为编程要有很强的数学和英语功底,现在看来这也不是必需,只要有一定的逻辑思维能力和掌握一些常见的计算机词汇,还需要具备一定的自学能力,因为软件开发工作是需要不断学习的。 其次,我想说下我的学习过程,我在网上下载了java教学视频,将java基础从头到尾看了一遍,将上面的代码基本上跟着敲了一遍,然后我把java基础的书看了一遍,一本书看完包括上面的习题大概做一遍差不多一个月。这时你对java的语法和基本知识应该都有比较充分的认识和了解了。 然后,再做一些小项目,跟着视频上的步骤做,最好能自己独立再写写,能写多少是多少。一般网上比较新的的项目库很不好找,因

为项目库是需要实时更新以保证适合市场需要的,而它的升级和更新是需要钱的,所以去报一个培训中心利用它强大的项目库进行实战操作是个很好的选择。 操作一段时间之后,你对java已经有了一定的感觉,就要开始选择你的发展方向了。我选择了j2ee,如果你也是想走这条路,你可以接着看关于j2ee的视频,先是html+js+css,然后jsp+serverlet,再看struts+spring+hibernate等一些框架。同时可以看一些大的培训机构的关于设计模式的视频,最好是it牛人录制的,当然数据库也得学下,然后加上做项目的经验累积,半年就差不多可以出去工作了。 如果你做其他方向的话我不是很了解。再说下我个人的看法,j2me 和j2se好像前景没j2ee好,不过我有同事是做android平台开发的,这个不需要j2ee的知识,你可以去买本android的看看,这个方向貌似很有前途,你应该也常听说android平台的手机,如果走这方向可以再学一下linux知识和c的知识,因为这个平台底层是这些,这也不是必要。 说了这么多希望对大家能有所帮助。最后再说一句,学东西,最重要的是动手,只有动手做了才能深深的理解,牢牢的记住。 java基础 1.java程序是由1个或者n个class组成的程序 2.编写---javac进行编译------java进行执行

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的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目

java面向对象精华总结

Java面向对象精华总结 面向对象是相对面向过程而言的,面向过程强调的是功能行为,面向对象是将功能封装进对象,强调具备了功能的对象。 面试官若问什么是面向对象(开放式问题,回答必须有自己的体会): 1、面向对象是一种思想,可以使复杂的问题简单化,可以使我们从执行者变成指挥者 2、结合实际场景举个例子说明:面试官就是在用面向对象的思想思考问题,公司里面现在 有招人的需求,说明公司现在的业务量比较大,代表着公司在蓬勃发展,你需要找一些具有专业编程经验的人来帮你完成公司的工作,我就是那个对象,我具备专业编程的功能,你就是在指挥我做事情,就是使用我的功能,来为公司创造效益。【万物皆对象】面向对象三大特征:封装、继承、多态 类和对象的关系: 类:对现实生活中事物的描述 对象:就是这类事物,实实在在存在个体 描述事物就是描述事物的属性(对应类中变量)和行为(对应类中方法),属性和行为共同称为类的成员(成员变量和成员方法) 成员变量作用于整个类中,局部变量作用于函数中,或者语句中 成员变量在堆内存中,因为对象的存在,才在内存中存在,局部变量:存在栈内存中 封装(Encapsulation):是指隐藏对象的属性和实现细节,仅对外提供公共访问方式 好处:将变化隔离、便于使用、提高重用性、提高安全性 封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问private(私有):权限修饰符,用于修饰类中的成员(成员变量,成员函数),私有只在本类中有效。 static用于修饰成员(成员变量和成员函数) 被修饰的成员:随着类的加载而加载,优先于对象存在,被所有对象所共享,可以直接被类名调用。类名.静态成员【方法区、共享区、数据区】----存放类中的方法和共享数据。什么时候定义静态函数:当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的,用类名直接调用。 Eg:获取数组的最大值 class ArrayTool { public static void main(String[] args) { int[] arr={5,8,4,1,3,5,8,77,55,99}; int max=GetMax.getMax(arr); System.out.println("max="+max); } } class GetMax { public static int getMax(int[] arr) { int max=0; for(int x=0;x

Java心得体会

Java学习心得 在学习了近一个学期java后,我有了一点自己的见解。Java是面向对象的,具有平台无关性。所以现在被广泛的应用于很多领域。也是因为老师在开始上课的时候就给我们讲过这些,所以带有兴趣和动力去学习java程序设计。 在开始学习java时,觉得有c语言做基础会比较容易一些。Java 区分大小写,在一开始调试别人的程序时,常会因为字母、空格等一些小的失误调试不出来,慢慢地随着练习的增多,这些低级错误也渐渐可以避免了。Java中类比较多,还有包等,一开始学起来觉得比较繁琐。 通过学习,对java有了一定的了解。Java的运行原理:Java是一门编译解释型语言,我们写好的Java程序经过编译后生成后缀名为class的文件,在经过Java虚拟机JVM对class文件进行解释运行,Java 程序才能运行起来。(需要JVM是它实现跨平台的关键,所以又说Java 是跨平台语言)。Java思想:Java是一门面向对向语言,他定义一切都是对象,例如小程序: 里边定义了两个类NewClass 和Student NewClass调用了Student 的add()方法。 课堂上老师根据课本讲的内容都是基础的,要想有进一步的提高,需要课下花时间去求助网络等方法。因为之前我没有太大的兴趣和充足的时间,所以只是学习课本基础知识。后来我从网络上学习了一些

关于java程序汇编的一些思想,有助于以后深入系统的学习。 具体而言,学习java其实就是学习程序设计,学习程序设计就需要接受一种编程思想。要掌握java的精华特性而且要知道是什么,比如,Interface和multi-thread。用interface是更好的多继承的模型,而多线程则是设计到语言一级的重要特性。要完全理解interface是为什么,用多线程又有几种常用的编程模型。学习语言是要应用的,所以在掌握基本的思想后要转化为应用。目前比较好的开发模式是采用自定向下的面向对象的设计,加上MVC的模式(MVC架构是"Model-View-Controller"的缩写,中文翻译为"模型-视图-控制器"。MVC 应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。)。首先要找出最顶层的对象(这往往是最难的),然后一层一层往下递归,记住每次应符合7+/-2的原则,因为我们人的短记忆就是这样。一般有图形用户界面的应从界面开始设计。在有了初步的设计模型之后,为了更好的设计程序,应该学习一下设计模式,例如体系结构模式(Layering分层,Pipe/Filter 管道或过滤器)、编程模式(比如Copy-on-Write)。懂了这些模式之后,就会对系统的整体结构有很好的把握,而学术上也有倾向一个系统完全可以由各种模式组合而成。对于程序设计,在初步对基本程序进行调试后,应该将纸上谈兵转化成实践。一般课本上的例子不能算是实践,只能知道一些语言特性的应用,而对于实际的工程来讲仅是冰山一角。对于像我们这样的初学者,应该在公认的论坛里面找一些比较经典的例子。比如用Java实现的HotDraw(源自SmallTalk),在

毕向东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期末知识点整理总结

Java期末知识点整理总结 计科2班苏锐师编号47 学号201330551464 第一章 Java语言概述 1. Java语言发展历史和现状及前景 2. Java语言的特点: 简单、面向对象、分布式、健壮性、结构中立、 安全性、可移植、解释的、高性能、多线程、多态性 3. Java虚拟机概念(JVM),Java程序的执行过程 4. Java应用程序分类:Application和Applet 5. Java程序的开发环境:JDK,IDE 第二章 Java数据类型及其运算 1. 标识符与保留字 1.2 标识符命名语法规则与Java推荐的标识符命名规则 1.3 Java中的关键字 2. 数据类型byte, short, int long, char, float, double, boolean 注意点:Java中所有数据类型是确定的,与平台无关,没有sizeof操作,其中特别注意char 类型是2字节Unicode编码,与C++ 不同;知道基本类型都有对应的默认值。 整型数的十进制、八进制、十六进制值的表示。 实型数的十进制、十六进制与科学计数法表示,注意实型常量默认类型为double型。 3. 运算符与表达式算术运算符: + - * / % ++ -- 关系运算符:> >= < <= == != 逻辑运算符:&& || !& | 注意短路计算与非短路计算的差别 位运算符: >> << >>> & | ^ ~ 要认识异或(^)与按位取反(~)运算符 赋值运算符: += -= *= /= %= &= |= ^= <<= >>= >>>= 要注意赋值运算符中包含了强制转换: 若: int k = 1; k += 44.232D; 则相当于: k = (int) ( k + 44.232D); 条件运算符:exp ?stat1 :stat2 要注意stat1与stat2要求类型相兼容且不能为void类型。运算符的优先级:算术运算 > 关系运算> 逻辑运算

java心得体会

java心得体会 篇一:JaVa学习心得 JaVa学习心得 从大三开始算,我学习java已经有一年的时间了,不过虽然时间长,但是对于现在的我还是一个初学者,懂不了多少的java初学者。期间曾迷茫过,曾困惑过,走了不少的弯路,老师布置的试验作业每次都是不会做,每次都是要问同学,这个代码什么意思啊?为什么用这条代码,用别的不行吗?甚至后来根本没耐心问,索性就复制同学的作业交上去。但是都是各种0分,害的同学也这样,不过他能找老师反驳,而我却没实力。。。渐渐的,我认识到这样下去是不行的,我必须改正自己的学习态度和方式。接下提到的就是我这一年来的java 学习心得。 刚一开始学习java时,我就已经学习过c语言,不过c语言学的不是很好,所以开始看到java的时候我很反感,看着源代码,都不知道失什么意思。看书的时候一看到源代码就头疼,因为根本看不懂。那段时间根本就是一无所获,在图书馆借了一本书,关java的语法特性,与别的语言相比的优点,什么跨平台,源代码公开,什么writeoncerunanywhere,能说得头头是道,可是一到具体的问题,想写一些具体的东西,问题就都来了,根本不知道该怎么下手。所以每次李旺老师布置的试验作业都没的按时完成。渐渐的时间过去了,一点

进展都没有,我都几乎要放弃了。而后又同学经常来宿舍跟我讲解,我很感谢他。慢慢的我也理解了一些知识。从他那里,我认识到,JaVa 是一门计算机语言,是人类发明的语言,应该比人类语言更容易学习,只要你有一种必胜学习JaVa 心态就可以成功。学习JaVa的方法:JaVa学习中,首先要做到课前、课后复习及预习,要时时保持一个清醒的头脑;多和同学沟通;互相学习;取长补短;在学习中做到帮助他人或他人帮助自己。学习java,的确要学习的东西很多,就像同学提到的。Java不像.net一家独大,Java的繁盛在于开源社区的庞大,这也带来了分支太多的问题,怎样选择一条好的学习路线,对于初学者来说,的确是一件很迷茫的事。其实不管java东西再多,总有规律可循。对于学习java基础的经验就是多做、多思考,基础知识的学习不能不求甚解,要追本溯源,弄清问题的本质。这样才能举一反三,由点及面。java的所有编程思路都是“面向对象”的编程。所以大家在往更高境界发展以前一定要打好基础,基础是王道。我们的基础要扎实扎实再扎实。所谓打好基础并不是说要熟悉所有的java代码。要了解java的结构。class,methode,object,各种套用import,extend让自己在结构上对java有个立体而且整体的了解。 学Java千万不要浮躁。说到浮躁,这也是一个很值得我深思的问题。我觉得我自己也有这样的倾向,不仅是我,估计大多数的人都有这个毛病。总是喜欢讨论什么语言最好,什么语言功能强大。这种讨论倒没有错,不过真正学习的时候,浮躁会使你失去很多。在学习过程中,

相关文档