第二章Java基础-2-掌握Java中的变量、常量、关键字掌握Java的基本数据类型掌握标识符的定义掌握Java中数据类型的转换掌握Java的运算符和表达式掌握Java的流程控制结构掌握break、continue和return语句的用法和区别目标-3-标识符•Java中标识符的命名必须满足以下原则:标识符必须以字母、下划线(_)或美元符($)开头,后面可以跟字母、数字、下划线或美元符标识符可以包含数字,但不能以数字开头除下划线“_”和“$”符号外,标识符中不包含任何特殊字符,如空格标识符区分大小写,比如,“abc”和“Abc”是两个不同的标识符对于标识符的长度没有限制不能使用Java关键字作为标识符表示指定给变量、方法和类的名称,以便编译器可唯一标识它们-4-分隔符•Java中分隔符分为两类:没有意义的空白符拥有确定含义的普通分隔符分隔符用来分割和组合标识符,辅助编译程序阅读和理解Java源程序包括空格、回车、换行和制表符(Tab)普通分隔符名称功能说明{}大括号用来定义程序块,类,方法以及局部范围[]中括号用来进行数组的声明,也可用来表示撤销对数组的引用()小括号在定义和调用方法时用来容纳参数表,在控制语句或强制类型转换组成的表达式中用来表示执行或计算的优先级;分号用来表示一条语句的结束,逗号在变量声明中,用于分割变量表中的各个变量。在for控制语句中用来将圆括号内的语法连接起来:冒号说明语句标号。例如在三元运算符中使用-5-常量•Java中用final关键字来定义常量,常量被设定后,不允许再进行更改。•常量定义的格式如下所示:finaldata_typevar_name=var_value;关键字final表示这个变量只能赋值一次Java语言的任意数据类型之一常量名,要符合标识符命名规则,一般常量全部大写,用下划线分隔多个单词常量值•示例finaldoublePI=3.1415;//声明了一个double型的常量,值为3.1415-6-变量•变量是Java程序中最基本的存储单元•变量必须先声明再使用,格式如下所示:data_typevar_name=var_value;Java语言的任意数据类型之一变量名,要符合标识符命名规则,一般用小写,当有多个单词时,从第二个单词开始,首字母大写变量初始值•示例intcount=10;//声明了一个int型的变量,初始值为10inti,j,k;//声明了三个int型变量,没有赋初始值-7-数据类型-1•Java是一门强类型语言。即所有的变量都必须显式声明其类型•Java的数据类型分为两大类:基本数据类型和引用类型基本数据类型整数类型:byte,short,int,long浮点类型:float,double字符类型:char布尔类型:boolean引用类型类(class)接口(interface)数组(如int[])枚举(enum)注解(annotation)-8-数据类型-2•基本数据类型容纳的值及其范围类型大小(位)取值范围byte(字节型)8-27~27-1short(短整型)16-215~215-1int(整型)32-231~231-1long(长整型)64-263~263-1double(双精度)323.4e-38~3.4e+38float(浮点型)641.7e-38~1.7e+38boolean(布尔型)1true/falsechar(字符型)16‘\u0000’~‘\uFFFF’-9-数据类型-3•转义字符转义字符含义\ddd1到3位8进制数所表示的字符\uxxxx1到4位16进制数所表示的字符\’单引号\”双引号\\反斜杠\b退格\r回车\n换行\t制表符使用一种特殊形式的字符常量值来表示一些难以用一般字符来表示的字符,以一个“\”开头的字符序列-10-数据类型-4•引用类型类型说明数组具有相同数据类型的变量的集合类(class)变量和方法的集合。如Employee类包含了员工的详细信息和操作这些信息的方法接口(interface)是一系列方法的声明,方法特征的集合。可以实现Java中的多重继承枚举(enum)枚举类型是一种独特的值类型,它用于声明一组命名的常数注解(annotation)Annotation提供一种机制,将程序的元素如:类,方法,属性,参数,本地变量,包和元数据联系起来-11-类型转换-1•在Java中,数据的类型如果是相容的,那么一种数据类型可以转换成另外一种数据类型。•数据类型转换的方式有“自动类型转换”和“强制类型转换”两种。-12-•自动类型转换将一种类型的变量赋给另一种类型的变量时,就会发生自动类型转换,发生自动类型转换需要满足:•如下面箭头的指向,在运算时基本数据类型可以进行自动类型转换类型转换-2两种类型兼容目标类型大于源类型byte→short→char→int→long→float→double-13-•强制类型转换表示范围大的数据类型要转换成表示范围小的数据类型,需要用到强制类型转换,语法格式如下:示例:类型转换-3data_typevar1=(data_type)var2;目标类型目标变量源变量inti=10;byteb=(byte)i;//把int型变量i强制转换为byte型-14-变量的作用域•变量被定义为只在某个程序块内或只在方法体内部有效,这种类型的变量通常被称为“局部变量”,局部变量的作用范围有限,只在相应的方法体内或程序块内有效,超出程序块,这些变量无效。•声明一个变量后,声明语句到所在作用域结束的这部分程序为此变量的有效范围。在某个作用域内声明的一个变量后,该变量就成为了局部变量,出了变量作用域,该变量即不能再被访问。另外,在一个确定的域中,变量名必须是唯一的。-15-变量的初始化•变量在使用之前必须被初始化,也就是至少被赋值一次。•可以声明的同时赋值:inti=10;Strings=“abcd”;也可以声明以后再赋值:inti;Strings;i=99;s=“xyz”;-16-运算符•对数据进行运算时,需要使用各种不同的运算符•在Java语言中,运算符分为下面几类:算术运算符比较运算符逻辑运算符位运算符赋值运算符条件运算符-17-运算符-1•算术运算符运算符数学含义示例运算符数学含义示例+加a+b%取模a%b-减或负号a-b,-b++自增a++,++a*乘a*b--自减a--,--a/除a/b•示例publicclassMathOP{publicstaticvoidmain(String[]args){inta=13;//声明int变量a,并赋值为13intb=4;//声明int变量b,并赋值为4System.out.println(a+b=+(a+b));//输出a/b的值System.out.println(a-b=+(a-b));//输出a/b}}程序输出:179-18-运算符-2•比较运算符运算符数学含义示例运算符数学含义示例大于ab=大于等于a=b小于ab=小于等于a=a==等于a==b•示例publicclassCompareOP{publicstaticvoidmain(String[]args){inta=10;intb=20;System.out.println(ab=+(ab));System.out.println(ab=+(ab));}}输出:truefalse-19-运算符-3•逻辑运算符运算符数学含义示例!非!a&&与a&&b||或a||b•示例publicclassBooleanOP{publicstaticvoidmain(String[]args){booleantrueValue=true;//声明boolean变量t,并赋值为truebooleanfalseValue=false;//声明boolean变量f,并赋值为falseSystem.out.println(!trueValue=+!trueValue);System.out.println(falseValue&&true=+(falseValue&&true));System.out.println(trueValue||true=+(trueValue||true));}}输出:falsefalsetrue-20-运算符-4•位运算符运算符数学含义说明示例~按位非(NOT)按位非也叫做补,一元运算符NOT“~”是对其运算数的每一位取反。~00101010=11010101&按位与(AND)按位与运算符“&”,如果两个运算数都是1,则结果为1。其他情况下,结果均为零。00101010&00001111=00001010|按位或(OR)按位或运算符“|”,任何一个运算数为1,则结果为1。00101010|00001111=00101111^按位异或(XOR)按位异或运算符“^”,只有在两个比较的位不同时其结果是1。左移valuenum。左移运算符使指定值的所有位都左移num位。每左移一个位,高阶位都被移出(并且丢弃),并用0填充右边。111110001=11110000右移右移运算符使指定值的所有位都右移num位。当值中的某些位被“移出”时,这些位的值将丢弃。右移时,被移走的最高位(最左边的位)由原来最高位的数字补充。111110001=11111100无符号右移无符号右移运算符使指定值的所有位都右移num位。当值中的某些位被“移出”时,这些位的值将丢弃。右移时,被移走的最高位(最左边的位)固定由0补充。111110001=01111100-21-运算符-5•赋值运算符赋值运算符为一个单独的等于号“=”,它将值赋给变量。如:inti=3;此外赋值运算符可以与算术运算符结合成一个运算符。如:i+=3;//等效于i=i+3运算符示例运算符示例+=a+=b/=a/=b-=a-=b%=a%=b*=a*=b类似的赋值运算符如下表所示:-22-运算符-6•条件运算符条件运算符是三元运算符,语法格式为:表达式?e1:e2表达式值的类型为布尔类型,若表达式的值为真,则返回e1的值;表达式的值为假,则返回e2的值。•示例publicclassThreeOP{publicstaticvoidmain(String[]args){intnum1=3,num2=6;booleanresult=(num1num2)?true:false;System.out.println(result);}}演示结果:false-23-运算符-7•运算符优先级优先次序运算符优先次序运算符1.[]()9&2++--!~instanceof10^3new(type)11|4*/%12&&5+-13||614?:7==15=+=-=*=/=%=^=8==!=16&=|====优先级是指同一表达式中多个运算符被执行的次序,在表达式求值时,先按运算符的优先级由高到低的次序执行。Java中运算符优先级如下表所示。-24-流程控制•Java程序通过控制语句来执行程序流,从而完成一定的任务。22•Java中的控制语句有以下几类:分支结构:if-else,switch迭代结构:while,do-while,for转移语句:break,continue,return-25-流程控制-1•分支结构分支结构是根据假设的条件成立与否,再决定执行什么样语句的结构,它的作用是让程序更具有选择性。Java中通常将假设条件以布尔表达式的方式实现。Java语言中提供的分支结构有:if-else语句switch语句-26-流程控制-1-1•if-else语句if-else语句是最常用的分支结构。if-else语句的语法结构如下。if(condition)statement1;[elsestatement2;]布尔表达式,结果为true或falsestatement1和statement2都是表示语句块。当co