第-2-章-Java语言基础课件_第1页
第-2-章-Java语言基础课件_第2页
第-2-章-Java语言基础课件_第3页
第-2-章-Java语言基础课件_第4页
第-2-章-Java语言基础课件_第5页
已阅读5页,还剩151页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章Java语言基础2.1标识符与关键字2.2数据类型2.3变量、操作符与表达式2.4程序流控制2.5数组与多维数组第2章Java语言基础2.1标识符与关键字2.1标识符与关键字

Java语言的输入元素包含空白、注释和记号(token)三大类,而记号又分为标识符、关键字、常量、分隔符和操作符五类。记号实际上是Java语法的最小单元。2.1标识符与关键字

Java语

1.Unicode字符集

Java源程序是使用Unicode国际标准字符集中的字符编写的,这不同于C语言所使用的传统ASCII字符集。Unicode字符集中的字符最初都是用等宽的16bit编码的,后来改为支持需要多于16bit才能表示的字符。目前Unicode支持的字符编码范围为0x0000~0x10FFFF,其中从0xFFFF往后的字符称为增补字符。增补字符无法用一个16bit编码表示。1.Unicode字符集

Java源程序是使用Un第-2-章---Java语言基础课件

2.标识符

标识符的定义还应遵循以下规则。

(1)标识符中的字母不仅限于A~Z、a~z,还可以取自Unicode字符集中大于等于0x00c0的、在所有国际语言中相当于一个字母的任何Unicode字符。因此Java支持程序员用其本国语言进行标识符命名。

(2)标识符不能是Java关键字、布尔常量(true/false)或null常量。

(3)标识符大小写敏感。

(4)标识符不能包含空白。2.标识符

标识符的定义还应遵循以下规则。

