数据库概论课件_第1页
数据库概论课件_第2页
数据库概论课件_第3页
数据库概论课件_第4页
数据库概论课件_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章 Java语言基础Java基本语法Java的标识符、关键字、数据类型Java的常量与变量Java的各种运算符及表达式Java控制语句Java的数组和字符串本章内容 3.1 Java语言的基本语法Unicode字符集:16位编码标准3.1.1 标识符(identifier)标识符是赋予变量、常量、数组名、文件名类或方法、对象的名称由字母、数字、_和$组成,其中字母可以是Unicode字符集中的字符,如大、小写英文字母、汉字、日文片假名和朝鲜文等,数字为 0 到 9标识符的第一个字符不能是数字长度不限,但不宜过长区分大小写不能用关键字在Java规范中约定:关键字、变量名、对象名、方法名、包名

2、通常全部字母小写;如果由多个单词构成标识符,则首字母小写,其后单词首字母大写,如toString;类名首字母大写,如FirstJava;常量名全部字母均大写,如BOOK。 下面是几个有效的标识符: identifier thisone UserName User_name _system_varl $max 下面是几个非法的变量名: 3max room# class 指出哪些标识符是不准确的,说明原因 here _there this that it 2tol _it (变量名不能以数字开头)(包含非法字符“#”)(“class”为保留字)Java语言中一些被赋以特定的含义、并用做专门用途的单

3、词称为关键字所有Java关键字都是小写的goto和const 虽然从未使用,但也作被为Java关键字保留TURE、FALSE、NULL等都不是Java关键字3.1.2 关键字(keyword)TURE、FALSE、NULL是合法的Java标识符吗?关键字-1原始数据类型byteshortintlongfloatdoublecharboolean循环关键字dowhileforbreakcontinue分支关键字ifelseswitchcasedefaultbreak方法、变量和类修饰符privatepublicprotectedfinalstaticabstractsynchronizedvol

4、atile异常处理trycatchfinallythrowthrows对象相关关键字newextendsimplementsclassinstanceofthissuperinterface 字面值常量 false true null 方法相关关键字 return void 包相关关键字 package import关键字-2圆括号“() “:用于方法参数、控制语句、数据类型转换中括号“ “ :用于数组大括号“:用于构造语句块逗号“,”:在方法声明或调用时的参数列表中用于分隔多个参数,也可在一条声明语句中同时声明多个属性或局部变量时起分隔作用 分号“;”: Java语句必须以分号作为结束标记,

5、for循环语句中使用分号来分隔不同的成份 空格 “: Java程序源代码中各组成部分之间可以插入任意数量的空格,包括换行 圆点“.“:用于访问对象成员(属性或方法)3.1.3 分隔符3.1.4 数据类型布尔(boolean)数值类型类数组字符(char)字节(byte)短整数(short)整数(int)浮点类型单精度浮点数(float)双精度浮点数(double)数据类型基本数据类型引用数据类型枚举接口定点类型长整数(long)图3-1Java数据类型逻辑类型只有两个取值:true和false8位注意:Java语言中boolean类型只允许使用boolean值,在整数类型和boolean类型之

6、间无转换计算 1布尔型 booleanbool.java2整数类型: byte,short,int,long所有Java编程语言中的整数类型都是带符号的数字,不存在无符号整数长度不变类型长度字节数取值范围byte8位1字节-128127short16位2字节-3276832767int32位4字节-21474836482147483647long64位8字节-92233720368547758089223372036854775807整型常量:十进制:123 、234八进制:077、011 /首位为“0”十六进制:0 x12ABC /首位为“0 x”整型常量默认为int长整型常量:后面加L或l

7、TestInteger.javafloat型:常量:123.34f 、 12.76F、 123.0f double型: 常量:123.34d、123.43(d可以省略)、123.0D 、2.08E25浮点型常量默认为double 3浮点类型 float ,double浮点类型长度字节数取值范围float32位4字节-3.40282347E+38F3.40282347E+38Fdouble64位8字节-1.7976931348623157E+308 1.797693134862315 7E+308Sa.java 使用char类型可表示单个字符,用单引号括起来16位字符常量:用英文单引号括起来的单

