初识Java

初步认识Java

1991年,SUN MicroSystem公司的 Jame Gosling、 Bill Joe等人成立了一个新的计算机语言开发小组,启动了一个称为“Green”的项目,其目的是开发一种面向家用电器市场的软件产品,这种产品能够运行在电视机机顶盒、手机、洗衣机,烤面包炉等家用电器上。“GREEN”(绿色)的含义是--这种新语言应该是微处理器无关的。
在规划这个产品时,他们首先想到这个产品必须具有平台无关性,因而很自然地把扩展C++编译器作为最初的考虑,但很快地他们便意识到这个产品还必须具有高度的简洁性和安全性,而C++在这方面显得无法胜任,于是他们决定自行开发一种语言——Oak。
开发用了18个月,也就是在1992 年完成了第一个产品,1993-1994他们”飞行了大约30万英里”寻找买主未果。1994年项目组解散。
直到1994年下半年,Internet的迅猛发展,环球信息网 WWW的快速增长。WWW页面虽然很丰富,可以实现声、图、文并茂,但它是静态的。需要通过一种机制来使它具有动感,嵌入一种语言是一种很自然的解决方案,但这种语言必须简练、小巧、与平台无关,Oak正好满足这些要求。 Oak开发者发现Internet才是Oak的真正用武之地。于是Oak语言被重新定位于WWW浏览器的应用上。
1995年1月,更为完善的Oak版本被重新起了一个更响亮的名字–Java。(喝咖啡的时候取的名字,Java就是咖啡,所以Java图标是一杯咖啡)

Java的主要特点
1.简单性 Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。 Java略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾收集(相对于C++)大大简化了程序设计者的内存管理工作。
2.面向对象 Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏 ;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。
3.分布性 Java是面向网络的语言。通过它提供的类库可以处理 TCP/IP协议,用户可以通过 URL地址在网络上很方便地访问其它对象。数据分布和操作分布
4鲁棒性 Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。通过集成的面向对象的异常处理机制,在编译时,Java提示出可能出现但未被处理的异常。另外,Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时出现不匹配问题。
5.安全性用于网络、分布环境下的 Java必须要防止非法的入侵。 Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用“特洛伊 ”木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。
6.体系结构中立 Java解释器生成与体系结构无关的字节码指令,只要安装了 Java运行时系统,Java程序就可在任意的处理器上运行。这些字节码指令对应于 Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。
7.可移植性 与平台无关的特性使 Java程序可以方便地被移植到网络上的不同机器。同时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。另外,Java编译器是由 Java语言实现的,Java运行时系统由标准C实现,这使得Java 系统本身也具有可移植性。
8.解释执行 Java解释器直接对Java的字节码进行解释执行。字节码本身携带了许多编译时信息,使得连接过程更加简单。单机运行速度较慢,但是网络运行速度比C/C++快很多。
9.高性能 和其它解释执行的语言(例如BASIC)不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。
10.多线程 多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。
11.动态性 Java的设计使它适合于一个不断发展的环境,比C/C++更具动态性。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。另外, Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。

Java小程序
Java语言的特性使它可以最大限度地利用网络。 Applet是 Java的小应用程序,它是动态、安全、跨平台的网络应用程序。 Java Applet嵌入 HTML语言,通过主页发布到 Internet。网络用户访问服务器的 Applet时,这些Applet从网络上进行传输,然后在支持 Java的浏览器中运行。由于 Java语言的安全机制,用户一旦载入 Applet,就可以放心地来生成多媒体的用户界面或完成复杂的计算而不必担心病毒的入侵。虽然 Applet可以和图像、声音、动画等一样从网络上下载,但它并不同于这些多媒体的文件格式,它可以接收用户的输入,动态地进行改变,而不仅仅是动画的显示和声音的播放。

Java的类库
1.Java语言包(java.lang)中提供了支持包括字符串处理、多线程处理、异常处理、数学函数处理等,可以用它简单地实现Java程序的运行平台。
2.Java实用程序包(java.util)提供的支持包括哈希表、堆栈、可变数组、时间和日期等。
3. Java输入输出包java.io)用统一的 “流 ”模型来实现所有格式的 I/O,包括文件系统、网络输入。
4. Java抽象图形用户接口包(java.awt和javax.swing)实现了不同平台的计算机的图形用户接口部件,包括窗口、菜单、滚动条、对话框等,使得 Java可以移植到不同平台的机器。
5. Java网络包(java.net)用于实现 Socket编程。网络包支持 Internet的 TCP/IP协议,提供了与 Internet的接口。它支持 URL连接,WWW的即时访问,并且简化了用户/服务器模型的程序设计。

Java程序运行流程
在这里插入图片描述Java虚拟机及运行机制
在这里插入图片描述
面向对象有关概念
对象客观世界中的任何一个事物都可以被看成是对象。
抽象对象是具体的客观事物从对象过渡到类的过程。
类是同一种(具有相同属性和行为)对象的集合与抽象,是一种抽象的数据类型。
封装封装是把对象的属性和行为组合成为一个独立的单位或部件,并尽可能隐蔽对象的内部细节,而只保留必要的对外接口,使之与外部发生联系。
继承继承是特殊类的对象具有其一般类的全部属性和行为,即称为特殊类对一般类的继承。
多态性同一个消息可以根据发送消息对象的不同产生多种不同的行为方式。

Java与C/C++的比较
同:变量声明、参数传递、操作符、流控制等
异:取消了运算符重载、多重继承、头文件等复杂、低效而不安全的特性,实现自动垃圾收集,以及异常处理机制等。

Java语言与C/C++语言的相似之处
– 主函数main()
– 数据类型,例如double
– 运算符和表达式,例如+、-、、/ – 语句都以分号“;”结束
– 注释:/
…… */、// ……
Java语言与C/C++语言的不同之处:输入/输出
– C语言:scanf()、printf()
– C++语言:scanf()、printf(),cin、cout
– Java语言:System.in、System.out

基本数据类型的区别
⚫ Java语言的整数类型都是有符号格式(signed),没有无符号格式(unsigned)的整数类型。
注:C/C++语言的整数类型既有有符号格式,也有无符号格式。
⚫ Java数据类型的存储位数是固定的,与操作系统或编译系统无关,其目的是为了跨平台运行。
注:C/C++语言数据类型的存储位数与操作系统或编译系统有关。
⚫ Java语言的单字节整型为byte。
注:C/C++语言的单字节整型为char,与字符型相同。
⚫ Java语言的长整型long占8个字节(64位),是int型的两倍。
注:C/C++语言中,长整型long与int型占用的字节数一样。
⚫ Java语言中的字符型char占2个字节,保存字符的Unicode编码(UTF-16)。注:C/C++语言中的字符型char占1个字节,保存字符的ANSI编码。
⚫ Java语言中布尔型的关键字是boolean。
注:C/C++语言中布尔型的关键字是bool。
⚫ Java语言没有指针类型。例如,下列C/C++用法在Java语言中是错误的。

int x, *p = &x;     // C/C++用法:定义一个指向变量x的int型指针变量p
*p = 10;           // C/C++用法:通过指针变量p间接访问变量x

Java程序员成长之路
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值