(在标识符命名方面,除了要考虑合法性之外,还需要考虑命名是否易于理解。因此,除上述规则之外,还存在一系列非强制性的风格约定,例如:

(1)不使用“_”、“$”作为标识符的第一个字符。

(2)类名、接口名的所有单词首字母大写,其余字母小写,如类名HelloWorld。

(3)变量名、方法名首单词小写,其余单词的首字母大写,如变量名someVariable。

在标识符命名方面,除了要考虑合法性之外,还需要考虑命名是(4)常量名完全大写,由“_”分隔,如常量名CONST_POOL

_NUM。

(5)方法名使用动词,类名和接口名使用名词,变量名尽量有含义。

(6)在定义类名时不要使用“$”,否则该类的.class文件可能与编译器生成的内部类.class文件冲突。(4)常量名完全大写,由“_”分隔,如常量名CON

3.关键字

关键字(keyword)是程序语言中预先定义的有特殊意义的标识符。表2-2中由ASCII字符组成的字符序列被保留为Java的关键字。3.关键字

关键字(keyword)是程序语言中预第-2-章---Java语言基础课件

4.注释

Java中注释的表示方式分三种:

(1)/*传统注释*/;

(2)//单行注释;

(3)/**文档注释,可以使用javadoc工具生成HTML格式的文档*/。

4.注释

Java中注释的表示方式分三种:

(使用注释时需要注意以下两点:

(1)注释不支持嵌套,即在开始于“//”的注释中,“/*”和“*/”没有特殊的意义,而在开始于“/*”或“/**”的注释中,“//”没有特殊的意义。

(2)Java语法规则要求注释不能出现在字符常量和字符串常量之中。使用注释时需要注意以下两点:

(1)注释不支持嵌套

5.空白与分隔符

Java中的空白包括ASCII空格、水平制表符、换页符以及行终止符等。它可以由六种Unicode字符或字符串表示:

(1)空格\u0020,对应于ASCII字符SP;

(2)水平制表符\u0009,对应于ASCII字符HT;

(3)换页符\u000C,对应于ASCII字符FF;

(4)换行符\u000A,对应于ASCII字符LF;

(5)回车符\u000D,对应于ASCII字符CR;

(6)字符串\u000D\u000A,对应于ASCII字符串CRLF。5.空白与分隔符

Java中的空白包括ASCII空第-2-章---Java语言基础课件2.2数据类型

数据类型广泛存在于Java语言的常量、变量、表达式、方法和类属性中。Java是一种强类型的语言,因而Java的每个变量和表达式均有一个编译时可知的确定类型。Java虚拟机希望尽可能多的类型检查能够在程序运行之前完成。类型的意义在于,限定变量和表达式的取值范围、限定在特定值上能够执行的操作、确定操作符的意义等。2.2数据类型

数据类型广泛存在

1.布尔型

布尔型表示一个逻辑量,布尔型对应的关键字为boolean。boolean类型的数据有两种可能的取值,分别由布尔常量true和false表示。boolean类型的变量如果有默认初始值,则默认初始值为false。与C语言不同,Java中布尔值与整型值之间不能相互转换。boolean类型的值可以通过关系操作符、逻辑操作符等进行运算,可以作为多种复杂程序流程的分支判定条件。1.布尔型

布尔型表示一个逻辑量,布尔型对应的关键

2.整型

Java中的整形包含byte、short、int、long、char五种。它们的长度与取值范围如表2-4所示。2.整型

Java中的整形包含byte、short第-2-章---Java语言基础课件第-2-章---Java语言基础课件

例2-1CharConst.java:字符常量的表示方法。例2-1CharConst.java:字符常量的表示

3.浮点型

浮点型用于表示有小数部分的数值。Java中的浮点型包括float和double两种,分别用来表示《IEEEStandardforBinaryFloatingPointArithmetic》(ANSI/IEEEStd.7541985)标准(即通常所说的IEEE754标准)定义的单精度浮点型和双精度浮点型。它们的长度与取值范围如表2-6所示。float类型的最小正非零值约为1.40E-45F,而double类型的最小正非零值约为4.9E-324。3.浮点型

浮点型用于表示有小数部分的数值。J第-2-章---Java语言基础课件

例2-2PrimitiveConst.java:基本数据类型的特殊值。例2-2PrimitiveConst.java:基本第-2-章---Java语言基础课件2.3变量、操作符与表达式

1.变量

Java中的变量实际上是一种与特定类型关联的存储位置(storagelocation),这一类型称为变量的编译时类型。2.3变量、操作符与表达式

1.变量

当声明基本类型的变量时,运行系统直接分配出数据空间,用于保存相应类型的值。而对于引用类型变量,在声明时,运行系统只是分配出存放对具体对象的引用空间,而对象的数据空间并未分配。也就是说,这时的引用类型变量并未关联到任何对象,因而不能直接通过这一变量访问对象的内容。例如:

Rectanglerect;

rect.width=5;//错误,rect并未指向任何Rectangle类型的实例对象当声明基本类型的变量时,运行系统直接分配出数据空间,用于引用类型的变量在声明后必须先通过实例化开辟数据空间,此后才能通过变量访问对象的内容。实例化的方法是使用关键字new调用类的构造方法,例如:

Rectanglerect;

rect=newRectangle(3.0,2.0);引用类型的变量在声明后必须先通过实例化开辟数据空间,此后图2-1引用变量的声明与实例化图2-1引用变量的声明与实例化引用类型变量之间的赋值是引用赋值,引用赋值会导致多个引用都指向同一个数据对象,而不会创建出新的数据对象,例如:

Rectanglerect,rect2;

rect=newRectangle(3.0,2.0);

rect2=rect;

赋值过程中内存空间的变化如图2-2所示。引用类型变量之间的赋值是引用赋值,引用赋值会导致多个引用图2-2引用变量之间的赋值图2-2引用变量之间的赋值1)成员变量

成员变量是表示类和对象特征的变量。成员变量在类定义中进行定义,且位于方法定义之外。成员变量的作用域至少包括整个类,根据变量的访问权限修饰符的不同,成员变量还可作用于外界的其他类。1)成员变量

成员变量是表示类和对象特征的变量。成2)局部变量

局部变量是在方法或者代码块内部定义的变量。其作用域从声明变量的位置开始,直到包含该变量的块结束为止。当程序的执行流执行到该变量的声明语句时,局部变量被创建。当方法体或代码块执行结束后,局部变量被销毁。与成员变量不同的是,局部变量的初始化不会自动完成,需要在编程时通过显式的赋值进行初始化,否则就无法使用。如果编译器确定程序使用了没有经过初始化的局部变量,编译器会报错。2)局部变量

局部变量是在方法或者代码块内部定义的3)方法参数

方法参数定义了在方法调用时传递给方法的参数值对应的名称,其作用域就是所在方法的内部。每当方法调用一次,方法参数变量就会被创建一次,并由方法调用者所提供的参数值进行变量初始化。方法参数还可细分为成员方法参数和构造方法参数两种。有时方法参数也可以简化地看做是局部变量。3)方法参数

方法参数定义了在方法调用时传递给方法4)异常处理参数

异常处理参数是catch语句块的入口参数。每当try语句块中抛出的异常被一个catch语句块捕获时,就会创建一个异常处理参数,这个参数的初始化值即为被抛出的那个代表实际异常的对象的引用。当整个catch语句块执行完毕后,异常处理参数被销毁。4)异常处理参数

异常处理参数是catch语句块的

例2-3VariablesAndLocalVarInit.java:各类变量及局部变量的初始化。例2-3VariablesAndLocalVarI

2.操作符与表达式