8、个字符。如:a、汉 用英文单引号括起来的十六进制字符代码值,格式为:u*,其中u是约定的前缀,*为4位十六进制数,是该字符在unicode字符集中的序号,如:u0061、u004b。转义字符 4字符类型 char 转义字符含义单引号”双引号b退格t制表符r回车符n换行符反斜杠转义字符.java注意:用双引号引用的文字,就是我们平时所说的字符串类型字符串类型不是原始类型,而是一个类(class)String类String类被用来表示字符序列5.类型转换将一种数据类型的常量或变量转换到另外的一种数据类型,称为类型转换类型转换有两种:隐式类型转换(自动类型转换)显式类型转换(强制类型转换)(1)隐式

9、类型转换 在实际中常会将一种类型的值赋给另外一种变量类型。如果这两种类型是兼容的,Java将执行自动类型转换。 简单的说,当把占用位数较短的数据转化成占用位数较长的数据时,Java执行自动类型转换,不需要在程序中作特别的说明。例如 int i=10; long j=i; 类型转换从低到高级的优先关系: byte short int long float double char低高(2)强制类型转换 不是所有的数据类型都允许隐式自动转换。例如,下面的语句把long型数据赋值给int型数据,在编译时就会发生错误: long i=10; int j=i; /精度失真 改为: long i=10; i

10、nt j=(int)i; (数据类型)变量名 经过强制类型转换,将得到一个在“()”中声明的数据类型的数据,该数据是从指定变量所包含的数据转换而来的。值得注意的是,指定变量本身不会发生任何变化。注意: 布尔型不能和其它类型进行转换; 优先级高的值优先级低的值精度失真 强制类型转换的格式是: 赋值时,必须按照”变量类型的优先级高于所赋数值的优先级”的原则,否则出错。 例: float f=8.36 ; (出错)改为: float f=(float)8.36; 或: float x=8.36f ; 或: double d=8.36;表3-5基本数据类型的转换char ch;byte b;short

11、 s;int i;long k;float f;double d;char ch;ch=(char)b;ch=(char)s;ch=(char)i;ch=(char)k;ch=(char)f;ch=(char)d;byte b;b=(byte)ch;b=(byte)s;b=(byte)i;b=(byte)k;b=(byte)f;b=(byte)dshort s;s=(short)ch;s=b;s=(short)i;s=(short)k;s=(short)f;s=(short)d;int i;i=ch;i=b;i=s;i=(int)k;i=(int)f;i=(int)d;long k;k=ch;

12、k=b;k=s;k=i;k=(long)f;k=(long)d;float f;f=ch;f=b;f=s;f=i;f=k;f=(float)d;double d;d=ch;d=b;d=s;d=i;d=k;d=f;类型提升下面的代码能通过编译吗?byte a=100;byte b=100;byte c=100;int y=a*b*csystem.out.println(y);所有的byte、short型值被提升到int若有一个操作数是long型,整个表达式被提升到long型若有一个操作数是float型,整个表达式被提升到float型若有一个操作数是double型,整个表达式被提升到double型

13、常量:程序执行中其值不能改变的量直接常量符号常量:常量名一般大写final float PI=3.14;public final int MAX=10;变量:在程序执行期间可根据需要经常变化的值必须先声明和初始化(赋初值),然后才可以使用修饰符 =初始化表达式; int x,y,z=10;public String str1=“姓名”;3.1.5 常量和变量变量的四个基本属性变量名变量的数据类型变量的当前值变量存储单元的地址上机练习编写Java应用程序,测试并体会各种原始类型数据的定义,赋值和输出。输出可采用下述形式的语句:/其中x是变量名,如a,b,c等。使用char型的三种常量声明方式为c

14、har型变量赋值并输出。System.out.println(x= + x); 【例3-4】VariableDeclaration.java3.1.6 运算符与表达式运算符:表示运算类型操作数:参与运算Java常用运算符:算术运算符: +,-,*,/,%,+,-关系运算符: ,=,赋值运算符: = 扩展赋值运算符: +=,-=,*=,/=条件运算符: ? :实例运算符: instanceof 1.运算符算术运算符: 加号(+)、减号(-)、乘号(*) 除号(/)、取模(%)、 自增运算符(+)、自减运算符(-)注意:整数除法会直接砍掉小数,而不是进位取模运算结果的符号与第一个操作数的符号相同取

15、模运算符% 的操作数可以为浮点数:37.2%10=7.2Java对加运算符进行了扩展,使它能够进行字符串的连接,如:“abc”+“def”的运算结果为串abcdef前缀+、-与后缀+、-的区别:+i在使用i之前,使i的值加1 -i 在使用i之前,使i的值减1 i+在使用i之后,使i的值加1i-在使用i之后,使i的值减1例如:int a=5,x,y,m,n; x=+a;y=a-;m=a+;n=a-;程序依次执行以后x,y,m,n,a的值是多少?关系运算符:、=、=、=、!=二元运算符,用来比较任意类型的两个值,返回布尔类型的值true或false 如: 109 /结果为false 3!=5 /结

