C/C++程序员请注意指针的用法(转)
C/C++程序员请注意指针的用法(转)[@more@]如果你是一个经验丰富的C/C++ 程序员,那么你知道这些语言提供对指针的支持。然而,在本章中没有提到指针。这样做的道理很简单:Java 不支持或不允许指针(或者更恰当地说,Java 不支持程序员来访问或修改指针)。Java 不允许指针,是因为这样做将允许Java applet (小应用程序)突破Java 运行环境和主机之间的防火墙(要知道,指针能放在内存的任何地址,即使是Java 运行系统之外的地址)。既然C/C++ 广泛的使用指针,你可能认为损失对指针的使用是Java 的一个很重要的不利条件。然而,事实并非如
算术运算符(转)
算术运算符(转)[@more@]Java 提供了丰富的运算符环境。Java 有4大类运算符:算术运算、位运算、关系运算和逻辑运算。Java 还定义了一些附加的运算符用于处理特殊情况。本章将描述Java 所有的运算符,而比较运算符instanceof 将在第12章讨论。注意:如果你对C/C++ 熟悉,你将会高兴,因为Java 的绝大多数运算符和C/C++ 中的用法一样。但有一些微妙的差别,所以提醒你要仔细阅读。算术运算符用在数学表达式中,其用法和功能与代数学(或其他计算机语言)中一样,Java 定义了下列算术运算符(见表4-1):运算符含义+ 加法– 减法(一元减号)
位运算符(转)
位运算符(转)[@more@]Java 定义的位运算(bitwise operators )直接对整数类型的位进行操作,这些整数类型包括long,int,short,char,and byte 。表4-2 列出了位运算:表4.2 位运算符及其结果运算符 结果~ 按位非(NOT)(一元运算)& 按位与(AND)| 按位或(OR)^ 按位异或(XOR)>> 右移>>> 右移,左边空出的位以0填充运算符 结果<< 左移&= 按位与赋值|= 按位或赋值^= 按位异或赋值>>= 右移赋值>>>= 右移赋值,左边空出的位以0填充<<= 左移赋值续表既然位运算符在整数范围内对位操
关系运算符(转)
关系运算符(转)[@more@]关系运算符(relational operators )决定值和值之间的关系。例如决定相等不相等以及排列次序。关系运算符如表4-4 所示:表4-4 关系运算符及其意义运算符意义== 等于!= 不等于> 大于< 小于>= 大于等于<= 小于等于这些关系运算符产生的结果是布尔值。关系运算符常常用在if控制语句和各种循环语句的表达式中。Java 中的任何类型,包括整数,浮点数,字符,以及布尔型都可用“==”来比较是否相等,用“!=”来测试是否不等。注意Java (就像C和C++ 一样)比较是否相等的运算符是2 个等号,而不是一个(注意
布尔逻辑运算符(转)
布尔逻辑运算符(转)[@more@]布尔逻辑运算符的运算数只能是布尔型。而且逻辑运算的结果也是布尔类型(见表4-5 )。表4-5 布尔逻辑运算符及其意义运算符 含义& 逻辑与| 逻辑或^ 异或|| 短路或&& 短路与! 逻辑反&= 逻辑与赋值(赋值的简写形式)|= 逻辑或赋值(赋值的简写形式)^= 异或赋值(赋值的简写形式)== 相等!= 不相等?: 三元运算符(IF-THEN-ELSE)布尔逻辑运算符“&”、“ |”、“ ^”,对布尔值的运算和它们对整数位的运算一样。逻辑运算符“!”的结果表示布尔值的相反状态:!true == false 和!false == true
赋值运算符(转)
赋值运算符(转)[@more@]在第2章中你已经使用过赋值运算符。下面我们正式讨论它。赋值运算符是一个等号“=”。它在Java 中的运算与在其他计算机语言中的运算一样,其通用格式为:var = expression;这里,变量var 的类型必须与表达式expression 的类型一致。赋值运算符有一个有趣的属性,你或许并不熟悉:它允许你对一连串变量赋值。例如,请看下面的例子:int x,y,z; x = y = z = 100; // set x,y,and z to 100该例子使用一个赋值语句对变量 x、y、z 都赋值为100。这是因为“=”运算符产生右边表达式的值,因此 z = 100 的值是 100,然
使用圆括号(转)
使用圆括号(转)[@more@]圆括号(Parentheses )提高了括在其中的运算的优先级。这常常对于获得你需要的结果是必要的。例如,考虑下列表达式:a >> b + 3该表达式首先把 3 加到变量 b,得到一个中间结果,然后将变量a右移该中间结果位。该表达式可用添加圆括号的办法重写如下:a >> (b + 3)然而,如果你想先将a右移b位,得到一个中间结果,然后对该中间结果加3,你需要对表达式加如下的圆括号:(a >> b) + 3除了改变一个运算的正常优先级外,括号有时被用来帮助澄清表达式的含义。对于阅读你程序代码的人来说,理解一个复
?运算符(转)
?运算符(转)[@more@]Java 提供一个特别的三元运算符(ternary )经常用于取代某个类型的if-then-else 语句。这个运算符就是?,并且它在Java 中的用法和在C/C++ 中的几乎一样。该符号初看起来有些迷惑,但是一旦掌握了它,用?运算符是很方便高效的。?运算符的通用格式如下:expression1 ? expression2 : expression3其中,expression1 是一个布尔表达式。如果expression1 为真,那么expression2 被求值;否则,expression3 被求值。整个?表达式的值就是被求值表达式(expression2 或expression3)的值。expression2 和expression3 是除
Java 的选择语句(转)
Java 的选择语句(转)[@more@]编程语言使用控制(control )语句来产生执行流,从而完成程序状态的改变,如程序顺序执行和分支执行。Java 的程序控制语句分为以下几类:选择,重复和跳转。根据表达式结果或变量状态选择(Selection )语句来使你的程序选择不同的执行路径。重复(Iteration)语句使程序能够重复执行一个或一个以上语句(也就是说,重复语句形成循环)。跳转(Jump )语句允许你的程序以非线性的方式执行。下面将分析Java 的所有控制语句。如果你熟悉C/C++ ,那么掌握Java 的控制语句将很容易。事实上,Java 的控制语句与C/C+
java 循环语句(转)
java 循环语句(转)[@more@]Java 的循环语句有for,while 和 do-while 。这些语句创造了我们通常所称的循环(loops)。你可能知道,一个循环重复执行同一套指令直到一个结束条件出现。你将看到,Java 有适合任何编程所需要的循环结构。5.2.1 while 语句while 语句是Java 最基本的循环语句。当它的控制表达式是真时,while 语句重复执行一个语句或语句块。它的通用格式如下:while(condition) {// body of loop}条件condition 可以是任何布尔表达式。只要条件表达式为真,循环体就被执行。当条件condition 为假时,程序控制就传递到循环后面
java面向对象编程(转)
java面向对象编程(转)[@more@]Java 的核心是面向对象编程。事实上,所有的Java 程序都是面向对象的,你别无选择。这一点与C++ 不同,因为在那里你可以选择是否面向对象编程。面向对象编程与Java 密不可分,因此,在你编写哪怕是最简单的Java 程序以前,也必须理解它的基本原则。因此,本章先从面向对象编程的概念讲起。1 两种范型我们知道,所有的计算机程序都由两类元素组成:代码和数据。此外,从概念上讲,程序还可以以它的代码或是数据为核心进行组织编写。也就是说,一些程序围绕“正在发生什么”编写,而另一些程序则围绕“谁将被影
java 跳转语句(转)
java 跳转语句(转)[@more@]Java 支持 3 种跳转语句:break,continue 和return 。这些语句把控制转移到程序的其他部分。下面对每一种语句进行讨论。注意:除了这里讨论的跳转语句,Java 还支持另一种能改变你程序执行流程的方法:通过异常处理。异常处理提供了一种结构化的方法,通过该方法可以使你的程序捕获并处理运行时刻错误。它由下列五个关键字来控制:try,catch,throw,throws,和 finally 。实质上,异常处理机制允许你的程序完成一个非局部的分支跳转。由于异常处理是一个大话题,我们将在第 10 章专门讨论。5.3.1 使用break 语
Java的由来(转)
Java的由来(转)[@more@]对于计算机语言的发展史,业界一般认为:B语言导致了C语言的诞生,C语言演变出了C++语言,而C++语言将让位于Java语言。要想更好地了解 Java语言,就必须了解它产生的原因、推动它发展的动力,以及它对其他语言的继承。像以前其他成功的计算机语言一样,Java继承了其他语言的先进原理,同时又因其独特的环境要求而提出了一些创新性的概念。在这本书的其他各章中,将从实用的角度,对Java语言、库及应用程序进行包括语法在内的详细介绍。在本章里,我们将介绍Java语言产生的背景、发展过程,以及使它变得如此重要的原
Java的产生(转)
Java的产生(转)[@more@]Java是由James Gosling,Patrick Naughton,Chris Warth,Ed Frank和Mike Sheridan于1991年在Sun Microsystems公司设计出来的。开发第一个版本花了18个月。该语言开始名叫“Oak”,于1995年更名为“Java”。从1992 的秋天Oak问世到1995的春天公开发布Java语言,许多人对Java的设计和改进做出了贡献。Bill Joy,Arthur van Hoff,Jonathan Payne,Frank Yellin和Tim Lindholm是主要的贡献者,正是他们的贡献使最初原型得以成熟。说起来多少有些令人吃惊,Java的最初推动力并不是因特网!而是源于对独立于平台(也就是
Java对Internet为什么重要(转)
Java对Internet为什么重要(转)[@more@]Internet使Java成为网上最流行的编程语言,同时Java对Internet的影响也意义深远。原因相当简单:Java扩展了可以在赛百空间自由流动的对象的世界。在网络中,有两大类对象在服务器和个人计算机之间传输:被动的信息和动态的、主动的程序。例如,当你阅读电子邮件时,你在看被动的数据。甚至当你下载一个程序时,该程序的代码也是被动的数据,直到你执行它为止。但是,可以传输到个人计算机的另一类对象却是:动态的、可自运行的程序,虽然这类程序是客户机上的活动代理,但却是由服务器来初始化的。例
Java的魔力:字节码(转)
Java的魔力:字节码(转)[@more@]Java 解决上述两个问题——安全性和可移植性的关键在于Java 编译器的输出并不是可执行的代码,而是字节码(bytecode )。字节码是一套设计用来在Java 运行时系统下执行的高度优化的指令集,该Java 运行时系统称为Java 虚拟机(JavaVirtual Machine,JVM)。在其标准形式下,JVM是一个字节码解释器。这可能有点让人吃惊,因为像C++之类语言的编译结果是可执行的代码。事实上,出于对性能的考虑,许多现代语言都被设计为编译型,而不是解释型。然而,正是通过JVM运行Java 程序才有助于解决在Internet 上下载程序
java 类基础(转)
java 类基础(转)[@more@]类是Java 的核心和本质。它是Java 语言的基础,因为类定义了对象的本性。既然类是面向对象程序设计Java 语言的基础,因此,你想要在Java 程序中实现的每一个概念都必须封装在类以内。因为类是Java 的基础,所以在本章和以后几章中对其进行介绍。本章将介绍类的基本元素,并学习如何运用类来创建对象。同时也将学习方法、构造函数及this 这个关键字。从本书的开始我们就使用类了。当然,使用的都是非常简单的类。在前面几章中创造的类主要都包含在main( ) 方法中,用它来表明Java 句法的基础。你将看到,类的功能实
java 声明对象(转)
java 声明对象(转)[@more@]正如刚才讲过的,当你创建一个类时,你创建了一种新的数据类型。你可以使用这种类型来声明该种类型的对象。然而,要获得一个类的对象需要两步。第一步,你必须声明该类类型的一个变量,这个变量没有定义一个对象。实际上,它只是一个能够引用对象的简单变量。第二步,该声明要创建一个对象的实际的物理拷贝,并把对于该对象的引用赋给该变量。这是通过使用new 运算符实现的。new运算符为对象动态分配(即在运行时分配)内存空间,并返回对它的一个引用。这个引用或多或少的是new分配给对象的内存地址。然后这个引
给对象引用变量赋值(转)
给对象引用变量赋值(转)[@more@]对象变量的赋值和你直觉期望的不同。例如,你认为下面的程序段是做什么呢?Box b1 = new Box();Box b2 = b1;你可能认为,变量b2被赋值为变量b1对象引用的一个拷贝。也就是,你可能认为b1和b2引用的是不同的对象,但实际情况却相反,b1和b2将引用同样的对象。将b1赋值给b2并没有分配任何内存或对原对象做任何部分的拷贝。由于它们是同一个对象,因此通过变量b2对对象的改变也将影响b1所对应的对象。尽管b1和b2都引用同一个对象,但是他们之间没有任何其他的关系。例如,接下来对b1的赋值仅仅使b1脱离(unhoo
第1个简单java程序(转)
第1个简单java程序(转)[@more@]既然Java 面向对象的基础已经被讨论过了,接下来让我们看一些实际的Java 程序。让我们从编译及运行下面这个简短示例程序开始。你将看到,这个程序的功能比你想像的要多。/*This is a simple Java program.Call this file "Example.java".*/class Example {// Your program begins with a call to main(). public static void main(String args[]) { System.out.println("This is a simple Java program.");}}注意:在下面的介绍中,将使用标准JDK(Java Developer’s Kit,Java 开发工具包),它可从Sun Mic