1、-1-掌握Java中的变量、常量、关键字掌握Java的基本数据类型掌握标识符的定义掌握Java中数据类型的转换掌握Java的运算符和表达式掌握Java的流程控制结构掌握break、continue和return语句的用法和区别掌握数组的创建、初始化和拷贝方法目标目标-2-标识符标识符 Java中标识符的命名必须满足以下原则:p 标识符必须以字母、下划线(标识符必须以字母、下划线(_)或美元符()或美元符($)开头,后面可以跟字母、数字、下划线或美)开头,后面可以跟字母、数字、下划线或美元符元符p 标识符可以包含数字,但不能以数字开头标识符可以包含数字,但不能以数字开头p 除下划线除下划线“_”
2、和和“$”符号外,标识符中不包含任何特殊字符,如空格符号外,标识符中不包含任何特殊字符,如空格p 标识符区分大小写,比如,标识符区分大小写,比如,“abc”和和“Abc”是两个不同的标识符是两个不同的标识符p 对于标识符的长度没有限制对于标识符的长度没有限制p 不能使用不能使用Java关键字作为标识符关键字作为标识符-3-分隔符分隔符Java中分隔符分为两类:p 没有意义的空白符没有意义的空白符 p 拥有确定含义的普通分隔符拥有确定含义的普通分隔符 包括空格、回车、换行和制表符(Tab)普通分隔符普通分隔符名称名称功能说明功能说明大括号 用来定义程序块,类,方法以及局部范围;中括号用来进行数组
3、的声明,也可用来表示撤销对数组的引用;()小括号在定义和调用方法时用来容纳参数表,在控制语句或强制类型转换组成的表达式中用来表示执行或计算的优先级;分号用来表示一条语句的结束;,逗号在变量声明中,用于分割变量表中的各个变量;在for控制语句中用来将圆括号内的语法连接起来;:冒号说明语句标号。例如在三元运算符中使用;-3-4-常量常量 Java中用final关键字来定义常量,常量被设定后,不允许再进行更改。常量定义的格式如下所示:final var_name=var_value;关键字final表示这个变量只能赋值一次 Java语言的任意数据类型之一常量名,要符合标识符命名规则,一般常量全部大写
4、,用下划线分隔多个单词常量值 示例final double PI=3.1415;/声明了一个double型的常量,值为3.1415-4-5-变量变量 变量是Java程序中最基本的存储单元;变量必须先声明再使用,格式如下所示:var_name=var_value;Java语言的任意数据类型之一变量名,要符合标识符命名规则,一般用小写,当有多个单词时,从第二个单词开始,首字母大写变量初始值 示例int count=10;/声明了一个int型的变量,初始值为10int i,j,k;/声明了三个int型变量,没有赋初始值-5-6-数据类型数据类型-1 Java是一门强类型语言。即所有的变量都必须显式声
5、明其类型;Java的数据类型分为两大类:基本数据类型和引用类型;基本数据类型整数类型:byte,short,int,long浮点类型:float,double字符类型:char布尔类型:boolean引用类型类(class)接口(interface)数组(如int )枚举(enum)注解(annotation)注意:Java除了基本数据类型的八种外,其他的数据类型都为引用类型。-7-数据类型数据类型-2基本数据类型容纳的值及其范围:类型类型大小(位)大小(位)取值范围取值范围byte(字节型)8-2727-1short(短整型)16-215215-1int(整型)32-231231-1long
6、(长整型)64-263263-1double(双精度)323.4e-383.4e+38float(浮点型)641.7e-381.7e+38boolean(布尔型)1true/falsechar(字符型)16u0000uFFFF-7-8-数据类型数据类型-3转义字符转义字符转义字符含义含义ddd1到3位8进制数所表示的字符uxxxx1到4位16进制数所表示的字符单引号”双引号反斜杠b退格r回车n换行t制表符-8-9-数据类型数据类型-4引用类型类型类型说明说明数组具有相同数据类型的变量的集合 类(class)变量和方法的集合。如Employee类包含了员工的详细信息和操作这些信息的方法接口(in
7、terface)是一系列方法的声明,方法特征的集合。可以实现Java中的多重继承枚举(enum)枚举类型是一种独特的值类型,它用于声明一组命名的常数注解(annotation)Annotation提供一种机制,将程序的元素如:类,方法,属性,参数,本地变量,包和元数据联系起来-9-10-类型转换类型转换-1 在Java中,数据的类型如果是相容的,那么一种数据类型可以转换成另外一种数据类型。数据类型转换的方式有“自动类型转换”和“强制类型转换”两种。-11-自动类型转换将一种类型的变量赋给另一种类型的变量时,就会发生自动类型转换,发生自动类型转换需要满足:如下面箭头的指向,在运算时基本数据类型可
8、以进行自动类型转换 类型转换类型转换-2两种类型兼容目标类型大于源类型byteshortcharintlongfloatdouble-12-强制类型转换表示范围大的数据类型要转换成表示范围小的数据类型,需要用到强表示范围大的数据类型要转换成表示范围小的数据类型,需要用到强制类型转换制类型转换 ,语法格式如下:,语法格式如下:示例:类型转换类型转换-3data_type var1=(data_type)var2;目标类型目标变量源变量int i=10;byte b=(byte)i;/把int型变量i强制转换为byte型-13-变量的作用域变量的作用域 变量被定义为只在某个程序块内某个程序块内或只
9、在方法体内部方法体内部有效,这种类型的变量通常被称为“局部变量”。局部变量的作用范围有限,只在相应的方法体内或程序块内有效,超出范围,这些变量无效。声明一个变量后,声明语句到所在作用域结束的这部分程序为此变量的有效范围;超出变量作用域,该变量即不能再被访问。-14-变量的初始化变量的初始化 变量在使用之前必须被初始化 方式一:声明变量的同时赋值:int count=0;方式二:先声明变量,然后再赋值:int num;num=4;-15-运算符运算符 对数据进行运算时,需要使用各种不同的运算符;在Java语言中,运算符分为下面几类:p算术运算符算术运算符p比较运算符比较运算符p逻辑运算符逻辑运算
10、符p位运算符位运算符p赋值运算符赋值运算符p条件运算符条件运算符-16-算术运算符算术运算符算术运算符 运算符运算符 数学含义数学含义示例示例运算符运算符数学含义数学含义示例示例+加a+b%取模a%b-减或负号a-b,-b+自增a+,+a*乘a*b-自减a-,-a/除a/b示例 public class MathOP public static void main(String args)int a=13;/声明int变量a,并赋值为13int b=4;/声明int变量b,并赋值为4System.out.println(a+b=+(a+b);/输出a+b的值System.out.println
11、(a-b=+(a-b);/输出a-b的值System.out.println(a*b=+(a*b);/输出a*b的值System.out.println(a/b=+(a/b);/输出a/b的值System.out.println(a%b=+(a%b);/输出a%b的值a+b=17a-b=9a*b=52a/b=3a%b=1-16-17-比较运算符比较运算符比较运算符比较运算符运算符运算符 数学含义数学含义示例示例运算符运算符数学含义数学含义示例示例大于ab=大于等于a=b小于ab=小于等于ab=+(a b);System.out.println(ab=+(a=b=+(a=b);System.ou
12、t.println(a=b=+(a b=falsea=b=falsea=b=true-17-18-逻辑运算符逻辑运算符逻辑运算符逻辑运算符运算符运算符数学含义数学含义示例示例!非!a&与a&b|或a|b注意:在逻辑运算时,为了提高运行效率,Java提供了“短路运算”功能。-18-19-逻辑运算符示例逻辑运算符示例 逻辑运算符示例 public class BooleanOP public static void main(String args)boolean trueValue=true;/声明boolean变量t,并赋值为trueboolean falseValue=false;/声明bo
13、olean变量f,并赋值为false/!System.out.println(!trueValue=+!trueValue);System.out.println(!falseValue=+!falseValue);/&System.out.println(trueValue&true=+(trueValue&true);System.out.println(falseValue&true=+(falseValue&true);System.out.println(trueValue&false=+(trueValue&false);System.out.println(falseValue&
14、false=+(falseValue&false);/|System.out.println(trueValue|true=+(trueValue|true);System.out.println(falseValue|true=+(falseValue|true);System.out.println(trueValue|false=+(trueValue|false);System.out.println(falseValue|false=+(falseValue|false);输出结果:!trueValue=false!falseValue=truetrueValue&true=true
15、falseValue&true=falsetrueValue&false=falsefalseValue&false=falsetrueValue|true=truefalseValue|true=truetrueValue|false=truefalseValue|false=false-19-20-位运算符位运算符位运算符:Java直接对整数类型的位进行操作。运算符运算符数学含义数学含义说明说明示例示例 按位非(NOT)按位非也叫做补,一元运算符NOT“”是对其运算数的每一位取反。00101010=11010101&按位与(AND)按位与运算符“&”,如果两个运算数都是1,则结果为1。其他
16、情况下,结果均为零。00101010&00001111=00001010|按位或(OR)按位或运算符“|”,任何一个运算数为1,则结果为1。00101010|00001111=00101111 按位异或(XOR)按位异或运算符“”,只有在两个比较的位不同时其结果是1。左移 value num。左移运算符使指定值的所有位都左移num位。每左移一个位,高阶位都被移出(并且丢弃),并用0填充右边。11111000 右移 右移运算符使指定值的所有位都右移num位。当值中的某些位被“移出”时,这些位的值将丢弃。右移时,被移走的最高位(最左边的位)由原来最高位的数字补充。11111000 1=111111
17、00 无符号右移无符号右移运算符使指定值的所有位都右移num位。当值中的某些位被“移出”时,这些位的值将丢弃。右移时,被移走的最高位(最左边的位)固定由0补充。11111000 1=01111100-20-21-赋值运算符赋值运算符赋值运算符赋值运算符 赋值运算符为一个单独的等于号“=”,它将值赋给变量。如:int i=3;此外赋值运算符可以与算术运算符结合成一个运算符。如:i+=3;/等效于i=i+3运算符运算符示例示例运算符运算符示例示例+=a+=b/=a/=b-=a-=b%=a%=b*=a*=b 类似的赋值运算符如下表所示:-21-22-条件运算符条件运算符条件运算符条件运算符 条件运算
18、符是三元运算符,语法格式为:?e1 :e2 表达式值的类型为布尔类型,若表达式的值为真,则返回e1的值;表达式的值为假,则返回e2的值。示例:public class ThreeOP public static void main(String args)int num1=3,num2=6;boolean result=(num1 num2)?true:false;System.out.println(result);演示结果:false -22-23-运算符优先级运算符优先级优先次序优先次序运算符运算符优先次序优先次序运算符运算符1.()9&2+-!instanceof103new(type
19、)11|4*/%12&5+-13|6 =15=+=-=*=/=%=8=!=16&=|=优先级是指同一表达式中多个运算符被执行的次序,在表达式求值时,先按运算符的优先级由高到低的次序执行。Java中运算符优先级如下表所示:-23-流程控制流程控制Java程序通过控制语句来执行程序流,从而完成一定的任务。Java中的控制语句有以下几类:p分支结构:if-else,switchp迭代结构:while,do-while,forp转移语句:break,continue,return -24-25-分支结构分支结构 分支结构是根据假设的条件是否成立,再决定执行什么样分支结构是根据假设的条件是否成立,再决定
20、执行什么样语句的结构。语句的结构。分支结构的作用是让程序更具有选择性。分支结构的作用是让程序更具有选择性。Java中通常将假设条件以布尔表达式的方式实现。中通常将假设条件以布尔表达式的方式实现。Java语言中提供的分支结构有:语言中提供的分支结构有:p if-else语句语句p switch语句语句-25-26-if-else语句语句 if-else语句是最常用的分支结构。语句是最常用的分支结构。if-else语句的语法结构如下:语句的语法结构如下:if(condition)statement1;else statement2;布尔表达式,结果为true或false statement1和st
21、atement2都是表示语句块。当condition为true时执行前者,反之执行后者。-26-27-switch语句语句 一个一个switch语句有一个控制表达式和一个由语句有一个控制表达式和一个由case标记表述的语句块标记表述的语句块组成。组成。switch语法如下:语法如下:switch(expression)case value1:statement1;break;case value2:statement2;break;case valueN:statementN;break;default:defaultStatement;表达式必须为byte,short,int或char类型
22、value的值必须是与表达式类型兼容的特定的一个常量,并且不允许重复注意:注意:在在JDK7.0以后可以用以后可以用String类型作为判断条件,即类型作为判断条件,即expression和和 value可以是可以是String类型的类型的-27-28-迭代结构迭代结构 迭代结构的作用是迭代结构的作用是反复执行一段代码反复执行一段代码,直到满足终止循环直到满足终止循环的条件为止。的条件为止。Java语言中提供的迭代结构有:语言中提供的迭代结构有:pwhile语句pdo-while语句pfor语句 -28-29-while/do-whilewhile语句语句 while语句是常用的迭代语句,语法
23、如下语句是常用的迭代语句,语法如下:do-while语句语句 do-while用于循环至少执行一次的情形。语句如下:用于循环至少执行一次的情形。语句如下:while(condition)statement;如果条件为true,则执行while循环体内的语句;否则结束while循环,执行while循环体以后的语句。do statement;while(condition)do-while语句先执行一次do语句块,然后条件,如果为true,则继续执行循环体内的语句;否则则结束do-while循环。-29-30-for语句语句-1 for语句是最常见的迭代语句,一般用在循环次数已知的情形语句是最常见
24、的迭代语句,一般用在循环次数已知的情形 for语句结构如下语句结构如下:for(initialization;condition;update)statements;1、首先初始化操作(initialization)2、判断终止条件表达式(condition)是否满足,如果为true,则执行循环体中的语句statements;3、最后执行迭代部分(update)4、完成一次循环后,重新判断终止条件 -30-31-for语句语句-2示例:打印九九乘法表示例:打印九九乘法表 public class NineTable public static void main(String args)for
25、(int i=1;i=9;i+)for(int j=1;j=i;j+)/输出a*b=c格式 System.out.print(j+*+i+=+i*j+);/输出空行 System.out.println();1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16.-31-32-转移语句转移语句 Java的转移语句用在的转移语句用在选择结构选择结构和和循环结构循环结构中,使程序员更方便地控制中,使程序员更方便地控制程序执行的方向。程序执行的方向。Java语言中提供的转移语句有:语言中提供的转移语句有:p break语句:在循环中
26、用于立即从当前循环终止控制;语句:在循环中用于立即从当前循环终止控制;p continue语句:从其调用处跳至循环的开始处;语句:从其调用处跳至循环的开始处;p return语句语句:其之后的语句将不再执行;:其之后的语句将不再执行;Java中没有中没有goto语句语句,在多层循环时,可以用在多层循环时,可以用break、continue实现实现goto语句的功能。语句的功能。-32-33-数组数组 属于引用数据类型;属于引用数据类型;由类型相同的元素组成的有顺序的数据集合;由类型相同的元素组成的有顺序的数据集合;数组的长度是固定的,不能扩展;数组的长度是固定的,不能扩展;可以存储基本数据类型
27、或对象;可以存储基本数据类型或对象;通过数组名和下标可以访问数组中的元素;通过数组名和下标可以访问数组中的元素;-34-一维数组一维数组-1-1 定义一维数组的语法如下:示例data_type varName;或data_type varName;任意数据类型数组名一维数组的标识,可放置在数组名前面或后面 int a;/声明一个整形数组double b;/声明一个双精度浮点型数组-34-35-一维数组一维数组-2 利用new来为数组型变量分配内存空间 访问数组元素的格式a=new int10;double b =new double10数组名索引数组的索引是从0开始到数组的长度减1-35-36
28、-数组初始化数组初始化 数组的初始化有静态和动态两种方式。p静态初始化:在定义数组的同时对该数组进行初始化。例如:p动态初始化:将数组的定义和初始化分开进行。例如:int k=1,2,3,4或int k=new int 1,2,3,4int array=new int2;/数组的定义array0=1;/数组的第一个元素赋值array1=2;/数组的第二个元素赋值不能写长度-36-37-使用数组使用数组 使用数组存储5个整数,并输出其中最大值。public class FindMax public static void main(String args)int array=10,23,6,88
29、,19;int index=0;/最大值索引号,默认为0 int max=arrayindex;/最大值 /寻找最大值 for(int i=1;i max)index=i;max=arrayi;System.out.println(最大值为+max+,索引号为+index);演示结果:最大值为88,索引号为3 -37-38-数组拷贝数组拷贝-1 数组的复制是指将源数组的元素一一做副本,赋值到目标数组的对应位置。常用的数组复制方法有如下三种:p使用循环语句进行复制 使用循环语句遍历源数组每个元素,赋值给目标数组对应位置。p使用clone()方法 在Java中,Object类是所有类的父类,其cl
30、one()方法一般用于创建并返回此对象的一个副本,Java中认为一切都是“对象”,所以使用该方法也可以实现数组的复制。public class ArrayCopyClone public static void main(String args)int array1=1,2,3,4,5;/复制 int array2=array1.clone();/输出array2结果 for(int i=0;i array2.length;i+)System.out.print(array2i+,);演示结果:1,2,3,4,5,-38-39-数组拷贝数组拷贝-2p使用System.arraycopy方法 a
31、rraycopy()方法是System类的一个静态方法(并且是本地方法,效率非常高),其可以方便的实现数组拷贝功能,System.arraycopy()方法的结构如下:public class ArrayCopy public static void main(String args)int array1=1,2,3,4,5;int array2=new intarray1.length;/复制 System.arraycopy(array1,0,array2,0,array1.length);/输出array2结果 for(int i=0;i array2.length;i+)System.
32、out.print(array2i+,);演示结果:1,2,3,4,5,System.arraycopy(from,fromIndex,to,toIndex,count)示例:-40-二维数组二维数组 如果一维数组元素的数据类型还是一维数组的话,这种数组就被称为二维数组。二维数组定义语法如下:data_type varName;int array=new int10;上面只是声明了一个二维数组,并没有初始化。同一维数组一样,二维数组也是通过new关键字来创建,方式如下所示:至少指定第一维的长度-40-41-动态初始化二维数组动态初始化二维数组 动态初始化二维数组:public class Ar
33、ray2DDemo public static void main(String args)/定义二维数组 int array=new int22;for(int i=0;i array.length;i+)for(int j=0;j arrayi.length;j+)arrayij=j+2*i+1;/把1,2,3,4分别赋给arrayij /输出结果 for(int i=0;i array.length;i+)for(int j=0;j arrayi.length;j+)System.out.println(array+i+j+=+arrayij);演示结果:array00=1array01
34、=2array10=3array11=4-41-42-使用二维数使用二维数组组 二维数组实现矩阵数学上的矩阵中的每个数字可以使用行列标号表示。这正是符合二维数组的特性,所以使用二维数组实现最合适。1 2 0 4 0 6 0 8 9public class MatrixDemo public static void main(String args)/用二维数组表示矩阵 int matrix=1,2,0,4,0,6,0,8,9 ;/打印矩阵 for(int i=0;i 3;i+)for(int j=0;j、=、条件运算符又称三元运算符是“?:”Java提供算术、比较、关系、逻辑等运算符完成复杂数据运算Java的分支语句有if.else,switch.caseJava的迭代语句有for,while,do.whileJava的转移语句有break,continue,return数组的创建、初始化和拷贝方法小结小结谢 谢 Thanks for listening.