16、果为true建议不要直接比较两个浮点数是否相等Math.abs(f1-f2)8 & 82:异或,异真同假&、|:条件与、条件或(短路与、短路或)如果|左边表达式的值为true,则整个表达式的结果为true,不必再计算右边的表达式如果&左边表达式的值为false,则整个表达式的结果为false,不必再计算右边的表达式表3-6 布尔逻辑运算真值表OP1OP2OP1&OP2OP1|OP2OP1OP2!OP1OP1&OP2OP1|OP2falsefalsefalsefalsefalsetruefalsetruefalsetruetruetruetruefalsefalsetruetruefalsetr

17、uetruetruetruefalsefalse位运算符:&、|、和 用于对整数或字符的二进制位进行布尔运算按位与运算(&):0&0=0,0&1=0,1&0=0,1&1=1按位或运算(|):0|0=0,0|1=1,1|0=1,1|1=1按位异或运算():异真同假00=0,01=1,10=1,11=0按位取反运算():0=1,1=0左移位运算符():执行左移位。右边的空位补0。在不产生溢出的情况下,数据左移1位相当于乘以2: int a=64,b; /a的二进制表示100 0000 b=a):左边按符号位补0或1。例如: int a=16,b; /a的二进制表示10000 b=a2;/b=4不带

18、符号位的右移():左边补0赋值运算符:=二元运算,左边的操作元为变量,不能是常量复合赋值操作:x+=10= 与 = 的区别!三元条件运算符(?:): x ? y:z;运算的规则是:先计算表达式x的值,若x为真,则整个运算的结果是表达式y的值;若x为假,则整个运算的结果是表达式z的值从两个数中找出较大的数的功能。 int a=3,b=4; int max=ab?a:b; max的值为4。 三元条件运算是可以嵌套的,如:以下语句中,max表示的是a、b、c三个数中的最大值,其值为5 int a=3,b=4,c=5; int max=(ab?a:b)c? (ab?a:b):c;实例运算符:insta

19、nceof一元运算符判断一个指定对象是否是一个指定类(或它的子类)的实例 :obj instanceof myclass 其中obj是一个对象,myclass是一个类,若obj是myclass类的对象,则运算结果是true,否则是false 2.表达式用Java运算符将操作数连接起来的、符合Java语法规则的式子 运算符的优先级决定了表达式中多个运算执行的先后顺序,优先级高的先运算,优先级低的后运算,优先级相同的则由运算符的结合性确定其计算顺序 运算符的结合性决定了同一优先级的多个运算符的运算顺序,包括左结合(从左向右)和右结合(从右向左)可以用圆括号改变表达式中运算符的运算次序,圆括号中的表

20、达式称为子表达式 表3-8 Java运算符列表优先级分类运算符结合性描述1(高)二元. ()左结合成员、括号new+ -后置自增、自减2+ - - !右结合前置自增、自减,取负,取反内存分配3二元* / %左结合乘、除4+ -加、减5 移位6 = instanceof关系、实例7= !=关系8&逻辑910|11&12|13三元?:右结合条件14二元= += -= *= /= %= &= = |= = =赋值15(低)二元,左结合逗号3.2 控制语句 1.java语言语句的分类:方法调用语句:如System.out.println(“Hello java”);表达式语句:由一个表达式构成一个语句

21、,如赋值语句:int x=2;复合语句:用把一些语句括起来构成复合语句package语句和import语句:package语句指明了该源文件定义的类所在的包import 语句可以引入所需要的类空语句:;控制语句控制语句顺序结构选择语句循环语句转移语句表达式语句空语句复合语句条件语句if开关语句switchwhiledo-whileforbreakcontinuereturn3.2.1顺序语句顺序结构语句包括:表达式语句空语句复合语句。 语句1语句n3.2.2选择语句又称条件语句,通过判定条件的真假来决定执行某个分支语句if单分支语句: if(表达式) 语句组; 二路分支结构: if (表达式)