Java的操作符与C语言基本相同,具有C语言基础的读者可以很快地掌握Java操作符及其运算规则,二者相同的部分,我们仅做简要介绍。二者的区别主要体现在以下几方面:首先,Java是强类型语言,其类型检查比C语言更加严格,操作符的操作对象类型会受到更多限制;其次,C语言中的指针操作符在Java中不存在,而Java中增加了引用类型测试操作符instanceof、无符号右移操作符“>>>”、字符串连接操作符“+”等。将操作符与操作数按照特定的规则连接起来,就构成了通常意义上的表达式。2.操作符与表达式

Java的操作符与C语言基本相第-2-章---Java语言基础课件1)算术操作符

算术操作符“+”和“-”既可以作为二元操作符,又可以作为一元操作符。二元算术操作符(+、-、*、/、%)可以作用于任意整型或浮点型的操作数。当两个操作数的类型不同时,需要进行自动类型转换。自动类型转换的规则为:若两个操作数中有一个为double类型,则将另一个操作数转换为double类型;否则,若两个操作数中有一个为float类型,则将另一个操作数转换为float类型;否则,若两个操作数中有一个为long类型,则将另一个操作数转换为long类型;否则,两个操作数均转换为int类型。1)算术操作符

算术操作符“+”和“-”既可以作为第-2-章---Java语言基础课件第-2-章---Java语言基础课件2)关系操作符

关系操作符用来比较两个操作数的大小、相等/不等关系。操作数与操作符共同构成关系表达式,如果表达式成立,则关系运算的结果为true,否则为false。关系操作符的操作数自动类型转换规则与二元算术操作符相同。2)关系操作符

关系操作符用来比较两个操作数的大小3)逻辑操作符

需要特别注意的是,两种与操作“&&”和“&”的运算过程不同,两种或操作“||”和“|”的运算过程也不同。“&&”和“||”称为短路的逻辑操作,在运算过程中,以先左后右的顺序依次计算两个操作数的布尔值,如果左侧操作数的布尔值能够完全决定整个逻辑表达式的布尔值,则不再计算右侧的操作数。相对应地,“&”和“|”称为非短路的逻辑操作,即不管左侧操作数的布尔值能否决定整个逻辑表达式的布尔值,都要先计算右侧操作数的布尔值,然后再求出逻辑表达式的布尔值。3)逻辑操作符

需要特别注意的是,两种与操作“&&第-2-章---Java语言基础课件第-2-章---Java语言基础课件4)位操作符

在处理整型变量或常量时,可以直接对整型值的各个位进行操作,具体操作可通过位操作符完成。位操作符包括位逻辑操作符(&、|、^、~)以及移位操作符(<<、>>、>>>)。二元的位逻辑操作符在操作数的每个对应位上进行相应的逻辑运算。操作符“&”、“|”和“^”到底是作为位操作符使用还是作为逻辑操作符使用,完全取决于其连接的操作数的类型到底是整型还是布尔型。一元位逻辑操作符“~”则是对数据的每个二进制位取反。4)位操作符

在处理整型变量或常量时,可以直接对整第-2-章---Java语言基础课件第-2-章---Java语言基础课件5)赋值操作符

赋值操作符用于将一个表达式的值赋给一个变量。赋值操作符可以与其他操作符一起使用,以使程序表达简练并提高编译速度。赋值操作符的运算属于二元运算,当两个操作数类型不一致时,编译器会进行自动类型转换,转换规则如图2-3所示。5)赋值操作符

赋值操作符用于将一个表达式的值赋给图2-3数值类型之间的合法自动转换图2-3数值类型之间的合法自动转换第-2-章---Java语言基础课件第-2-章---Java语言基础课件

3.操作符的优先级

由多个操作符连接而成的复合表达式,运算时需要按照表2-8所示的优先级顺序由高到低进行运算,对于同级的操作符,其结合方向如表2-8右列所示。通常,圆括号可以帮助程序员在不确定操作符优先级的情况下明确所要进行的运算,如果没有圆括号的辅助,就需要按照表2-8中的优先级次序进行运算。3.操作符的优先级

由多个操作符连接而成的复合表达第-2-章---Java语言基础课件

4.强制类型转换

我们已经知道,收缩(narrowing)类型转换可将较大范围类型的操作数值转换为较小范围类型的操作数值,这一过程往往会损失操作数的精度。收缩类型转换需要通过强制类型转换来完成,不使用强制类型转换会导致编译器报错。类型转换的语法是将目标类型放在圆括号内,后跟要转换的变量、表达式或常量值。4.强制类型转换

