Java语言程序设计课件2.ppt
Java 语言程序设计,第 2 章 Java基础,10/9/2022,1,Java 语言程序设计第 2 章 Java基础10/9/2,上章回顾,Java开发平台有几种?Java 是如何实现跨平台运行?开发和运行Java程序的步骤是什么?,10/9/2022,2,上章回顾Java开发平台有几种?10/9/20222,本章总体纲要,第一部分:标识符和关键字第二部分:数据类型、常量和变量第三部分:运算符和表达式,10/9/2022,3,本章总体纲要第一部分:标识符和关键字10/9/20223,学习目标,标识符和关键字能够区分有效和无效的标识符;掌握Java的关键字;数据类型掌握8个基本的数据类型;掌握引用数据类型;运算符掌握运算符的使用;掌握表达式的组成;,10/9/2022,4,学习目标标识符和关键字10/9/20224,本章总体纲要,第一部分:标识符和关键字第二部分:数据类型、常量和变量第三部分:运算符和表达式,10/9/2022,5,本章总体纲要第一部分:标识符和关键字10/9/20225,Java中的标识符,标识符是用来标识变量、常量、方法、类、对象等元素的有效字符序列。标识符组成: 字母, 数字, 下划线“_” 和 美元符号“$”;长度不限,但实际命名不宜过长;首字符必须是字母, 下划线“_” 或 美元符号“$”;所有标识符是区分大小写的;关键字、false、true和null不可作为操作符;,10/9/2022,6,Java中的标识符标识符是用来标识变量、常量、方法、类、对象,Java的源程序中使用16位的Unicode,而不是位的ASCII码,所以在标识符中可以使用中文;类名字必须使用ASCII字符。合法的标识符:name, s_no, $2, boy_number不合法的标识符:2y,a*b,w/,10/9/2022,7,Java的源程序中使用16位的Unicode,而不是位的A,课堂练习,myVariable 9pinsMYVARIABLE i a+ctesting1-2-3,_myvariablejava¨My Variable$myvariable _9pins Its猫,下列标识符哪些是正确的?,10/9/2022,8,课堂练习myVariable _myvariable下列标识,Java关键字,关键字是指具有特殊含义的字符序列例如: public、 static和class 具有特殊用途,不能作为变量名、方法名和类名,10/9/2022,9,Java关键字关键字是指具有特殊含义的字符序列10/9/20,Java关键字(48个),abstractdefaultif package thisbooleandoimplements private throwbreakdoubleimport protected throwsbyteelseinstanceof public transientcaseextendsint return trycatchfinal long staticvoidcharfinally native super volatileclassfloat new switch whileconst goto strictfp shortcontinue for interface synchronized,10/9/2022,10,Java关键字(48个)abstractdefaulti,本章总体纲要,第一部分:标识符和关键字第二部分:数据类型、常量和变量第三部分:运算符和表达式,10/9/2022,11,本章总体纲要第一部分:标识符和关键字10/9/202211,数据类型,10/9/2022,12,数据类型10/9/202212,数据类型,基本数据类型是由一种简单数据组成的数据类型,其数据是不可分解的。 基本数据类型已由Java预定义,类型名是关键字,如int,float,char和boolean等。 基本数据的变量中保存数据值,而引用数据类型的变量保存地址。,10/9/2022,13,数据类型基本数据类型是由一种简单数据组成的数据类型,其数,基本的数据类型,有8个基本的数据类型:整数类型:byte,short,int,long浮点类型:double,float文本类型:char逻辑类型:boolean,10/9/2022,14,基本的数据类型有8个基本的数据类型:10/9/202214,Java基本类型表,10/9/2022,15,数据类型所占字节表示范围long(长整形)8-9223,整数类型:byte,short,int,long,整数类型有:字节(byte)短整数(short)整数(int)长整数(long)Java提供三种进制的整数表示形式十进制数:09之间的数字表示的数八进制数:07之间的数字表示的数十六进制数:0-9,a-f(A-F)之间的字母表示的数,以0 x或0X作为前缀。,10/9/2022,16,整数类型:byte,short,int,long整数类型有:,数值的表示,例如:2-十进制2077-八进制0 xBAAC-十六进制对一个数值,系统自动将它设为int类型,如要将它设为long类型,要在后面加“l”或“L”例:2L,077L,0XBAACL,10/9/2022,17,数值的表示例如:10/9/202217,浮点类型:float,double,有两类浮点数:单精度浮点数(float):32位双精度浮点数(double):64位浮点数的表示:6.836D-双精度浮点数2.718F-单精度浮点数6.02E23-大数值的双精度浮点数5.682E20F-大数值的单精度浮点数,10/9/2022,18,浮点类型:float,double有两类浮点数:10/9/2,文本类型:char,char类型表示一个16位的Unicode字符.字符有如下的表示方式:a, 字n:换行(Enter),b:退格(Backspace)u0061:Unicode 十六进制码,10/9/2022,19,文本类型:char char类型表示一个16位的Unicod,文本类型:String,字符串(String)不是基本的数据类型,而是一个类。字符串用双引号来表示:“This is a string!”“这是字符串!” null 表示空串,10/9/2022,20,文本类型:String字符串(String)不是基本的数据类,文本类型:char和String,例子:定义并初始化一个字符变量: char ch=A;定义两个字符变量: char ch1,ch2;定义两个字符串变量并初始化它们:String greeting=“Good Morning!n”;String errorMessage=“Record Not Found!”;,10/9/2022,21,文本类型:char和String例子:10/9/202221,逻辑类型:boolean,boolean用来定义逻辑变量,它的取值为:true或false例如:boolean truth=true; 定义变量truth为boolean型变量,并将其值赋为true.,10/9/2022,22,逻辑类型:booleanboolean用来定义逻辑变量,它的,引用数据类型,除8个基本数据类型外,其它的数据类型称为引用数据类型(Reference Types)对象变量就是一种引用数据类型,10/9/2022,23,引用数据类型除8个基本数据类型外,其它的数据类型称为引用数据,引用数据类型,ublic class Mydate private int myDay; private int myMonth; private int myYear; public MyDate(int day,int month,int year) . public class TestMydate Mydate today=new Mydate(28,2,2009); today 是引用数据类型,它指向一个对象,10/9/2022,24,引用数据类型public class Mydate10/9/,创建对象的过程,当用new来创建对象时:Mydate today=new Mydate(28,2,2009);系统将执行如下操作:为对象today分配内存空间,并将所有变量初始化为0和null;执行构造方法;引用变量today的值为该对象的地址。,10/9/2022,25,创建对象的过程当用new来创建对象时:10/9/202225,创建对象的过程,Mydate today=new Mydate(28,2,2009);Mydate today:todaynew : today myDay myMonth myYear,?,10/9/2022,26,创建对象的过程Mydate today=new Mydate,创建对象的过程,Mydate(28,2,2009) today myDay myMonth myYear,10/9/2022,27,创建对象的过程Mydate(28,2,2009)?22,创建对象的过程,设置引用变量: today myDay myMonth myYear,10/9/2022,28,创建对象的过程设置引用变量:0 x01abcdef220092,常量,常量是指在程序运行过程中其值始终保持不变的量。Java常量包括基本数据类型常量、字符串(String)常量和null,10/9/2022,29,常量常量是指在程序运行过程中其值始终保持不变的量。Java常,常量,可以用标识符表示常量,称为符号常量。 符号常量必须先声明,后使用。符号常量的声明方式如下: final 修饰符 类型标识符 常量名=(直接)常量; 修饰符是表示该常量使用范围的权限修饰符:public,private,protected或缺省。 如:final float PI=3.14159; final char SEX=M; final int MAX=100;,10/9/2022,30,常量 可以用标识符表示常量,称为符号常量。 符号常量必须,常量,声明符号常量的优点如下:增加了程序的可读性,从常量名可知常量的含义。增强了程序的可维护性,只要在常量的声明处修改常量的值,就自动修改了程序中所有地方所使用的常量值。,10/9/2022,31,常量声明符号常量的优点如下:10/9/202231,变量,变量是指在程序运行过程中其值可以改变的量。变量必须先定义后使用。其格式为: 修饰符 类型标识符 变量名=常量;,10/9/2022,32,变量 变量是指在程序运行过程中其值可以改变的量。变,变量,变量在计算机内部对应着一个存储单元,变量具有数据类型:基本数据类型引用数据类型变量总是具有与其数据类型相对应的值每个变量均具有: 名字、类型、一定大小的存储单元以及值变量名对应内存的位置,10/9/2022,33,变量变量在计算机内部对应着一个存储单元,变量具有数据类型:1,例题,例2-1 使用整数型变量:Integers.java例2-2 使用单精度和双精度型变量: Floats.java例2-3 使用字符类型变量: Characters.java例2-4 使用字符串类型数据: Samp2_5.java例2-5 使用逻辑类型变量: Logic.java,10/9/2022,34,例题例2-1 使用整数型变量:Integers.java10,例2-1 Integers.java,ublic class Integers public static void main(String args) int a=015; /八进制数 int b=20; /十进制数 int c=0 x25; /十六进制数 short x=30; long y=123456L; System.out.println(a=+a); /输出a的值 System.out.println(b=+b); System.out.println(c=+c); System.out.println(x=+x); System.out.println(y=+y); ,10/9/2022,35,例2-1 Integers.javapublic class,例2-2 Floats.java,public class Floats public static void main(String args) float a=35.45f; double b=3.56e18; System.out.println(a=+a); System.out.println(b=+b); ,10/9/2022,36,例2-2 Floats.javapublic class F,例2-3 Characters.java,public class Characters public static void main(String args) char ch1=a; char ch2=B; System.out.println(ch1=+ch1); System.out.println(ch2=+ch2); ,10/9/2022,37,例2-3 Characters.javapublic cla,例2-4 Samp2_5.java,public class Samp2_5 public static void main(String args) String str1=abc; String str2=n; String str3= 123; System.out.println(str1=+str1+str2+str3=+str3); ,10/9/2022,38,例2-4 Samp2_5.javapublic class,例2-5 Logic.java,ublic class Logic public static void main(String args) boolean instance1=true; boolean instance2=false; System.out.println(逻辑状态1=+instance1+ +逻辑状态2=+instance2); ,10/9/2022,39,例2-5 Logic.javapublic class Lo,本章总体纲要,第一部分:标识符和关键字第二部分:数据类型、常量和变量第三部分:运算符和表达式,10/9/2022,40,本章总体纲要第一部分:标识符和关键字10/9/202240,运算符和表达式,对数据进行加工和处理称为运算,表示各种运算的符号称为运算符,参与运算的数据称为操作数。 根据操作数的个数,可以将运算符分为单目、双目和多目运算符。单目运算符只对1个操作数运算,双目运算符对2个操作数运算。 根据操作数和运算结果,运算符分为:算术运算符、关系运算符、逻辑运算符、位运算符。,10/9/2022,41,运算符和表达式 对数据进行加工和处理称为运算,表示各种运,1、Java运算符(Operator),算术运算符关系运算符逻辑运算符位运算符赋值运算符条件运算符括号运算符,10/9/2022,42,1、Java运算符(Operator)算术运算符10/9/2,(1)算术运算符,算术运算符分为:1、单目运算符(一元运算符)“+” ,“- -”例如:x=a+;y=b-2、双目运算符(二元运算符)+, -, *, /3、三目运算符(三元运算符) ?: 例如:a=2;z=(a3)?a+1:a-1;,10/9/2022,43,(1)算术运算符算术运算符分为:10/9/202243,算术运算符,+, -, *, /, % ,+, -, int i,j; double k; i=3+6; j=30-i; /j=21 i=3*3; /i=9 k=j/i; /k=21/9=2 k=21%9; /k=3 k=21/9; /k=2.0 k=21.0/9; /k=2.333333,10/9/2022,44,算术运算符+, -, *, /, % ,+, -, 10,算术运算符,i+=4; /i=i+4 j-=8; /j=j-8 i+; /i=i+1 i-; /i=i-1+j; /j=j+1-j; /j=j-1 int n=7,m=7; int a=2*+m; /a=16,m=8 int b=2*n+; /b=14,n=8 y=Math.pow(x,a); /y=xa,10/9/2022,45,算术运算符 i+=4; /i=i+410/9/202,课堂练习,-7 / 5 =?-7 % 5=?7 % -5 =?5.5 % 1.0=?10.0/3=? int x=10; x+=11; / x=? int y=x+; /y= ? ,x= ? int z=-x; /z= ? ,x= ? x=Math.pow(5,2); /x= ?,-1,-2,2,0.5,3.3333333333333335,21,21 22,21 21,25,10/9/2022,46,课堂练习-7 / 5 =?-1-220.53.3333333,(2)关系运算符,关系运算是2个操作数之间的比较运算。关系运算符有:、=、=、= =和!=。 “= =”和“!=”还可用于布尔类型及字符串类型操作数。 字符类型操作数的比较依据是其Unicode值,字符串从左向右依此对每个字符比较。 关系运算的运算结果是布尔类型值。如果关系成立,结果的值为true;否则,结果的值为false。,10/9/2022,47,(2)关系运算符 关系运算是2个操作数之间的比,关系运算符,六个关系运算符: 、=、= 和 != boolean b=(1 2); / falseboolean b=(3.5 != 1); / true boolean b=(51.5 = 23.0); / trueboolean b=(540 = 654); / trueboolean b=(24 = 3*8); / trueboolean test1=(10 10); / false,10/9/2022,48,关系运算符六个关系运算符: 、=、= 和,课堂练习,int i=20,j=15; boolean b=(i=10); /b=? boolean b=(ij*2); /b=?,false,false,true,true,true,10/9/2022,49,课堂练习 int i=20,j=15;falsefalset,(3)逻辑运算符,逻辑运算是对布尔类型操作数进行的与、或、非、异或等运算,运算结果仍然是布尔类型值。,10/9/2022,50,(3)逻辑运算符 逻辑运算是对布尔类型操作数进,逻辑运算符,六个布尔逻辑运算符: & (逻辑与AND) | (逻辑或OR) (逻辑异或XOR ) ! (逻辑非NOT)单目运算符, 即只有一个操作数 & (条件与AND) | (条件或OR),10/9/2022,51,逻辑运算符六个布尔逻辑运算符:10/9/202251,逻辑运算符,boolean a,b,c; c=(a /c=true,如果a=false.,10/9/2022,52,逻辑运算符 boolean a,b,c;10/9/20225,逻辑运算符,int i=20,j=28; boolean b=(i=20) /b=true,10/9/2022,53,逻辑运算符 int i=20,j=28;10/9/20225,课堂练习,int i=100,j=25; boolean b=(i+j)2000); /b=true boolean b=(i120) | (j200); /b=true boolean b=(i20); /b=false boolean b=true,a=false; boolean c=(b /c=true,10/9/2022,54,课堂练习 int i=100,j=25;10/9/20225,(4)位运算符,位运算是对整数类型的操作数(byte,short,int,long)按二进制的位进行运算,其运算结果仍然是整数类型值。,10/9/2022,55,(4)位运算符位运算是对整数类型的操作数(byte,shor,位运算符,位运算符包括:&(与)、|(或)、 (非)、(异或)、(带符号右移)、(不带符号右移)和(左移),10/9/2022,56,位运算符位运算符包括:10/9/202256,位运算符,byte c=0 x4f; /c=01001111 c=c; /c=10110000=0 xb0 c=c /c=0010110101001111=01100010=0 x62,10/9/2022,57,位运算符 byte c=0 x4f; /c=0100111,位运算符,byte c=(byte)64; /c=0 x40=01000000 c=c1; /c=00100000=0 x20=32=64/21 c=644; / c=00000100=0 x4=4=64/24 c=-644; /c=-64/24=-4 c=1305; /c=130/25=4 c=641; /c=64*21=128 c=172; /c=17*22=68,10/9/2022,58,位运算符 byte c=(byte)64; /c=0 x40,课堂练习,int x=0 x80; x=x /x=?,0,192,-129,192,32,240,10/9/2022,59,课堂练习 int x=0 x80;0192-129192322,(5)赋值运算符,赋值运算用于给变量赋值,形式如下: 变量名=表达式; 赋值运算的次序是从右向左的,即先计算表达式的值,再将表达式的值赋予变量。 例如: int i=3, j; /i的初始值是3 j=i+2; /结果,j的值是5 i=2*j; /结果,i的值是10 j=j+4; /结果,j的值是9,10/9/2022,60,(5)赋值运算符 赋值运算用于给变量赋值,形式如,复合赋值运算符,赋值类运算符包括:=、+=、-=、*=、/=、 /x=x2,10/9/2022,61,复合赋值运算符赋值类运算符包括:=、+=、-=、*=、/=、,(6)条件运算符,条件运算格式如下: 表达式1 ?表达式2 :表达式3 “?:”称为条件运算符,它是三目运算符。 如果“表达式1”的值是true, “表达式2”的值是最终表达式的值;如果“表达式1”的值是false,“表达式3”的值是最终表达式的值。,10/9/2022,62,(6)条件运算符 条件运算格式如下:10/9/202262,条件运算符,例如: int min , x=4, y=20; min=(x=0) ? 1 : -1);/k取1,10/9/2022,63,条件运算符 例如:10/9/202263,(7)括号运算符,圆括号运算符“()”用于改变表达式中运算符的运算次序。先进行括号内的运算,再进行括号外的运算;在有多层括号的情况下,优先进行最内层括号内的运算,再依次从内向外逐层运算。,10/9/2022,64,(7)括号运算符 圆括号运算符“()”用于改变,其它运算符,串级联运算符:+String salutation = “Dr. ”;String name = “Peter”+ “ ”+ “Wu”;String title = salutation+ “ ”+name;/title=“Dr. Peter Wu”,10/9/2022,65,其它运算符串级联运算符:+10/9/202265,其它运算符,类型转换(casting) long bigValue = 99L; int squashed = (int) bigValue;,10/9/2022,66,其它运算符类型转换(casting)10/9/202266,2、表达式,表达式是用运算符将操作数连接起来的符合语法规则的运算式。 例如:int i=5, j=10, k;k=(24+3*i)*j;,10/9/2022,67,2、表达式 表达式是用运算符将操作数连接起来的符合,运算符的优先级,10/9/2022,68,运算符的优先级运算符描述优先级结合性. ( ),续前表,10/9/2022,69,续前表运算符描述优先级结合性|按位或10从左至右&逻辑与,运算符的优先顺序,x=3+4*5; /x=23 fruits=oranges+apples; /fruits=(oranges+)+apples a=b+c+10; /a=(b+c)+10 int a=1,b=1,c=1; a+=b=c+=d=10; /*a+=(b=(c+=(d=10), d=10,c=11,b=11,a=12 */在程序中,最好用( )来区分优先.,10/9/2022,70,运算符的优先顺序 x=3+4*5; /x=2310/9/,表达式的数据类型,表达式的数据类型由运算结果的数据类型决定。例如: int i=3, j=21, k; boolean f; k=(i+3)*4; /(i+3)*4是算术表达式 f=(i*2)j; /(i*2)j是布尔表达式,10/9/2022,71,表达式的数据类型 表达式的数据类型由运算结果的数据类型决定。,数据类型的转换,各个数据类型之间有强弱关系:弱的数据类型可以直接转换成强的数据类型: double d=10; /d=10.0强的数据类型要通过强制转换成弱的数据类型: byte b=(byte)10; int i=102; short s=(short)i;,10/9/2022,72,数据类型的转换各个数据类型之间有强弱关系:byteshor,例题,例2-6 单目操作符实例:OOperator.java例2-7整数相除: 使用单精度和双精度型变量: Floats.java,10/9/2022,73,例题例2-6 单目操作符实例:OOperator.java1,例2-6 单目操作符实例:OOperator.java,ublic class OOPerator public static void main(String args) int i=15,j1,j2,j3,j4; j1=i+; /在操作数的右面 System.out.println(i+=+j1); j2=+i; /在操作数的左面 System.out.println(+i=+j2); j3=-i; System.out.println(-i=+j3); j4=i-; System.out.println(I-=+j4); System.out.println(i=+i); ,10/9/2022,74,例2-6 单目操作符实例:OOperator.javapub,例2-7整数相除: Floats.java,public class Divide public static void main(String args) int i=15,j=4,k; float f1,f2; k=i/j; f1=i/j; f2=(float)i/j; System.out.println(k=+k); System.out.println(f1=+f1); System.out.println(f2=+f2); ,10/9/2022,75,例2-7整数相除: Floats.javapublic cl,本章小结,第一部分:标识符和关键字第二部分:数据类型、常量和变量第三部分:运算符和表达式,10/9/2022,76,本章小结第一部分:标识符和关键字10/9/202276,学习目标,标识符和关键字能够区分有效和无效的标识符;掌握Java的关键字;数据类型掌握8个基本的数据类型;掌握引用数据类型;运算符掌握运算符的使用;掌握表达式的组成;,10/9/2022,77,学习目标标识符和关键字10/9/202277,作业一:,实验题:1、设计一个银行帐户管理类Account属性:用户名,帐户余额方法:构造方法:设置用户名,余额getBalance: 显示用户名字和余额deposit(amt):在帐户上存入amt的钱withdraw(amt):从帐户上取出amt的钱,10/9/2022,78,作业一:实验题:10/9/202278,作业一:,2、设计一个TestAccount类创建一个用户的帐户,余额为1000元显示用户名和余额存入200元取出500元显示用户名和余额,10/9/2022,79,作业一:2、设计一个TestAccount类10/9/202,作业解析:,/file name: Account.java public class Account String name; double balance; public Account(String n,double b) name=n; balance=b; ,10/9/2022,80,作业解析:/file name: Account.java,public void getBalance() System.out.println(name+ “ ”+balance); public void deposit(double amt) balance=balance+amt; public void withdraw(double amt) balance=balance-amt; ,10/9/2022,81,public void getBalance()1,/file name: TestAccount.java public class TestAccount public static void main(String args ) Account peter = new Account(“peter”,1000); peter.getBalance(); peter.deposit(200); peter.withdraw(500); peter.getBalance(); ,10/9/2022,82,/file name: TestAccount.java,