22、 语句组 else 语句组例如: if (ab) c=a; else c=b;布尔表达式?语句1语句2truefalse入口点出口点【例3-5】MaxMin.javaif语句嵌套:if(表达式1) 语句组1; else if(表达式2) 语句组2; else if(表达式3) else if(表达式n) 语句组n else 语句组n+1【例3-7】StatementNestedScore.javaswitch语句:switch(表达式) case 判断值1:语句块1; break; case 判断值2:语句块2; break; case 判断值3:语句块3; break; case 判断值n:

23、语句块n default:语句块n+1; 表达式语句1语句n值1入口点出口点图3-5 switch结构值2值n语句2 switch后面括号中表达式的值必须是符合byte,char,short,int类型的常量表达式,而不能用浮点类型或long类型,也不能为一个字符串。一个switch语句可以代替个ifelse语句组成的分支结构,而switch语句从思路上显得更清晰。 【例3-9】SwitchSeason .javaWhile循环语句while (布尔表达式) 一条语句或者多条语句; 3.2.3循环语句 布尔表达式?语句truefalse入口点出口点【例3-10】WhileSum.java do

24、-while语句do 一条语句或者多条语句; while (布尔表达式); 布尔表达式?语句false入口点出口点true【例3-12】DoWhileSum.java for循环语句for (表达式1; 表达式2; 表达式3 ) 一条语句或者多条语句; 表达式2表达式1false入口点出口点图3-8 for语句执行流程true语句表达式3【例3-15】ForSum.java return格式1:return; 一般若方法为void类型,return可省略格式2:return 返回值; 该格式返回值可以是基本数据类型和引用数据类型,但必须和方法的类型一致,否则编译无法通过3.2.4转移语句 br

25、eak终止switch语句的执行,跳出switch语句,执行switch语句后面的语句;终止循环语句序列,跳出循环结构,即跳出while、for等语句;与标号配合使用从内层循环或者内层语句块退出 【例3-18】BreakStatement .java continue用于循环结束本次循环,转入下一次循环与标号配合使用中断内层循环【例3-19】ContinueStatement.java 3.3 数组 3.3.1一维数组按序排列的同类数据元素的集合称为数组 一维数组的定义:数组类型 数组名 或 数组类型 数组名 例如: int student ; int student;int c,d,e; i

26、nt c,d,e;推荐前者声明时不能指定数组长度用new初始化一维数组使用new分配内存空间,并按照数组的类型,为每一个数组元素建立默认值。格式:数组名new 数组元素的类型数组元素的个数例如: int a;a=new int6 或 int a=new int6; 或int a=new int1,2,3,4,5,6; 动态初始化有确定值初始化时不能指定数组长度new时必须指定数组长度获取一维数组元素个数Java语言自动为每个数组变量提供length属性保存数组存储单元个数数组名.length例如: int a=new int6; int l=a.length;一维数组元素的引用和运算 引用格式

27、: 数组名下标int a=new int10;/创建数组int b=a0+a9;/使用数组元素数组下标为从0到9。如果使用了a10,程序运行时将提示错误:java.lang.ArrayIndexOutOfBoundsException 可以在声明数组的同时,给数组元素赋初值。所赋初值的个数决定数组元素的个数格式:数据类型 数组名初值表例如:int a=1,2,3,4,5,6;赋初值初始化数组静态初始化不能指定数组长度使用new动态分配存储单元后,将自动对数组元素进行初始化 数据类型初始化值数据类型初始化值byte、short、int、long0charu0000float0.0fboolean