我们已经知道,收缩(narrow第-2-章---Java语言基础课件第-2-章---Java语言基础课件2.4程序流控制

程序的执行顺序是由语句控制的,一些语句作为其他语句结构的一部分存在。Java的程序流控制结构与C和C++的程序流控制结构基本相同,不同之处包括:没有goto语句,break可以带标签,J2SE5.0中还加入了一种变形的for循环。2.4程序流控制

程序的执行顺序第-2-章---Java语言基础课件第-2-章---Java语言基础课件第-2-章---Java语言基础课件第-2-章---Java语言基础课件2.5数组与多维数组

数组是绝大多数高级语言都提供的数据结构。在Java中,数组是一种效率最高的存储和随机访问大量同类型元素的方式。数组可以用来存储一个元素个数固定、且元素类型相同的有序集。因此,数组中的元素都是同一种类型,数组的长度在创建时确定,并且在创建后不会改变。数组的大小固定且在生命周期中大小不变正是数组获得效率优势的原因。2.5数组与多维数组

数组是绝大多数高级

1.数组的声明

根据数组的概念,定义一个数组涉及的要素包括元素类型、数组变量名称、数组长度,支持多维数组的语言还涉及数组的维度。其中,元素类型、数组变量名称和维度都需要在数组声明时进行定义,而数组长度一般在数组创建时确定。1.数组的声明

根据数组的概念,定义一个数组涉及的数组的元素类型既可以是基本类型,也可以是引用类型。数组变量的名称沿用变量的命名规则。具体地讲,一维数组的声明方法分两种:

(1)元素类型[]数组引用变量;

(2)元素类型数组引用变量[];数组的元素类型既可以是基本类型,也可以是引用类型。数组变

2.数组的创建、初始化和访问

在Java中,数组类型是一种引用数据类型,每个具体的数组都是被动态创建的实例对象。因而与一般引用类型变量类似地,声明数组变量并不在内存中为数组分配存储空间,而只是创建了一个对数组引用的存储位置。如果数组变量中没有包含对数组对象的引用,则这个变量的值为null。建立数组变量与数组对象之间的引用关系,通常是通过用new关键字创建数组的过程来实现的。具体创建方法为

数组引用变量=new元素类型[数组长度];2.数组的创建、初始化和访问

在Java中,数组类这条语句首先使用“new元素类型[数组长度]”在堆中创建了一个数组对象,然后将这个数组对象的引用赋给了数组变量。如果将上节的数组声明与数组创建合为一步,则基本形式为:

(1)元素类型[]数组引用变量=new元素类型[数组长度];

(2)元素类型数组引用变量[]=new元素类型[数组长度];这条语句首先使用“new元素类型[数组长度]”在堆中创以下问题还需特别注意:

(1)数组变量与数组对象是不同的,变量存储了对数组对象的引用。但在一些情境下,也可以简化地将变量称为“数组”,而不是明确陈述为“指向含有n个T类型元素的数组对象的引用变量”。

(2)所有数组均包含一个表示数组中元素个数的成员变量length。以下问题还需特别注意:

(1)数组变量与数组对象是(3)当创建的数组的元素类型为引用类型T时,数组的每一个元素实际上存储的是对T类型对象的引用,以如下程序为例

Point[]p=newPoint[10];

for(inti=0;i<10;i++)

p[i]=newPoint();

数组p的每个元素的类型为Point引用类型,对于每个Point引用变量p[i],还需要创建具体的Point对象并将对象的引用赋给p[i]。(3)当创建的数组的元素类型为引用类型T时,数组的每一(4)数组的元素类型必须是基本类型、类类型或者接口类型之中的一种。如果T是基本类型,T[]类型的数组变量可以存储null引用,或指向T[]类型数组对象的引用;如果T是引用类型,则T[]类型的数组变量可以存储null引用,或指向S[]类型的数组对象的引用,其中类型S是类型T的子类型或子接口。关于子类型和子接口的概念将在第3章和第4章讲解。

(4)数组的元素类型必须是基本类型、类类型或者接口类型(5)在数组访问表达式中,索引值必须是int类型,对于short、byte或char类型的索引值,编译器将进行自动的扩展类型转换,将其转换为int类型。在数组创建时,new语句中的“数组长度”必须是int型,对于short、byte或char类型的值,通过自动的扩展类型转换将其转换为int类型。(5)在数组访问表达式中,索引值必须是int类型,对于第-2-章---Java语言基础课件(6)与C语言不同,在Java中char[]数组不是一个String,String和char[]数组也都不是以’\u0000’终止的。String中的toCharArray方法可以返回一个char[]数组,关于String的详细介绍见第6.1节。

(7)在Java中,方法可以直接返回一个数组,而不需要像C和C++那样担心对数组的使用超出其生命周期,只要还有引用指向该数组,它就会一直存在,当程序使用完数组后,垃圾收集机制会将其清理。

(8)关于数组的更多操作可参见第6.4节的Arrays类。(6)与C语言不同,在Java中char[]数组不是一

3.数组的复制

由于数组变量是引用变量,因而数组变量之间的赋值是引用赋值,使得两个数组变量都指向相同的内存地址,不能实现数组数据的复制。数组复制的方法有两种:

(1)使用循环语句逐个复制数组元素。如可使用以下代码将source数组的数据复制到target数组:

int[]target=newint[source.length];

for(inti=0;i<source.length;i++)

target[i]=source[i];3.数组的复制

由于数组变量是引用变量,因而数组变(2)使用java.lang.System类中提供的静态arraycopy()方法,该方法的具体定义如下:

staticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength);

