资源描述
Java软件设计基础,2. Java语言基础,2.1 符号,标识符 程序中要用到许多名字,诸如类、对象、变量、方法等。标识符就是用来标识它们的唯一性和存在性的名字。 Java采用Unicode字符集,由16位构成。 标识符分为两类: 保留字:是Java预定义的标识符,都具有特定的含义,保留字又称关键字。,用户定义标识符:是程序设计者根据自己的需要为定义的类、对象、变量、方法等的命名。 用户自定义标识符的定义规则: 以字母、下划线或$符开头的字母、下划线、数字、 $符的序列。 一些由开发环境自动生成的名称中会带有$符或下划线,因此虽然规则允许,但是自定义的变量名称中应尽量避免使用$符或下划线。 标识符区分大小写。 标识符不能与保留字同名。 标识符遵守先定义后使用的原则。 虽然true、false和null并不是关键字,但其代表的是值,也不可以用以上三个作为自定义标识符的名字。 标识符的长度是任意的。 虽然如此,但不宜过长,也不宜取难以理解的简写。最好有象征性含义,起到见文生意的作用,提高程序的可读性。,分隔符 规定任意两个相邻标识符、数、保留字或两个语句之间必须至少有一个分隔符,以便编译程序能识别。 分隔符不能互相代用。 分隔符的分类 空白分隔符 空格、TAB制表符、换行符与回车符都是典型的空白分隔符。 为了程序的可读性和美观,语句的成分之间可以插入任意多个空白分隔符,在编译时系统会自动忽略多余的空白分隔符。,普通分隔符 用来定义复合语句、类体、方法体以及进行数组的初始化等。 ;表示一条语句的结束。 ,用来分隔变量的说明和方法的参数等。 :说明语句标号等。 注释语句 注释用来对程序中的代码做出解释。注释部分对程序的执行不产生任何影响,可增加程序的可读性,有利于程序的修改、调试、交流。 注释语句的格式,第一种用于行注释;第二、三种用于多行注释。 编码规范 规范原则 尽量使用完整的英文描述符; 采用大小写混合使名字可读,采用适用于相关领域的术语; 尽量少用缩写,若已使用尽量明智,且在整个文件或工程中通用; 避免使用长的和类似的名字,或仅仅是大小写不同的名字; 除静态常量外,尽量少用下划线。 约定细则 源文件命名规则 源程序中包含有公共类的定义,源文件名必须与该公共类的名字一致。在一个源程序中至多只能有一个公共类的定义;,源程序中不包含公共类,则该文件名只要和某个类名字相同即可; 源程序中有多个类的定义,编译时将会为每个类生成一个class文件。 包 包名是全小写的名词,中间可以由点分隔开,如java.awt.event。 类 类名首字母大写,若由多个单词合成一个类名,要求每个单词的字母也要大写,如MyFirstJava。 接口 命名规则同类名,如Collection。 方法 由多个单词组成的方法名首字母小写,中间的每个单词首字母大写,如isButtonPressed。 变量 一般全小写,如length。,常量 一般全大写,如果由多个单词组成则中间用下划线相连。如果是对象类型的常量,则是大小写混合,由大写字母把单词隔开,如STR_LENGTH。 组件 使用完整的英文描述来说明组件的用途,尾部应该加上组件类型,如okButton。,2.2 基本数据类型,概述 Java数据类型的分类 Java数据存储空间大小,Java数据类型,复合数据类型,基本数据类型,数值型 字符型:char 布尔型:boolean,数组:array 接口:interface 类:class,整型 浮点型,字节型:byte 短整型:short 整型:int 长整型:long,单精度:float 双精度:double,默认值 声明字段时不必为其赋值。被声明但是没有初始化的字段会被编译器设置为合理的默认值。 局部变量稍有不同,编译器永远都不会给未初始化的局部变量分配默认值。如果在声明局部变量时不能初始化它,就要确保使用之前为其赋值,否则将导致编译错误。,字面量(literal) 当初始化原始类型的变量时,没有使用到关键字new。 原始类型是语言内置的特殊数据类型,不是从类创建的对象。 字面量是固定值的源代码表现形式,直接出现在代码中,无需计算。 特殊的字面量null 可以用作任何引用类型的值,可以赋值给除了属于原始数据类型的变量之外的任何变量。除了测试其存在之外,对null值没有什么可做的操作,因此在程序中常使用null作为标识,表示某个对象不可用。,整数类型 整型是那些没有小数部分的数据类型。 不同整数数据类型的意义在于它们所需的内存空间大小不同,这也决定了它们所能表达的数值范围的不同。 采用不同的整数类型表达同一数值,在存储单元中的存储情况是不同的。 分类 byte,short,int,long 在内存紧张的情况下,可将byte或short用于大型数组以便节省内存。,整型数20在内存中的存储形式,int是整数值的默认选择类型,除非出于某种原因选择其他类型。 当将超过int数值范围的值付给long类型的时候,必须在值后加上L或者l。 表示形式 十进制整数,如33,58,-90。 八进制整数,以0开头,如010表示十进制的8。 十六进制整数,以0 x开头,如0 x10表示十进制的16。 浮点型 分类 float Java缺省的浮点类型是double,给float变量赋予带小数的初值时必须在数值后加f或F。 double 给该类变量赋值时可以在后面加上d或D。,表示方法 十进制形式 科学计数法或指数形式 字母E表示以10为底的指数。采用科学表示法时,尾数必须有,但小数部分可无,阶码必须有且是整数。 字符型 Java的字符使用16位的Unicode编码表示,它可以支持世界上的所有语言。 “u0000”“u00FF”用来表示ASCII码集。 表示形式 包括在单引号之内的单个字符; 用单引号括起来的八进制Unicode字符,形式为ddd,d的范围是07;,用单引号括起来的十六进制Unicode字符,形式为uxxxx,x的范围是0F; 不能显示的控制字符,可以通过转义字符来表示; 注意 char类型是一种特殊类型的整数类型,没有负数,其范围是065535,它们可以被转换为整数并可以进行整数运算。 把字符串包含在双引号中,就会自动的创建新的String对象。String对象是不可变的,即创建后就不能改变他们的值。,布尔型 被用作真/假条件的简单标志,与C/C+不同的是,它的值不与任何整数值对应。,2.3 常量与变量,常量 常量是指在程序运行过程中其值不变的量。常量在表达式中用文字串表示,它有整型常量、字符型常量等等不同的类型。 常量通过用关键字final来实现声明,通常写在最前面。 变量 变量用来存放指定类型的数据,其值在程序运行过程中是可变的。 变量的声明 使用一个变量之前必须先声明它。一方面给该变量分配内存空间,另一方面防止在以后使用此变量时因错误输入而对不存在的变量进行操作。,final 类型 常量名=常量值;,以“变量名”为名建立一个某类型的变量; ;表示声明语句的结束; 表示可选; 可在一条语句中定义多个同类型的变量,中间用逗号隔开; 在声明的同时可以赋值; 修饰符也称为作用域,指明作用域的类型; 数据类型决定了变量所包含的值的范围、可对变量进行哪些操作以及如何定义这些操作; 变量的使用 变量的初始化是简单的赋值使用,当在语句中使用到该变量的名称时,编译器会自动将当时变量的值取来用。 局部变量在使用前必须初始化。,修饰符 类型名 变量名1,变量名2,;,修饰符 类型名 变量名1=初值1,变量名2=初值2,;,变量的类型 基本数据类型(布尔型、字符型、整型、浮点型、数组、接口、类) 变量的作用域 Java中的变量有一定的生存期和有效范围,变量的作用域指明可访问该变量的一段代码。 按照作用域划分: 全局变量:可以在整个类中被访问; 局部变量:在方法或方法的一个代码块中声明,它的作用域为它所在的代码块; 类变量:在类中声明,而不是类的某个方法中声明,作用域为整个类; 方法参数(变量):作用域为传递给的那个方法; 异常处理参数:传递给异常处理代码,作用域是异常处理部分。,将语句”int j=58;”放在语句”int i=15;”后面,则变量j的作用域变为整个main()方法,程序编译通过。,2.4 运算符,程序中用来处理数据、表示数据运算、赋值和比较的符号称为运算符,参与运算的数据称为操作数。 分类 算术运算符 算术运算符用于对整型数和实型数的运算。按照其要求的操作数个数分为一元运算符和二元运算符两类。 +(正号)、-(负号)、+(自增)、-(自减); +(数值加、连接字符串)、-(减)、*(乘)、/(除)、%(取模)。 +x是在变量参与运算之前自增1,然后用新值参与运算;而x+是先用以前的值参与运算,再自增1;-x和x-同理。 除号“/”中,如果运算符两边的操作数都是整数,则计算结果只保留整数部分。 当+作为字符串连接操作符时,可以连接两个字符串、字符串与字符、字符串与数字。,比较运算符 又称关系运算符,有=(等于)、!=(不等于)、(大于)、=(大于等于)、=(小于等于)、instanceof(是否为某类对象)几种; 在一个比较运算符两边的数据类型应该一致,比较逻辑成立为true,不成立为false; 如果操作数是对象变量,则对象变量引用同一个对象或都为null的时候为true,否则为false。 逻辑运算符 又称布尔运算符,用于对布尔型操作数进行计算。 !(非) 因为Java的自动提升功能,导致结果是int类型,无法赋值给范围更小的short类型,int i1=dd+7; dd+7的值是double型,无法赋值给int类型,如果改为“int i1=(int)dd+7;”则编译通过,boolean bool=true 布尔型与数字类型、字符型互相不兼容。,2.5 数组,数组是相同类型的数据元素按顺序组成的一种复合数据类型。 特点 数组也是一个对象; 一个数组中所有的元素应该是同一类型; 数组中的元素是有序的; 数组中的一个元素通过数组名和数组下标来确定。 分类 基本数据类型的数组与复合数据类型的数组 一维数组和多维数组 一维数组 声明格式:,数组名的命名方法同简单变量,可以是任何合法的标识符; 类型标识符可以是基本数据类型或者是类、接口; 分配数组空间 在声明数组时,不直接指出数组中的元素个数(即数组长度)。数组说明之后不能立即被访问,因为还没有为数组元素分配内存空间。因此需要使用new操作来构造数组,为其分配内存空间,格式如下:,类型 数组名;,类型 数组名;,数组名 = new 类型元素个数;,元素个数即数组长度。数组分配空间是连续的,可以通过属性length获得该数组的元素个数,方法如下: 声明数组的同时分配数组空间 数组一旦创建之后,就不能再改变其长度!,数组名.length;,类型 数组名 = new 类型元素个数;,类型 数组名 = new 类型元素个数;,数组的初始化 用new分配空间后,系统将为每个数组元素都赋予一个初值,初值取决于数组的类型。 数值型数组:0 字符型数组:不可见ISO控制符(u000) 布尔型数组:false 字符串数组以及其他对象数组:null 当不希望数组的初值为系统给定的默认值时,可以用赋值语句对数组进行初始化。 初始化可以在数组声明时进行,也可以声明以后,在构造数组的时候赋值。 其中初值表是用逗号隔开的一组值。,类型 数组名 = 初值表;,数组名下标 = 初值;,数组元素的使用 当声明了一个数组并分配了内存空间后,就可以在程序中任何可以使用变量的地方使用数组元素,其格式为: 其中下标为非负的整型常数或表达式,其数据类型为int、short、byte,但不可以是long。 Java会对数组的下标进行越界检查以保证安全性。下标的范围是从0到数组的长度减一。,数组名下标,多维数组 严格的说Java并不支持多维数组,多维数组的声明是通过对一维数组的嵌套形式声明来实现的。这样的好处是允许行的长度可变。 二维数组的声明 分配二维数组空间 数组分配空间是连续的,构造方法如下: 直接为每一维分配空间,类型 数组名;,类型 数组名;,数组名 = new 类型行数列数;,从最高维开始,分别为每一维分配空间 可以通过属性length获得该数组的元素个数,方法如下: 数组名.length求出多维数组中第一维的长度; 数组名0.length求出多维数组中第二维的长度; 依此类推求出其余维的长度。 在使用new来分配内存时,对于多维数组至少要给出最高维的大小。 在声明二维数组的同时分配数组空间,类型 数组名 = new 类型行数列数;,类型 数组名 = new 类型行数列数;,二维数组初始化 赋初值与一维数组类似,可以直接对每个元素赋值,或者使用初值表赋值。 以下两种初始化方式是等价的:,类型 数组名 = 初值表1,初值表2,初值表n;,数组名行下标列下标 = 初值;,多维数组的创建和使用 声明 创建 使用,类型 数组名;,类型 数组名;,类型 数组名 = new 类型长度1长度2长度n;,类型 数组名 = new 类型长度1长度2长度n;,数组名下标1下标2下标n,复制数组 通过System类提供的arraycopy方法,格式如下 其中src和dest分别表示被复制的数组和目的数组。srcpos、destpos和length分别表示源数组中的开始位置、目的数组中的开始位置和要复制的数组元素的数量。,public static void arraycopy(Object src,int srcpos,Object dest,int destpos,int length),2.6 字符串,字符串是字符组成的序列,Java语言将字符串作为对象来处理。 分类: String类用于存储和处理那些值不会发生改变的字符串常量; StringBuffer类用于存储和操作那些可能发生变化的字符串变量。 字符串变量的声明 String字符串的创建 其中字符串内容即为赋给字符串变量的值。,String 字符串变量名 = new String();,String 字符串变量名 = new String(字符串内容);,StringBuffer字符串的创建 字符串变量赋值引用 字符串变量声明以后,就可以为其赋值引用。赋值引用既可以为变量赋予一个字符串常量,也可以将一个字符串变量或表达式的值赋给字符串变量。,StringBuffer 字符串变量名 = new StringBuffer();,StringBuffer 字符串变量名 = new StringBuffer(字符串内容);,字符串连接操作 字符串的简单连接利用“+”来完成。 其他类型的数据与字符串进行“+”运算时,将自动换成成字符串。 以下两段语句是等价的: 字符串的输出,System.out.print(字符串);,System.out.println(字符串);,字符串常用操作 String类提供的字符串操作方法:,续,StringBuffer类提供的字符串操作方法,2.7 表达式、语句和块,表达式(Expression) 表达式是由操作数和运算符按照一定的语法形式组成的符号序列,计算出单一值,该值的类型取决于表达式中使用的元素。 表达式是语句的核心部分。 Java允许使用各种较小的表达式构成复合表达式,但表达式各个部分的数据类型要匹配。,语句(Statement) 语句是程序的基本组成单位,组成了一个完整的执行单元,大致相当于自然语言中的句子。下面的表达式类型以;结尾时可以组成一个语句: 赋值表达式; +或-; 方法调用; 对象创建表达式。 上述语句被称为表达式语句。除了这些,还有另外两种语句: 声明语句 用来声明一个变量等。 控制流语句 控制语句的执行次序。,块(block) 是位于成对大括号之间的零个或多个语句的语句组,可以在允许使用单一语句的任何位置使用块。,
展开阅读全文