Java语法和J2EE概念
来源:互联网 发布:淘宝卖家云标签 编辑:程序博客网 时间:2024/06/04 16:44
★Java和C++区别
Java语言让编程者无法找到指针来直接访问内存,并且增添了自动的内存管理功能。
Java不支持多重继承,但允许一个类继承多个接口。
Java除了基本数据类型之外,其余的都作为类对象,包括数组。并取消了c/c++中的结构和联合。
Java程序中所有的对象都是用new操作符建立在内存堆栈上。
Java不支持操作符重载。
Java不支持预处理功能。
Java不支持缺省函数参数。
Java不支持c++中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。
★Java和C++的语法对比学习
1) main 函数
<C++>
//自由浮动的函数
int main( int argc, char* argv[])
{
printf( "Hello, world" );
}
<Java>
// 每个函数都必须是一个类的一部分;当java <class>运行是一个特定类的主函数会被调用
// (因此你可以让每个类都有一个main函数,这在写单元测试是很有用)
class HelloWorld
{
public static void main(String args[])
{
System.out.println( "Hello, World" );
}
}
2) 类的声明
除了 java 不要求用分号外几乎是相同的。
<C++>
class Bar {};
<Java>
class Bar {}
3) 方法声明
都相同的, 除了在java中方法必须总是某个类的一部分,并且可能public/private/protected 作为修饰.且一般java中不会在类内只声明成员函数,而总是直接在类中实现成员函数。
4) 构造函数和析构函数
构造函数都是相同的 (即类的名字), java没有准确意义上的的析构函数
5) 静态成员函数和变量
方法声明是相同的, 但 java 提供静态初始化块来来初始化静态变量 (不需要在源文件中声明):
class Foo
{
static private int x; //也可以定义时赋值初始化
// 静态初始化块
{ x = 5; }
}
调用方法也不相同
<C++>
myClass::staticVar;
myClass::staticfun();
<Java>
myClass.staticVar;
myClass.staticfun();
6) 对象的声明
<C++>
// 在栈中
myClass x;
//或者在堆中
myClass *x = new myClass;
<Java>
// 总是在对堆中声明
// java中myClass x只是声明了对象,而不会为对象分配空间
// 对象名只是内存地址的标志,所以使用new分配空间时不用使用指针
myClass x = new myClass();
7) 继 承
<C++>
class Foo : public Bar
{ ... };
<Java>
class Foo extends Bar //只能公有继承
{ ... }
8) 类中修饰符
使用格式不一样。此外,java多了一个private protected修饰,相当于c++中的protected修饰。java中的protected修饰可以被同包中的其他类访问。
<C++>
public:
void foo();
void bar();
<Java>
public void foo(){};
public void bar(){};
9) 虚函数
<C++>
virtual int foo(); // 或者非虚函数写作 int foo();
<Java>
// 函数默认的就是虚函数; 用final关键字防止重载
int foo(); // 或者, final int foo();
10) 内存管理
大体上是相同的。使用new 来分配, 但是 java没有 delete,因为它有垃圾回收器。
11) NULL vs null
<C++>
// 初始化一个指针为 NULL
int *x = NULL;
<Java>
// 编译器将捕获使用未初始化的引用
//但是如果你因需要初始化一个引用而赋一个null,那么这是无效的
myClass x = null;
12) 基本数据类型
java有一点罗嗦: 你必须写 boolean而不止是 bool.
java还支持byte类型,相当于c++的char类型,都是1个字节的有符号数。java中的char类型则是2个字节的无符号数。
<C++>
bool foo;
<Java>
boolean foo;
13) 常 量
<C++>
const int x = 7;
<Java>
final int x = 7;
14) 抛异常
首先,java在编译器强制抛异常—如果你的方法可能会抛异常你必需明确报告。
java中凡是定义中已声明会抛出例外的方法,在调用时必须捕捉这种例外,否则编译器会报错。
<C++>
int foo() throw (IOException)
<Java>
int foo() throws IOException
15) 数 组
<C++>
int x[10];
// 或
int *x = new int[10];
// 使用 x,然后归还内存
delete []x;
<Java>
int[] x = new int[10]; //也可以写成int x[],不过前者更常用
// 使用 x, 内存有垃圾回收器回收或
//或在程序生命周期尽头归还给系统
16) 集合和迭代器
<C++>
迭代器是类的成员。范围的开始是<容器>.begin(), 结束是 <容器>.end()。 用++ 操作符递增, 用 *操作符访。
vector myVec;
for ( vector<int>::iterator itr = myVec.begin();
itr != myVec.end();
++itr )
{
cout << *itr;
}
<Java>
迭代器只是一个接口。 范围的开始是 <集合>.iterator,你必须用itr.hasNext()来查看是否到达集合尾。 使用itr.next()(是在c++中使用操作符++ 和*操作的结合)来获得下一个元素。
ArrayList myArrayList = new ArrayList();
Iterator itr = myArrayList.iterator();
while ( itr.hasNext() )
{
System.out.println( itr.next() );
}
// 或, 在java 5中
ArrayList myArrayList = new ArrayList();
for( Object o : myArrayList ) {
System.out.println( o );
}
17) 抽象类
<C++>
// 只需要包含一个纯虚函数
class Bar { public: virtual void foo() = 0; };
<Java>
// 语法上允许显示的声明!
abstract class Bar { public abstract void foo(); }
// 或者你也可以声明一个接口
interface Bar { public void foo(); }
// 然后让一个类继承这个接口:
class Chocolate implements Bar
{
public void foo() { /* do something */ }
}
18) 引用 vs 指针
<C++>
//引用不可改变,通过使用指针来获得更多的灵活性
int bar = 7, qux = 6;
int& foo = bar;
<Java>
// 引用是可变的,仅存储对象地址;
//没有指针类型
myClass x;
x.foo(); // error, x is a null ``pointer''
// 注意你要总是用 . 来访问域
19) 编 译
<C++>
// 编译
g++ foo.cc -o outfile
// 运行
./outfile
<Java>
// 编译foo.java文件中的类成<classname>.class javac foo.java
// 通过调用<classname>中的静态main方法来运行
java <classname>
20) 注 释
两种语言是一样的 (// 和 /* */ 可以用)
★J2EE概念
J2EE是网络应用的一个集成框架,能够满足低费用,高可用性,高可靠性以及扩展性的应用需求。它通过提供一个统一的开发平台,降低了开发多层应用的费用和复杂性,对现有应用程序集成提供了强有力的支持。
J2EE将电子商务应用分为4个层次,即客户层,Web层,业务层,企业信息系统层。其中,客户层可以使用浏览器访问Web层,或使用客户端程序直接访问业务层。JSP脚本和Servlet运行在Web层,接收浏览器请求,和运行在业务层的EJB进行必要的交互后返回标准的HTML页面。
目前常见的动态网页技术有4种:
CGI:用户可以使用多种语言如C/C++,VB等编写适合的CGI程序,然后放在Web服务器上运行,接收请求并处理返回结果。
ASP:没有自己专门的编程语言,而是使用VBScript,JavaScript等脚本来编写ASP的应用程序,可以嵌入HTML文件中。
PHP:是一种服务器端脚本语言,也是嵌入HTML文件的一种脚本语言。
JSP:它使用Java语言或JavaScript脚本作为编程脚本,可以嵌入HTML文件中。
J2EE相关概念:
Applet:是使用Java语言编写的小程序,但是不能独立运行,而必须嵌入HTML文件中在浏览器里执行。功能类似于JavaScript脚本,在客户端实现动态网页。
Servlet:使用Java语言编写,运行于服务器端实现动态网页,是一种跨平台的纯Java服务器端程序,类似于CGI程序。
JEB:Java Beans也是一些Java类,通常用来实现一些比较常用的功能,并便于重用或插入其他应用程序中,所有遵循一定编程原则的Java类都可以被称为Java Beans。JEB即Enterprise Java Beans,是一种非常复杂的Java Beans。它定义了一些特定的方法和属性来实现企业的核心业务逻辑。
JSP:在服务器端,JSP会被Java虚拟机处理编译成一种Servlet,然后再由虚拟机来执行此Servlet来生成纯HTML页面信息。所以JSP是对Servlet的一种抽象,并没有增加任何在本质上不能用Servlet来实现的功能。但JSP可以嵌入HTML文件中,有动静分离,简单易用等优点。
Java语言让编程者无法找到指针来直接访问内存,并且增添了自动的内存管理功能。
Java不支持多重继承,但允许一个类继承多个接口。
Java除了基本数据类型之外,其余的都作为类对象,包括数组。并取消了c/c++中的结构和联合。
Java程序中所有的对象都是用new操作符建立在内存堆栈上。
Java不支持操作符重载。
Java不支持预处理功能。
Java不支持缺省函数参数。
Java不支持c++中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。
★Java和C++的语法对比学习
1) main 函数
<C++>
//自由浮动的函数
int main( int argc, char* argv[])
{
printf( "Hello, world" );
}
<Java>
// 每个函数都必须是一个类的一部分;当java <class>运行是一个特定类的主函数会被调用
// (因此你可以让每个类都有一个main函数,这在写单元测试是很有用)
class HelloWorld
{
public static void main(String args[])
{
System.out.println( "Hello, World" );
}
}
2) 类的声明
除了 java 不要求用分号外几乎是相同的。
<C++>
class Bar {};
<Java>
class Bar {}
3) 方法声明
都相同的, 除了在java中方法必须总是某个类的一部分,并且可能public/private/protected 作为修饰.且一般java中不会在类内只声明成员函数,而总是直接在类中实现成员函数。
4) 构造函数和析构函数
构造函数都是相同的 (即类的名字), java没有准确意义上的的析构函数
5) 静态成员函数和变量
方法声明是相同的, 但 java 提供静态初始化块来来初始化静态变量 (不需要在源文件中声明):
class Foo
{
static private int x; //也可以定义时赋值初始化
// 静态初始化块
{ x = 5; }
}
调用方法也不相同
<C++>
myClass::staticVar;
myClass::staticfun();
<Java>
myClass.staticVar;
myClass.staticfun();
6) 对象的声明
<C++>
// 在栈中
myClass x;
//或者在堆中
myClass *x = new myClass;
<Java>
// 总是在对堆中声明
// java中myClass x只是声明了对象,而不会为对象分配空间
// 对象名只是内存地址的标志,所以使用new分配空间时不用使用指针
myClass x = new myClass();
7) 继 承
<C++>
class Foo : public Bar
{ ... };
<Java>
class Foo extends Bar //只能公有继承
{ ... }
8) 类中修饰符
使用格式不一样。此外,java多了一个private protected修饰,相当于c++中的protected修饰。java中的protected修饰可以被同包中的其他类访问。
<C++>
public:
void foo();
void bar();
<Java>
public void foo(){};
public void bar(){};
9) 虚函数
<C++>
virtual int foo(); // 或者非虚函数写作 int foo();
<Java>
// 函数默认的就是虚函数; 用final关键字防止重载
int foo(); // 或者, final int foo();
10) 内存管理
大体上是相同的。使用new 来分配, 但是 java没有 delete,因为它有垃圾回收器。
11) NULL vs null
<C++>
// 初始化一个指针为 NULL
int *x = NULL;
<Java>
// 编译器将捕获使用未初始化的引用
//但是如果你因需要初始化一个引用而赋一个null,那么这是无效的
myClass x = null;
12) 基本数据类型
java有一点罗嗦: 你必须写 boolean而不止是 bool.
java还支持byte类型,相当于c++的char类型,都是1个字节的有符号数。java中的char类型则是2个字节的无符号数。
<C++>
bool foo;
<Java>
boolean foo;
13) 常 量
<C++>
const int x = 7;
<Java>
final int x = 7;
14) 抛异常
首先,java在编译器强制抛异常—如果你的方法可能会抛异常你必需明确报告。
java中凡是定义中已声明会抛出例外的方法,在调用时必须捕捉这种例外,否则编译器会报错。
<C++>
int foo() throw (IOException)
<Java>
int foo() throws IOException
15) 数 组
<C++>
int x[10];
// 或
int *x = new int[10];
// 使用 x,然后归还内存
delete []x;
<Java>
int[] x = new int[10]; //也可以写成int x[],不过前者更常用
// 使用 x, 内存有垃圾回收器回收或
//或在程序生命周期尽头归还给系统
16) 集合和迭代器
<C++>
迭代器是类的成员。范围的开始是<容器>.begin(), 结束是 <容器>.end()。 用++ 操作符递增, 用 *操作符访。
vector myVec;
for ( vector<int>::iterator itr = myVec.begin();
itr != myVec.end();
++itr )
{
cout << *itr;
}
<Java>
迭代器只是一个接口。 范围的开始是 <集合>.iterator,你必须用itr.hasNext()来查看是否到达集合尾。 使用itr.next()(是在c++中使用操作符++ 和*操作的结合)来获得下一个元素。
ArrayList myArrayList = new ArrayList();
Iterator itr = myArrayList.iterator();
while ( itr.hasNext() )
{
System.out.println( itr.next() );
}
// 或, 在java 5中
ArrayList myArrayList = new ArrayList();
for( Object o : myArrayList ) {
System.out.println( o );
}
17) 抽象类
<C++>
// 只需要包含一个纯虚函数
class Bar { public: virtual void foo() = 0; };
<Java>
// 语法上允许显示的声明!
abstract class Bar { public abstract void foo(); }
// 或者你也可以声明一个接口
interface Bar { public void foo(); }
// 然后让一个类继承这个接口:
class Chocolate implements Bar
{
public void foo() { /* do something */ }
}
18) 引用 vs 指针
<C++>
//引用不可改变,通过使用指针来获得更多的灵活性
int bar = 7, qux = 6;
int& foo = bar;
<Java>
// 引用是可变的,仅存储对象地址;
//没有指针类型
myClass x;
x.foo(); // error, x is a null ``pointer''
// 注意你要总是用 . 来访问域
19) 编 译
<C++>
// 编译
g++ foo.cc -o outfile
// 运行
./outfile
<Java>
// 编译foo.java文件中的类成<classname>.class javac foo.java
// 通过调用<classname>中的静态main方法来运行
java <classname>
20) 注 释
两种语言是一样的 (// 和 /* */ 可以用)
★J2EE概念
J2EE是网络应用的一个集成框架,能够满足低费用,高可用性,高可靠性以及扩展性的应用需求。它通过提供一个统一的开发平台,降低了开发多层应用的费用和复杂性,对现有应用程序集成提供了强有力的支持。
J2EE将电子商务应用分为4个层次,即客户层,Web层,业务层,企业信息系统层。其中,客户层可以使用浏览器访问Web层,或使用客户端程序直接访问业务层。JSP脚本和Servlet运行在Web层,接收浏览器请求,和运行在业务层的EJB进行必要的交互后返回标准的HTML页面。
目前常见的动态网页技术有4种:
CGI:用户可以使用多种语言如C/C++,VB等编写适合的CGI程序,然后放在Web服务器上运行,接收请求并处理返回结果。
ASP:没有自己专门的编程语言,而是使用VBScript,JavaScript等脚本来编写ASP的应用程序,可以嵌入HTML文件中。
PHP:是一种服务器端脚本语言,也是嵌入HTML文件的一种脚本语言。
JSP:它使用Java语言或JavaScript脚本作为编程脚本,可以嵌入HTML文件中。
J2EE相关概念:
Applet:是使用Java语言编写的小程序,但是不能独立运行,而必须嵌入HTML文件中在浏览器里执行。功能类似于JavaScript脚本,在客户端实现动态网页。
Servlet:使用Java语言编写,运行于服务器端实现动态网页,是一种跨平台的纯Java服务器端程序,类似于CGI程序。
JEB:Java Beans也是一些Java类,通常用来实现一些比较常用的功能,并便于重用或插入其他应用程序中,所有遵循一定编程原则的Java类都可以被称为Java Beans。JEB即Enterprise Java Beans,是一种非常复杂的Java Beans。它定义了一些特定的方法和属性来实现企业的核心业务逻辑。
JSP:在服务器端,JSP会被Java虚拟机处理编译成一种Servlet,然后再由虚拟机来执行此Servlet来生成纯HTML页面信息。所以JSP是对Servlet的一种抽象,并没有增加任何在本质上不能用Servlet来实现的功能。但JSP可以嵌入HTML文件中,有动静分离,简单易用等优点。
- Java语法和J2EE概念
- 黑马程序员-JAVA基本的语法概念和常识
- 【J2EE之web应用】java集群概念
- J2EE的概念、层次和组成
- php相关语法和概念
- J2EE概念
- j2ee 概念
- J2EE和JAVA区别
- Java中抽象类和接口在概念、语法和应用上的区别和关系
- Java基础总结-基本语法概念-1
- Java基础总结-基本语法概念-2
- Java基础总结-基本语法概念-3
- JAVA技术和J2EE架构
- Java web和J2EE道
- Visual Basic.Net基础概念和语法
- HTML5 标签语法变化和使用概念
- 关于Unity的一些概念和语法
- 关于Unity的一些概念和语法
- 雷军-我十年的程序员生涯
- 数据库编程技术
- 《我十年的程序员生涯》系列之二:我写BITLOK的这七年
- 关于数组的总结
- uva 562 Dividing coins
- Java语法和J2EE概念
- Android 4.0 Platform Highlights
- 乱码问题和文件下载
- itsm、ITIL的区别
- 《我十年的程序员生涯》系列之三:阳光灿烂的日子
- 重读经典之——《windows程序设计》——宽字符型求长度
- linux常用命令和shell编程
- .NET GZIP,deflate压缩(转)
- 泛型dao架构实现,封装crud等基本操作