其中,srcPos和destPos分别表示源数组src和目标数组dest中的起始位置,从src复制到dest中的元素个数由length决定。可使用如下代码将source数组的数据复制到target数组:

System.arraycopy(source,0,target,0,source.length);(2)使用java.lang.System类中提供的第-2-章---Java语言基础课件

4.多维数组

多维数组的声明与一维数组类似,只是用连续的多对[]表示数组的维度,m维数组需要用m对[]。例如double[][]d和doubled[][]都能够声明double[][]类型的二维数组变量d。4.多维数组

多维数组的声明与一维数组类似,只是用如果在创建数组对象时指定了每个维度的长度值,将创建出规则的数组。如果在创建数组对象时仅指定了部分维度,则当前维度上的元素均为指向剩余维度数组的引用。例如,创建int[][]类型的二维数组a时,使用

int[][]a=newint[2][];

则第一维度上的元素a[0]和a[1]均为指向一维数组的引用,需要分别为它们创建具体的数组对象,例如:

a[0]=newint[5];

a[1]=newint[3];如果在创建数组对象时指定了每个维度的长度值,将创建出规则这使得我们能够创建出不规则的数组。a[0][1]表示访问由a[0]指向的一维数组对象中索引为1的元素。我们也可以使用初始化器来对不规则的二维数组进行创建和初始化:

int[][]a={{1,2,3,4,5},{1,2,3}};

多维数组的每一维都有长度,每一维的长度都可以通过length变量获取,例2-14给出了例子说明不规则数组的各个维度上的数组长度。这使得我们能够创建出不规则的数组。a[0][1]表示访问第-2-章---Java语言基础课件第2章Java语言基础2.1标识符与关键字2.2数据类型2.3变量、操作符与表达式2.4程序流控制2.5数组与多维数组第2章Java语言基础2.1标识符与关键字2.1标识符与关键字

Java语言的输入元素包含空白、注释和记号(token)三大类,而记号又分为标识符、关键字、常量、分隔符和操作符五类。记号实际上是Java语法的最小单元。2.1标识符与关键字

Java语

1.Unicode字符集

Java源程序是使用Unicode国际标准字符集中的字符编写的,这不同于C语言所使用的传统ASCII字符集。Unicode字符集中的字符最初都是用等宽的16bit编码的,后来改为支持需要多于16bit才能表示的字符。目前Unicode支持的字符编码范围为0x0000~0x10FFFF,其中从0xFFFF往后的字符称为增补字符。增补字符无法用一个16bit编码表示。1.Unicode字符集

Java源程序是使用Un第-2-章---Java语言基础课件

2.标识符

标识符的定义还应遵循以下规则。

(1)标识符中的字母不仅限于A~Z、a~z,还可以取自Unicode字符集中大于等于0x00c0的、在所有国际语言中相当于一个字母的任何Unicode字符。因此Java支持程序员用其本国语言进行标识符命名。

(2)标识符不能是Java关键字、布尔常量(true/false)或null常量。

(3)标识符大小写敏感。

(4)标识符不能包含空白。2.标识符

标识符的定义还应遵循以下规则。