28、falsedouble0.0引用数据类型null例:求数组元素的最小值class qiuminpublic static void main(String args) int a=5,8,2,4,1,9,78; /通过赋初值初始化数组 System.out.println(The min is:+minnum(a);static int minnum(int num) int min=num0; for(int i=0;inumi) min=numi; return min; public呢?源文件名?能编译吗?编译后的类文件名?能执行吗?【例3-20】使用new创建有10个整数元素的数组/I

29、nitArray.java public class InitArray public static void main(String args) int array; array=new int10 ; System.out.printf( %s%8sn, 数组元素, 对应的值 ); for(int i=0;iarray.length;i+) System.out.printf(%5d%8dn,i,arrayi); int array=new int10 ; 【例3-21】使用new创建有10个整数元素的数组/InitArray1.java public class InitArray1 p

30、ublic static void main(String args) int array=32,27,64,18,95,14,90,70,60,37; System.out.printf( %s%8sn, 数组元素, 对应的值 ); for(int i=0;iarray.length;i+) System.out.printf(%5d%8dn,i,arrayi); 数组的遍历for(int i:array) System.out.printf(%8dn,i);for each循环;循环array中的每个元素【例3-22】用数组分析调查结果 /StudentPoll.java public c

31、lass StudentPoll public static void main( String args ) int responses=1,2,6,4,8,5,9,7,8,10,1,6,3,8,6,10,3,8,2,7,6,5,7,6,8,6,7,5,6,6,5,6,7,5,6,4,8,6,8,10; /声明长度为11的数组,用于统计1-10的打分人数 int frequency=new int11; for (int i=0; i responses.length;i+)/统计1-10中的值并把相应的结果保存到frequency数组中 +frequencyresponsesi; Syst

32、em.out.printf( %s%10sn, 打分值, 多少人次 ); for (int j=1; jfrequency.length; j+ )/输出分析结果 System.out.printf( %6d%10dn, j, frequencyj ); 要求:40名学生对某个食堂的饭菜质量进行110的打分(1表示非常差,10是非常好)。使用数组将40个结果输入整型数组,并对打分结果进行分析。 3.3.2二维数组数组元素中的值是数组即为多维数组二维数组较常用二维数组声明格式:数组类型 数组名或数组类型 数组名例如: int array_name ; 或 int array_name; 声明时不

33、能指明数组长度二维数组的初始化 声明的同时进行初始化: 数据类型数组名new 数据类型 行数列数或数据类型 数组名new 数据类型 行数列数例如:int a=new int 56; 或int a=new int 56;new时必须指明数组长度通过赋初值初始化二维数组格式:数据类型数组名 =初值表,初值表,初值表例如:int a = 65,34,78 , 81,56,92 , 56,87, 90 , 92,69,75 二维数组的引用和运算二维数组元素的引用格式为: 数组名下标1下标2 下标1,下标2分为二维数组的第一、二维下标,同一维数组一样,也可为整型常量和表达式,数组下标从0开始二维数组元素

34、个数: 数组名.length 数组的行数 数组名i.length 数组的列数【例3-23】二维数组使用/TwoDimensionalArray.java /使用二维数组存储数据并输出二维数组中的元素。 public class TwoDimensionalArraypublic static void main(String args) int array1=10,2,30 ,20,5,60; int array2=11,21 ,31,32,5,61; System.out.println( 数组array1的数组元素为: ); for (int row = 0; row array1.len

35、gth; row+) for (int column = 0; column array1 row .length; column+) System.out.println(array1row column ); System.out.println( 数组array2的数组元素为:); for (int row = 0; row array2.length; row+) for (int column = 0; column array2row.length; column+) System.out.println(array2 row column ); 例:输出二维数组各元素的值 cla

36、ss Qpublic static void main(String args) int a=1,2,3,4,5,6,7,8,9; System.out.println(数组a各元素的值为:); for(int i=0;i3;i+) for(int j=0;j3;j+) System.out.print(aij+t); System.out.println(); 不规则二维数组 为二维数组申请存储空间,既可以一次申请所需的全部空间,也可以分多次申请。例如: int mat = new int 23; /一次申请二维数组的全部空间 多次申请空间的语句序列如下,与上述语句效果相同:int mat

37、;mat = new int 2 ; mat0 = new int 3; mat1 = new int 3;mat有2个元素,每个元素都是int类型的一维数组若令mat1 = new int 2;mat0与mat1长度不等,即mat的两行长度不等,成为不规则数组3.4 字符串 3.4.1声明字符串变量 Java使用java.lang包中的String类来创建一个字符串变量。因此,字符串变量是类类型变量,是一个对象,某个具体的字符串是String类的一个实例。声明及初始化声明格式1: String name; /声明一个String类的变量(对象) name=new String(“沈阳小”);

38、 /申请分配空间或者 String name=new String(“沈阳小”);声明格式2: String name; name=沈阳小;或者 String name=沈阳小;一般习惯使用格式2(1)字符串赋值:可以为其赋一个字符串常量,也可以将一个字符串变量或表达式的值赋值给字符串变量: S1=“Chinese people”; S2=S1; S3=“a lot of “+S2;运算符“”的将前后两个字符串连接起来。3.4.2字符串的运算 (2)字符串连接:“+” 可以将两个字符串连接起来: String str=中+国; /字符串str的值为中国 str1+=efgh;只有+=能用于字符串变量,其它复合赋值运算符行 str1-=“efgh”;/语法错误当字符串与其它类型的值执行连接运算时,Java自动将其它类型转换为字符串: int i=96; String str= Java程序设计考分为+i;/str的值为Java程

温馨提示

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

评论

0/150

提交评论