第二章Java语言基础2.1标识符和关键字P23-24合法的标识符标识符是指类、方法、常量、变量、接口和包等的名称。(1)标识符必须以大小写字母、数字、_和$组成,但不可以用数字开头。例如:PinNum、_abc33、$Qian等等都是合法的;100Age,myage,abc#,@hotmail都是不合法的标识符。(2)Java语言严格区分大小写。标识符的命名习惯:类:每个单词的首字母大写方法:第一个字母小写,其它单词首字母大写变量:第一个字母小写,其它单词首字母大写常量:所有字母均大写,单词之间使用下划线分开2.1标识符和关键字P24关键字(ReservedWords,也叫保留字)是Java语言语法的组成部分,具有特殊的含义,不可以作为标识符使用。48个关键字2.2数据类型和变量定义常量和赋初值格式:final数据类型常量名[=常量值];Examples:finaldoublePI=3.1415926;finalintCOUNT=1000;2.2数据类型和变量定义变量和赋初值格式:数据类型变量名1[=初值1][,变量名2[=初值2],……];Examples:intabc=30;doublea,b,c;2.2数据类型和变量变量的作用域域{}可以是类体,方法体,复合语句。在一个确定的域中,变量名唯一Example2.2数据类型和变量Java将数据分成基本数据类型和复合数据类型两大类。基本数据类型又可以分成整数类型、浮点类型、逻辑类型和字符类型4种。基本数据类型:2.2数据类型和变量字符型常量定界符:单引号转义符:P27表2-2字符型变量charch=‘k’;字符串常量定界符:双引号字符串连接:“+”2.2数据类型和变量整型P28实型P29布尔型booleantrue/false不对应于任何整数值数据类型转换默认转换规则P30注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换强制类型转换Example:inti;byteb=(byte)i;2.3字符串--字符字符是指用单引号括起来单个字符,占2个字节的Unicode字符。因为Unicode被设计用来处理现在世界上所有书面语言中的字符,所以一个汉字也是被当作一个字符来处理的。对于单个字符,除了有char这个原始类型以外,Java平台中的java.lang包还专门提供了一个Character类来进行储存和操作。Character类的构造函数Character类只能用于存储和操作单一的字符数值,Character类的对象包含了单一字符数值。以下是Character类提供的构造函数:publicCharacter(char)参数必须为一个char类型数据,它创建了一个Character对象,该对象包含了由参数提供的数值。一旦Character对象被创建,它包含的数值就不能改变。下面的语句将创建一个Character对象a,该对象包含字符数据’b’:Charactera=newCharacter('b');2.3字符串--字符2.3字符串--字符Character类提供的常用方法1.publicintcompareTo(Character)compareTo(Character)是一个实例方法,参数必须为一个Character对象,而不能是char类型数据。该方法比较两个Character对象包含的数值,返回一个整数表明在当前对象中的数值是否大于、等于或者小于参数给定的数值。2.publicbooleanequals(Objectobj)equals()是一个实例方法,用于比较两个对象。用于Character类对象时,该方法比较当前对象容纳的数值和参数对象容纳的数值。在两个对象容纳的数值相等的时候返回true,否则返回false。2.3字符串--字符Character类提供的常用方法3.publicStringtoString()所有的类从对象类继承了toString方法。toString是一个实例方法,它将对象转换为字符串。该方法用于Character类对象时,结果的字符串在长度为1,并且它包含了有这个Character对象容纳的数值。4.publiccharcharValue()charValue是一个实例方法,它返回Character对象的字符。5.publicstaticbooleanisUpperCase(char)isUpperCase(char)是一个类方法,该方法用来判断字符参数值是否为大写。当字符参数值是大写时,返回值为true,否则返回false。2.3字符串--字符串字符串指的是字符的序列,有两种类型的字符串:字符串常量,String类用于存储和处理字符串常量;字符串变量,StringBuffer类用于存储和操作字符串变量。String类-字符串连接在Java中,没有内置的字符串类型,字符串常量是作为String类的对象存在。注:Java不允许对String对象进行操作,但有一个例外就是+运算符,它可以连接两个字符串。String类-求子串利用String类提供的substring方法可以从一个大的字符串中提取一个子串,该方法有两种常用的形式:1)publicStringsubstring(intbeginIndex)该方法从beginIndex位置起,从当前字符串中取出剩余的字符作为一个新的字符串返回。2)publicStringsubstring(intbeginIndex,intendIndex)该方法从当前字符串中取出一个子串,该子串从beginIndex位置起至endIndex-1为结束。子串返的长度为endIndex-beginIndex。修改字符串String对象本身是不能改变的,修改字符串的方法有多种,但都将构造一个完成修改的字符串的副本。另外也可用StringBuffer类修改字符串String类---修改字符串P31-341.利用substring方法修改字符串P32例2-32.利用concat方法连接两个字符串3.利用replace方法4.利用trim方法String类测试串相等比较相等利用equals方法利用equalsIgnoreCase方法比较大小compareTo方法2.4数组理解数组这种数据结构连续存储空间(固定长度),相同数据类型(简单数据类型或者复杂数据类型均可),随机访问(index),一个名称,在Java中,数组也是一个对象。数组是一个Object类的一个不明显的扩展,所以可以指定一个数组给一个类型定义为Object的变量。考虑:如果需要在一个数据结构中存储不同类型的数据,或者需要一个长度可变的结构怎么办?2.4数组在Java中,一个数组的创建一般需要以下三个步骤:1.数组的声明数组元素类型数组名[];数组元素类型[]数组名;2.创建数组空间数组名=new数组元素类型[数组长度];创建数组空间的工作可以和声明数组的工作组合在一起,用一条语句来实现。如:inta[];a=newint[20];等价于:inta[]=newint[20];2.4数组3.初始化数组初始化数组就是要使数组中的各个元素有确定的数值。如果数组元素的类型是基本数据类型,由于基本数据类型都有缺省值,数组元素都自动初始化为缺省值。如果需要给数据元素赋其他的值,可以有静态与动态两种方式:静态:intintArray[]={1,2,3};intintArray[][]={{1,2},{3,4}};动态:intintArray[]=newint[3];intArray[0]==1;…….对于以某个类的对象为数组元素的数组,初始化每个数组元素是必须的。复杂数据类型,需要给每一个元素分配空间:StringstrArray[];strArray=newString[3];strArray[0]=newString(“red”);……注意:(1)所有的数组都有一个属性length,这个属性存储了数组元素的个数。(2)Java编程环境会自动检查数组下标是否越界。2.5运算符算术运算符P42关系运算符P43逻辑运算符44&&与||或!非^异或位运算符:~按位非(NOT)(一元运算)&按位与(AND)|按位或(OR)^按位异或(XOR)参与以上运算的只能是逻辑数据trueorfalse有符号右移无符号右移,左边空出的位以0填充左移&=按位与赋值|=按位或赋值^=按位异或赋值=右移赋值=右移赋值,左边空出的位以0填充=左移赋值例2-122.5运算符byteb=3;b3=(00011000)b7=(10000000)b1=(00000001)b2=(00000000)byteb2=-128;b21=(11000000)b21=(01000000)2.5运算符复杂的赋值运算条件语句instanceof运算符运算符的优先级2.6控制语句1.条件语句if-elseif(boolean-expression)statement1;[elsestatement2;]2.多分支语句switchswitch(expression){casevalue1:statement1;break;casevalue2:statement2;break;…………casevalueN:statemendN;break;[default:defaultStatement;]}◇表达式expression的返回值类型必须是这几种类型之一:int,byte,char,short。◇case子句中的值valueN必须是常量,而且所有case子句中的值应是不同的。◇default子句是可选的。◇break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行(在一些特殊情况下,多个不同的case值要执行一组相同的操作,这时可以不用break)。2.6控制语句1.while语句[initialization]while(termination){body;[iteration;]}2.do-while语句[initialization]do{body;[iteration;]}while(termination);3.for语句for(initialization;termination;iteration){body;}◇for语句执行时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。◇初始化、终止以及迭代部分都可以为空语句(但分号不能省),三者均为空的时候,相当于一个无限循环。◇在初始化部分和迭代部分可以使用逗号语句,来进行多个操作。逗号语句是用逗号分隔的语句序列。for(i=0,j=10;ij;i++,j--){……}2.6控制语句break语句◇在switch语中,break语句用来终止switch语句的执行。使程序从switch语句后的第一个语句开始执行。◇在Java中,可以为每个代码块加一个括号,一个代码块通常是用大括号{}括起来的一段代码。加标号的格式如下:BlockLabel:{codeBlock}break语句的第二种使用情况就是跳出它所指定的块,并从紧跟该块的第一条语句处执行。例如:breakBlockLabel;a:{……//标记代码块ab:{……//标记代码块bc:{……//标记代码块cbreakb;……//此处的语句块不被执行}……/此处的语句块不被执行}……//从此处开始执行}2.6控制语句continue语句continue语句用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。对于for语句