(在标识符命名方面,除了要考虑合法性之外,还需要考虑命名是否易于理解。因此,除上述规则之外,还存在一系列非强制性的风格约定,例如:

(1)不使用“_”、“$”作为标识符的第一个字符。

(2)类名、接口名的所有单词首字母大写,其余字母小写,如类名HelloWorld。

(3)变量名、方法名首单词小写,其余单词的首字母大写,如变量名someVariable。

在标识符命名方面,除了要考虑合法性之外,还需要考虑命名是(4)常量名完全大写,由“_”分隔,如常量名CONST_POOL

_NUM。

(5)方法名使用动词,类名和接口名使用名词,变量名尽量有含义。

(6)在定义类名时不要使用“$”,否则该类的.class文件可能与编译器生成的内部类.class文件冲突。(4)常量名完全大写,由“_”分隔,如常量名CON

3.关键字

关键字(keyword)是程序语言中预先定义的有特殊意义的标识符。表2-2中由ASCII字符组成的字符序列被保留为Java的关键字。3.关键字

关键字(keyword)是程序语言中预第-2-章---Java语言基础课件

4.注释

Java中注释的表示方式分三种:

(1)/*传统注释*/;

(2)//单行注释;

(3)/**文档注释,可以使用javadoc工具生成HTML格式的文档*/。

4.注释

Java中注释的表示方式分三种:

(使用注释时需要注意以下两点:

(1)注释不支持嵌套,即在开始于“//”的注释中,“/*”和“*/”没有特殊的意义,而在开始于“/*”或“/**”的注释中,“//”没有特殊的意义。

(2)Java语法规则要求注释不能出现在字符常量和字符串常量之中。使用注释时需要注意以下两点:

(1)注释不支持嵌套

5.空白与分隔符

Java中的空白包括ASCII空格、水平制表符、换页符以及行终止符等。它可以由六种Unicode字符或字符串表示:

(1)空格\u0020,对应于ASCII字符SP;

(2)水平制表符\u0009,对应于ASCII字符HT;

(3)换页符\u000C,对应于ASCII字符FF;

(4)换行符\u000A,对应于ASCII字符LF;

(5)回车符\u000D,对应于ASCII字符CR;

(6)字符串\u000D\u000A,对应于ASCII字符串CRLF。5.空白与分隔符

Java中的空白包括ASCII空第-2-章---Java语言基础课件2.2数据类型

数据类型广泛存在于Java语言的常量、变量、表达式、方法和类属性中。Java是一种强类型的语言,因而Java的每个变量和表达式均有一个编译时可知的确定类型。Java虚拟机希望尽可能多的类型检查能够在程序运行之前完成。类型的意义在于,限定变量和表达式的取值范围、限定在特定值上能够执行的操作、确定操作符的意义等。2.2数据类型

数据类型广泛存在

1.布尔型

布尔型表示一个逻辑量,布尔型对应的关键字为boolean。boolean类型的数据有两种可能的取值,分别由布尔常量true和false表示。boolean类型的变量如果有默认初始值,则默认初始值为false。与C语言不同,Java中布尔值与整型值之间不能相互转换。boolean类型的值可以通过关系操作符、逻辑操作符等进行运算,可以作为多种复杂程序流程的分支判定条件。1.布尔型

布尔型表示一个逻辑量,布尔型对应的关键

2.整型

Java中的整形包含byte、short、int、long、char五种。它们的长度与取值范围如表2-4所示。2.整型

Java中的整形包含byte、short第-2-章---Java语言基础课件第-2-章---Java语言基础课件

例2-1CharConst.java:字符常量的表示方法。例2-1CharConst.java:字符常量的表示

3.浮点型

浮点型用于表示有小数部分的数值。Java中的浮点型包括float和double两种,分别用来表示《IEEEStandardforBinaryFloatingPointArithmetic》(ANSI/IEEEStd.7541985)标准(即通常所说的IEEE754标准)定义的单精度浮点型和双精度浮点型。它们的长度与取值范围如表2-6所示。float类型的最小正非零值约为1.40E-45F,而double类型的最小正非零值约为4.9E-324。3.浮点型

浮点型用于表示有小数部分的数值。J第-2-章---Java语言基础课件

例2-2PrimitiveConst.java:基本数据类型的特殊值。例2-2PrimitiveConst.java:基本第-2-章---Java语言基础课件2.3变量、操作符与表达式

1.变量

Java中的变量实际上是一种与特定类型关联的存储位置(storagelocation),这一类型称为变量的编译时类型。2.3变量、操作符与表达式

1.变量

当声明基本类型的变量时,运行系统直接分配出数据空间,用于保存相应类型的值。而对于引用类型变量,在声明时,运行系统只是分配出存放对具体对象的引用空间,而对象的数据空间并未分配。也就是说,这时的引用类型变量并未关联到任何对象,因而不能直接通过这一变量访问对象的内容。例如:

Rectanglerect;

rect.width=5;//错误,rect并未指向任何Rectangle类型的实例对象当声明基本类型的变量时,运行系统直接分配出数据空间,用于引用类型的变量在声明后必须先通过实例化开辟数据空间,此后才能通过变量访问对象的内容。实例化的方法是使用关键字new调用类的构造方法,例如:

Rectanglerect;

rect=newRectangle(3.0,2.0);引用类型的变量在声明后必须先通过实例化开辟数据空间,此后图2-1引用变量的声明与实例化图2-1引用变量的声明与实例化引用类型变量之间的赋值是引用赋值,引用赋值会导致多个引用都指向同一个数据对象,而不会创建出新的数据对象,例如:

Rectanglerect,rect2;

rect=newRectangle(3.0,2.0);

rect2=rect;

赋值过程中内存空间的变化如图2-2所示。引用类型变量之间的赋值是引用赋值,引用赋值会导致多个引用图2-2引用变量之间的赋值图2-2引用变量之间的赋值1)成员变量

成员变量是表示类和对象特征的变量。成员变量在类定义中进行定义,且位于方法定义之外。成员变量的作用域至少包括整个类,根据变量的访问权限修饰符的不同,成员变量还可作用于外界的其他类。1)成员变量

成员变量是表示类和对象特征的变量。成2)局部变量

局部变量是在方法或者代码块内部定义的变量。其作用域从声明变量的位置开始,直到包含该变量的块结束为止。当程序的执行流执行到该变量的声明语句时,局部变量被创建。当方法体或代码块执行结束后,局部变量被销毁。与成员变量不同的是,局部变量的初始化不会自动完成,需要在编程时通过显式的赋值进行初始化,否则就无法使用。如果编译器确定程序使用了没有经过初始化的局部变量,编译器会报错。2)局部变量

局部变量是在方法或者代码块内部定义的3)方法参数

方法参数定义了在方法调用时传递给方法的参数值对应的名称,其作用域就是所在方法的内部。每当方法调用一次,方法参数变量就会被创建一次,并由方法调用者所提供的参数值进行变量初始化。方法参数还可细分为成员方法参数和构造方法参数两种。有时方法参数也可以简化地看做是局部变量。3)方法参数

方法参数定义了在方法调用时传递给方法4)异常处理参数

异常处理参数是catch语句块的入口参数。每当try语句块中抛出的异常被一个catch语句块捕获时,就会创建一个异常处理参数,这个参数的初始化值即为被抛出的那个代表实际异常的对象的引用。当整个catch语句块执行完毕后,异常处理参数被销毁。4)异常处理参数

异常处理参数是catch语句块的

例2-3VariablesAndLocalVarInit.java:各类变量及局部变量的初始化。例2-3VariablesAndLocalVarI

2.操作符与表达式

Java的操作符与C语言基本相同,具有C语言基础的读者可以很快地掌握Java操作符及其运算规则,二者相同的部分,我们仅做简要介绍。二者的区别主要体现在以下几方面:首先,Java是强类型语言,其类型检查比C语言更加严格,操作符的操作对象类型会受到更多限制;其次,C语言中的指针操作符在Java中不存在,而Java中增加了引用类型测试操作符instanceof、无符号右移操作符“>>>”、字符串连接操作符“+”等。将操作符与操作数按照特定的规则连接起来,就构成了通常意义上的表达式。2.操作符与表达式

Java的操作符与C语言基本相第-2-章---Java语言基础课件1)算术操作符

算术操作符“+”和“-”既可以作为二元操作符,又可以作为一元操作符。二元算术操作符(+、-、*、/、%)可以作用于任意整型或浮点型的操作数。当两个操作数的类型不同时,需要进行自动类型转换。自动类型转换的规则为:若两个操作数中有一个为double类型,则将另一个操作数转换为double类型;否则,若两个操作数中有一个为float类型,则将另一个操作数转换为float类型;否则,若两个操作数中有一个为long类型,则将另一个操作数转换为long类型;否则,两个操作数均转换为int类型。1)算术操作符

算术操作符“+”和“-”既可以作为第-2-章---Java语言基础课件第-2-章---Java语言基础课件2)关系操作符

关系操作符用来比较两个操作数的大小、相等/不等关系。操作数与操作符共同构成关系表达式,如果表达式成立,则关系运算的结果为true,否则为false。关系操作符的操作数自动类型转换规则与二元算术操作符相同。2)关系操作符

关系操作符用来比较两个操作数的大小3)逻辑操作符

需要特别注意的是,两种与操作“&&”和“&”的运算过程不同,两种或操作“||”和“|”的运算过程也不同。“&&”和“||”称为短路的逻辑操作,在运算过程中,以先左后右的顺序依次计算两个操作数的布尔值,如果左侧操作数的布尔值能够完全决定整个逻辑表达式的布尔值,则不再计算右侧的操作数。相对应地,“&”和“|”称为非短路的逻辑操作,即不管左侧操作数的布尔值能否决定整个逻辑表达式的布尔值,都要先计算右侧操作数的布尔值,然后再求出逻辑表达式的布尔值。3)逻辑操作符

需要特别注意的是,两种与操作“&&第-2-章---Java语言基础课件第-2-章---Java语言基础课件4)位操作符

在处理整型变量或常量时,可以直接对整型值的各个位进行操作,具体操作可通过位操作符完成。位操作符包括位逻辑操作符(&、|、^、~)以及移位操作符(<<、>>、>>>)。二元的位逻辑操作符在操作数的每个对应位上进行相应的逻辑运算。操作符“&”、“|”和“^”到底是作为位操作符使用还是作为逻辑操作符使用,完全取决于其连接的操作数的类型到底是整型还是布尔型。一元位逻辑操作符“~”则是对数据的每个二进制位取反。4)位操作符

在处理整型变量或常量时,可以直接对整第-2-章---Java语言基础课件第-2-章---Java语言基础课件5)赋值操作符

赋值操作符用于将一个表达式的值赋给一个变量。赋值操作符可以与其他操作符一起使用,以使程序表达简练并提高编译速度。赋值操作符的运算属于二元运算,当两个操作数类型不一致时,编译器会进行自动类型转换,转换规则如图2-3所示。5)赋值操作符

赋值操作符用于将一个表达式的值赋给图2-3数值类型之间的合法自动转换图2-3数值类型之间的合法自动转换第-2-章---Java语言基础课件第-2-章---Java语言基础课件

3.操作符的优先级

由多个操作符连接而成的复合表达式,运算时需要按照表2-8所示的优先级顺序由高到低进行运算,对于同级的操作符,其结合方向如表2-8右列所示。通常,圆括号可以帮助程序员在不确定操作符优先级的情况下明确所要进行的运算,如果没有圆括号的辅助,就需要按照表2-8中的优先级次序进行运算。3.操作符的优先级

由多个操作符连接而成的复合表达第-2-章---Java语言基础课件

4.强制类型转换

我们已经知道,收缩(narrowing)类型转换可将较大范围类型的操作数值转换为较小范围类型的操作数值,这一过程往往会损失操作数的精度。收缩类型转换需要通过强制类型转换来完成,不使用强制类型转换会导致编译器报错。类型转换的语法是将目标类型放在圆括号内,后跟要转换的变量、表达式或常量值。4.强制类型转换

我们已经知道,收缩(narrow第-2-章---Java语言基础课件第-2-章---Java语言基础课件2.4程序流控制

程序的执行顺序是由语句控制的,一些语句作为其他语句结构的一部分存在。Java的程序流控制结构与C和C++的程序流控制结构基本相同,不同之处包括:没有goto语句,break可以带标签,J2SE5.0中还加入了一种变形的for循环。2.4程序流控制

程序的执行顺序第-2-章---Java语言基础课件第-2-章---Java语言基础课件第-2-章---Java语言基础课件第-2-章---Java语言基础课件2.5数组与多维数组

数组是绝大多数高级语言都提供的数据结构。在Java中,数组是一种效率最高的存储和随机访问大量同类型元素的方式。数组可以用来存储一个元素个数固定、且元素类型相同的有序集。因此,数组中的元素都是同一种类型,数组的长度在创建时确定,并且在创建后不会改变。数组的大小固定且在生命周期中大小不变正是数组获得效率优势的原因。2.5数组与多维数组

数组是绝大多数高级

1.数组的声明

根据数组的概念,定义一个数组涉及的要素包括元素类型、数组变量名称、数组长度,支持多维数组的语言还涉及数组的维度。其中,元素类型、数组变量名称和维度都需要在数组声明时进行定义,而数组长度一般在数组创建时确定。1.数组的声明

根据数组的概念,定义一个数组涉及的数组的元素类型既可以是基本类型,也可以是引用类型。数组变量的名称沿用变量的命名规则。具体地讲,一维数组的声明方法分两种:

(1)元素类型[]数组引用变量;

(2)元素类型数组引用变量[];数组的元素类型既可以是基本类型,也可以是引用类型。数组变

2.数组的创建、初始化和访问

在Java中,数组类型是一种引用数据类型,每个具体的数组都是被动态创建的实例对象。因而与一般引用类型变量类似地,声明数组变量并不在内存中为数组分配存储空间,而只是创建了一个对数组引用的存储位置。如果数组变量中没有包含对数组对象的引用,则这个变量的值为null。建立数组变量与数组对象之间的引用关系,通常是通过用new关键字创建数组的过程来实现的。具体创建方法为

数组引用变量=new元素类型[数组长度];2.数组的创建、初始化和访问

在Java中,数组类这条语句首先使用“new元素类型[数组长度]”在堆中创建了一个数组对象,然后将这个数组对象的引用赋给了数组变量。如果将上节的数组声明与数组创建合为一步,则基本形式为:

(1)元素类型[]数组引用变量=new元素类型[数组长度];

(2)元素类型数组引用变量[]=new元素类型[数组长度];这条语句首先使用“new元素类型[数组长度]”在堆中创以下问题还需特别注意:

(1)数组变量与数组对象是不同的,变量存储了对数组对象的引用。但在一些情境下,也可以简化地将变量称为“数组”,而不是明确陈述为“指向含有n个T类型元素的数组对象的引用变量”。

(2)所有数组均包含一个表示数组中元素个数的成员变量length。以下问题还需特别注意:

(1)数组变量与数组对象是(3)当创建的数组的元素类型为引用类型T时,数组的每一个元素实际上存储的是对T类型对象的引用,以如下程序为例

Point[]p=newPoint[10];

for(inti=0;i<10;i++)

p[i]=newPoint();

数组p的每个元素的类型为Point引用类型,对于每个Point引用变量p[i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论