




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河南大学软件学院,Java 编程基础,主讲:李小丽,第二章 Java语法基础,2.1 标识符和变量关于注释 2.2 Java基本数据类型 2.3 变量和常量 2.4 数据类型转换 2.5 运算符,2.6 语句和程序块 2.7 流程控制语句 2.8 简单的人机交互,2.1.1 注释,Java语言的注释一共有三种: 单行注释 : / 多行注释:/* */ 文档注释 :/* *文档注释 *可以生成API文档 */,2.1 标识符和变量,/这是注释示例 class CommentsDemo /*这是main方法 这个方法是程序的入口 */ public static void main(String
2、args) System.out.println(Hello World!); ,单行注释和多行注释示例,文档注释是Java特有的一种注释方法,一般放在用户类的变量、方法、接口及类本身的前面。 通过运行JDK中的javadoc命令可以自动生成一个用户类的API文档,而程序中的文档注释就会放在该API文档相应的位置。 由于API文档是HTML格式的,因此在文档注释中支持HTML标签,文档注释还提供了标记符号。,文档注释,Javadoc常用标记,Javadoc命令的基本用法如下:,javadoc 选项 Java源文件/包 javadoc的常用选项有如下几个: -d :该选项指定一个路径,用于将生成
3、的API文档放到指定目录下。 -windowtitle:该选项指定一个字符串,用于设置API文档的浏览器窗口标题。 -doctitle:该选项指定一个HTML格式的文本,用于指定概述页面的标题。(如果有多个包下的源文件来生成API文档时,才有概述页面)。 -header:该选项指定一个HTML格式的文本,包含每个页面的页眉。,API文档生成,可以使用Javadoc工具生成API文档,Javadoc工具只处理在类、接口、方法、属性、构造器和内部类之前的注释,忽略其它地方的文档注释,而且Javadoc工具默认只处理以public、protected修饰的类、接口、方法、属性、构造函数之前的注释,如
4、果希望可以提取private修饰的内容,则可以在使用Javadoc工具时增加-private选项。,上述标记的使用是有位置限制的, 在类或接口文档注释中的有:see,deprecated,author,version等; 在方法或构造器文档注释中的有see,deprecated,param,return,throw和exception等; 在属性文档注释中的有:see,deprecated等。 为了能提取文档中的author和version等标记, 在使用javadoc工具时增加-author和-version两个选项,注意:,使用javadoc命令,例:DocCommentsDemo.jav
5、a,API文档的作用:,API文档对于Java语言来说,API文档通常详细说明了每个类、每个方法的功能。 API接口提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,Java对各种变量、方法和类等要素命名使用的字符序列称为标识符。 凡是自己可以起名字的地方都叫标识符,都遵守标识符的规则 标识符命名规则 标识符由字符(包括汉字等)、数字、下划线“_”和美元符 “$” 组成; 标识符中不能以数字打头; 标识符不能是保留字或者关键字,但可以包含保留字或关键字; 标识符严格区别大小写; 约定俗成:java标识符选取应注意“见名知意”,2.1.2 标识符与关键字,在Java中有一些赋以特定的
6、含义,用做专门用途的单词称为关键字(keyword) 大多数编辑器会将关键字用特殊方式标出 所有关键字都是小写英文 goto和const虽然从未使用,但也作为Java关键字保留。,另外还有3个特殊的单词true、false和null,在Java语言中称为直接量(literal),也不能作为标识符使用。,关键字,2.1.3 分隔符,Java中的花括号()、分号(;)、逗号(,)、冒号(:)、 方括号()、圆括号(())、圆点(.)、空白符,(1)花括号,Java语言的类体、方法体、程序块等都需要放在一对花括号()的中间,构成完整的程序段。,(2)分号 ;,Java语言每条语句用分号(;)结束。,
7、Java语言允许多条语句放在一行(一般来说,一行只放一条语句)。 一条语句也可以跨多行,只要在语句最后结束的地方以分号结束即可。,正确:/字符串可以跨行,用“+”连接 String Demo=你好!+ 这是一个跨多行的例子。; /下面给整型变量a赋值,也可以跨行 int a= 3; 错误:/一个字符串、标识符、关键字等不能跨行写 String te st=keywords;,(3)逗号 ,,逗号使用的场合主要有两种情形: 多个同类型的变量声明,中间用逗号隔开起分隔作用; 方法中的形参列表,各个形参之间用逗号隔开。,(4)冒号:,多用在流程控制语句中,如switch/case分支语句中的case
8、子句。,(5)方括号,主要运用在数组中,用于声明数组或访问数组中的某个元素。,(6)圆括号(),主要在以下几种情形下使用: 方法中用圆括号包含形参列表,或者调用方法时,传入的实参也用圆括号包含; 不同的数据类型之间强制转换时,可以用圆括号包含要强制转换的数据类型; 在一个表达式中,可以用圆括号包含表达式的一部分,以改变这部分内容的计算优先次序。,(7)圆点 .,圆点主要用在类/对象的实例调用其成员,(8)空白符,Java的空白符包括空格(Space)、制表符(Tab)和空行等。,主要作用:同一层次的语句对齐,使代码更有层次感,方便阅读,增加程序的可读性。,Java程序编译的时候,对多余的空白符
9、忽略不计,不会产生任何影响。,Java数据类型的划分,Java基本数据类型,Java中定义了4类8种基本数据类型。 整数型 byte、short、int、long 浮点数型 float、double 逻辑型 boolean 文本型 char,逻辑型 boolean,boolean类型适于逻辑运算,一般用于程序流程控制。 boolean类型数据只允许取值true或false,不可以0或非0的整数 替代true和false,这点和c语言不同。 用法举例: boolean flag; flag=true; if(flag) /操作 ,字符型char,字符常量为用单引号括起来的单个字符,例如: cha
10、r eChar=a; char cChar=天; char型包括普通字符和转义字符。 Java字符采用Unicode编码,无论普通字符还是转义字符,都可以用Unicode编码表示,表 示方法为以 “u”为前缀,后跟4位十六进制的Unicode编码, 例如: char c1=u0061; 注:Unicode是全球语言统一编码,除此之外,char类型的值可以作为整数数值试验,取值范围在0-65535的无符号数。,字符型char,整数类型,Java各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响,以保证java程序的可移植性。,Java的整形主要有以下几种:,Java语言的整形常量默认
11、为int型,声明long型常量可以后加l或L,如: int i1=500;/正确 long bigValue=8888888888L; /当超出整形范围时,必须加L, /否则错误,注意:,Java语言整形常量的三种表示形式: 十进制整数,如:12,-234,0; 八进制整数,要求以0开头,如:012; 十六进制数,要求0 x或0X开头,如:0 x12;,整型的表示方式,浮点类型,与整数类型类似,java浮点类型有固定的表示范围和字段长度,不受平台影响。 下面列出java的各种浮点类型,Java浮点型常量默认为double型,如要声明一个常量为float型,则需要在数字后面加f或F,如: Dou
12、ble d=12345.6 ;/正确 float f=12.3f; /必须加f否则会出错,注意:,Java浮点类型常量有两种表示形式 十进制数形式,例如:3.14 314.0 .314 科学计数法形式,例如 3.14e2 3.14E2 100E-2,浮点类型表示形式,释疑:,1、浮点数在计算机中的表示 对于float型数值,第一位是符号位,接下来8位表示指数,接下来的23位表示尾数; 对于double型数值,第一位也是符号位,接下来的11位表示指数,接下来的52位表示尾数。 2、浮点数的表示是有误差的 现实中的浮点数是连续的、无穷的。计算机中的浮点数是离散的,所以浮点数的表示一定是有误差的。
13、计算机内部表示的浮点数是有误差的,在第几位上产生误差称为浮点数的精度。,public static void main(Stringargs) /声明byte类型变量 byte b=1; /声明short类型变量 short s=2; /声明int类型变量,且赋初始值为八进制数023 int i=023; /声明long类型变量,且赋初始值为十六进制数0X4FL; long l=0 x4FL; /下面声明变量错误,因为Java默认65535*65535这一常量为int类型 /而65535*65535超出了int类型的取值范围 long l1=65535*65535; /声明boolean类型变
14、量,且赋初始值为true boolean b1=true;,例子,例:PrimitiveDemo.java,/可以将b1直接输出,下面语句输出结果为true System.out.println(b1); /声明变量ch,并赋值为c; char ch=c; /声明变量ch1,并将ASCII值为97赋给ch1 char ch1=97; /声明变量ch2,并将ch的值减1赋给ch2 char ch2=c-1; /同理,字符类型也支持汉字等多国家字符编码 char Chinese=中; /格式化输出,输出结果为:abc,中! System.out.printf(%c%c%c,%c!,ch1,ch2,
15、ch,Chinese);,/声明double类型变量d,并以科学计数法表示浮点数 double d=3.14e2; /声明float类型变量f,并以十进制数表示浮点数 float f=3.14f; /错误!float类型不能超过3.40282e+38 /float f1=3.14e40f; /输出结果为314.0 System.out.println(d); ,内容回顾:,1、注释 2、分隔符 3、基本数据类型,/ /*/,/* * * */,数值型: byte short int long float double,字符型:char,布尔型:boolean,2.4 数据类型转换,Java提供
16、了3种数据类型转换机制: 自动类型转换 强制类型转换 包装类转换 需要指出的是,如果没有特殊说明,本章所讲的数据类型转换主要是指基本数据类型转换。,数据类型转换 自动类型转换,当把一个表数范围小的数值或变量直接赋给一个表数范围大的变量时,系统将进行自动数据类型转换。,boolean类型不能与其数据类型进行互转换,例如:byte a = 97; short b = a; /a可以自动转换为short类型 /char c = a; /错误,byte、short不能自动转换为char,转换时遵循以下原则: 表数范围小的类型自动转换为表数范围大的数据类型;数据类型按容量大小排序为: byte,shor
17、t,char-int-longfloat-double,表达式类型的自动提升,有多种类型的数据混合运算时,系统首先自动的将所有数据转换成表数范围大的那一种数据类型,然后再进行计算。,注意:,byte,short,char之间不会互相转换,它们三者在计算时首先会转换为int类型。 有多种类型的数据混合运算时,如果没有为实数型常量或整型常量指定类型,则默认如下: 实数常量(如:1.2)默认为double。 整型常量(如:123)默认为int。,例:ConvertDemo.java,表数范围大的数据类型转换为表数范围小的数据类型时,要加强制类型转换符。 表数范围大的数据类型的数值超过表数范围小的数据
18、类型值范围时,表数范围大的数据类型的数据被强制截短,造成数据丢失。将浮点型数据强制转换为整型数据时,会把小数点后的数据截掉,减少了数值的精度。整数类型从大范围向大范围转换时,从前向后截取。 例如:long a =65; int b = (int)a;,数据类型转换 强制类型转换,作业:查找错误,并修改,在程序的执行过程中,如果数值可以改变的称为变量,数值不能改变的称为常量。,2.3 常量和变量,Java的常量值区分为不同的数据类型。 如整型常量:int i = 123 实型常量:3.14 字符常量:char c = a 逻辑常量:true、false 字符串常量:String s = “hel
19、loworld” 另外Java还提供了final关键字来定义常量 final double E = 23.1;,Java 常量,Java 变量,变量必须 “先声明,后使用” ,声明一个变量包括该变量的数据类型、变量的名称以及作用域,当然也可以在声明的时候直接给该变量赋值,变量声明的最后要以分号结束。 具体的格式如下: 修饰符 数据类型 变量名称 =value,varName=value 例如: int i=100; float f=12.3f; double d1,d2,d3=0.123; string s=“hello”;,从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问呢这块区域
20、,因此,每一个变量使用前必须首先申请(声明),然后必须进行赋值(填充内容),才能使用。,Java 变量,Java局部变量与成员变量,变量根据位置不同分为: 方法体内部声明的变量(包括形参)称为局部变量, 在方法体外,类体内声明的变量称为成员变量,class TestVar double d=3.14; public void method() int i = 0; int j=i+5; public static void main(String args) float f1 = 2.3f; String s = 成员变量与局部变量; ,变量的作用域: 成员变量:作用于整个类,有默认值。 局部
21、变量:定义在方法内,在方法中有效,没有默认值。,成员变量和局部变量,public class ScopeDemo ,int a; /a是类成员变量 public void add( int b ) /b是方法参数 ,int c; /c是局部变量 try Catch(Exception e) /e是异常处理参数 ,int f; /f是局部变量,变量作用域,例:ScopeDemo.java,注意:,1、变量必须先声明,后赋值 2、同一方法中,变量不能重命名。 3、注意变量的作用域 特别是try块,for循环中变量的作用域。 4、注意重名变量的问题。,class TestBoolean static
22、 int a = 2; public static void Put( ) int a = 5; System.out.println(Put中的+a); public static void main(String args) int a = 1; System.out.println(main函数中的+a); Put(); System.out.println(类中的+TestBoolean.a); ,Java语言支持如下的运算符: 算术运算符:+,-,*,/,%,+,- - 关系运算符:,=, 赋值运算符:= 扩展赋值运算符:+=,-=,*=,/= 字符串连接运算符:+,2.5 运算符,
23、算术运算符,算术运算符:+,-,*,/,%,+,- -,逻辑运算符:!逻辑非 int i=(int)K; 注意:可以将整型常量直接赋值给byte、short,char等类型变 量,而不需要进行强制类型转换,只要不超出其表数范围。 byte b=11; char c=97; byte bb=256; short s=-32768;,赋值运算符分为两种:“=”赋值运算符和扩展赋值运算符,赋值运算符,“+”除做加法运算符外,还可以做字符串连接符 例如: int i=33+35; String k=“hello”+”world” String s=“hello”+3; “+”两侧的操作数只要有一个是字
24、符串类型,系统会自动将另 一个操作数转换为字符串然后再进行连接。 再例: String s1=“hello”+3+5; String s2=3+5+”hello”;,字符串连接符,条件算符,位运算符,位运算符是以比特位为单位进行运算, 位运算符要求操作数必须都是整型数据(byte,short,int,long)或者是可以转换为整型的数据类型如char类型,其结果也是整型数据。,位运算法则,与、或、异或运算符举例:,左移右移运算符 例如:十进制数2的二进制表示为:0000 0010 2 1 得到: 00000100,表达式是符合一定语法规则的 运算符和操作数的序列 a 5.0+a (a-b)*c
25、-4 i30 if(age = 18) System.out.println(年满18岁); System.out.println(具有完全民事行为能力); else System.out.println(不具有完全民事行为能力); ,一个代码块通常被当成一个整体来执行,当代码块中只有一条语句时,可以省略大括号,但是建议不要省略。,public class TestIf public static void main(String args) int age = 12; if(age 18) System.out.println(不具有完全民事行为能力); else System.out.pr
26、intln(年满18岁) System.out.println(“具有完全民事行为能力”); ,建议不要省略大括号,注意逻辑错误,public static void main(String args) int age=45; if(age20) System.out.println(“青年人”); else if(age40) System.out.println(“中年人”); else if(age60) System.out.println(“老年人”); ,使用if else 的基本准则: 总是优先把包含范围小的条件放在前面处理。,switch/case语句,switch/case语
27、句由一个switch及表达式、若干个case分支及default程序块组成,Switch后的表达式的类型只能是int类型和能自动转换为int的byte,short,char。,与if语句不同的是,case标签前后代码块的开始点和结束点非常清晰,因此可以省略case后代码块的花括号。,Java的case语句可以省略后面的break,但这种省略可能引入一个陷阱。 public class TestSwitch public static void main(String args) int i = 3; switch(i) case 8 : System.out.println(“8); brea
28、k; case 3 : System.out.println(“3); case 9 : System.out.println(“9); break; default: System.out.println(error); ,注意:,Switch语句的运行流程: Switch语句先求出expression表达式的值,然后拿这个表达式和case标签后的值进行比较,一旦遇到相等的值,程序开始执行这个case标签后代码,不再判断与后面case、default标签的条件是否匹配,除非遇到break;才会结束。,public class TestSwitch public static void mai
29、n(String args) int i = 8; switch(i) case 8 : case 3 : case 2 : System.out.println(2); break; case 9 : System.out.println(9); break; default: System.out.println(error); ,多个case可以合并到一起,Default可以省略,但不推荐,这样程序的健壮性很好,循环语句,1、while 2、do while 3、for 4、foreach(数组部分再讲),while循环和do while循环,循环语句for循环,这段程序的作用?,控制循
30、环结构,break continue,public class TestBreak public static void main(String args) int stop = 4; for (int i = 1; i = 10; i+) /当i等于stop时,退出循环 if (i = stop) break; System.out.println( i= + i); ,输出结果?,break语句不带标签,在循环体中break用来完全结束一个循环,跳出循环体。,带标签的break不仅可以结束其所在的循环,还可以直接结束其外层循环。 Java中的标签就是一个紧跟着英文冒号(:)的标识符。 如:
31、outer: Java中的标签只有放在循环语句之前才有作用。,使用break结束外层循环,public static void main(Stringargs) /外层循环,并使用outer作为标签 outer: for(int k=0;k5;k+) /内层循环 for(int m=0;m5;m+) System.out.println(k=+k+,m=+m); if(m=1) /此时break语句跳出outer标签所在循环,即外层循环 break outer; ,break语句带标签(一般用于结束多重循环),continue语句只能用在循环语句中,且continue语句只是中止本次循环,如果
32、循环条件满足的话,接着还会执行下一次循环。 可以理解为continue是略过当次循环中剩余的语句,重新开始新的循环。,使用Continue结束本次循环,public class TestContinue public static void main(String args) int skip = 4; for (int i = 1; i = 10; i+) /当i等于skip时,跳过当前循环 if (i = skip) continue; System.out.println( i= + i); ,Continue语句不带标签,Continue结束了外层循环的当次循环,public stat
33、ic void main(Stringargs) /外层循环,并使用outer作为标签 outer: for(int k=0;k5;k+) /内层循环 for(int m=0;m5;m+) System.out.println(k=+k+,m=+m); if(m=1) /此时continue语句跳出outer标签所在循环,继续下次循环 continue outer; ,return语句,return语句并不是专门用于跳出循环的,return的功能是结束一个方法。 如果方法有返回值,则return后的表达式的值就是该方法的返回值 如果没有返回值,则return后可什么都不跟。,public st
34、atic void main(Stringargs) for(int k=0;k5;k+) for(int m=0;m5;m+) System.out.println(k=+k+,m=+m); if(m=1) return; System.out.println(结束循环); ,return结束方法,2.8 简单的人机交互,前面介绍了使用System.out.println()方法输出各种类型 的数据,若需要向程序中输入数据,本章先介绍3种常用的 方法: 使用Scanner类(导入java.util.Scanner) 使用BufferedReader类(导入java.io.BufferedRe
35、ader) 使用main()方法的参数(使用java命令运行程序时指定参数),2.8 简单的人机交互,注:其中XXX代表某一种指定数据类型,如Int、Float等。,Scanner类,/利用Scanner类,从键盘上接收两个整形数字,求矩形的面积 import java.util.Scanner; public class ScannerDemo public static void main(String args) int width,length,area; /实例化一个Scanner对象实例scan Scanner scan = new Scanner(System.in); Syst
36、em.out.print(请输入宽:); /利用nextInt()方法获取从键盘输入的下一个int类型数值 width = scan.nextInt(); System.out.print(请输入长:); length = scan.nextInt(); /调用类方法getArea(),并将返回值赋给area area = getArea(width,length); System.out.println(矩形的长为: + length + ,宽为: + width + ,面积为: + area); static int getArea(int x,int y) return x * y; ,2.8 简单的人机交互,BufferedReader类是Java IO流中提供的一个字符流,它需要建立在另一个字符流的基础上。实例化一个BufferedReader对象采用如下的代码:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- RIPK1-IN-30-生命科学试剂-MCE
- 保定园博园介绍
- 人工智能+广播影视:2025年行业媒体融合趋势研究报告
- 中班语言健康宝宝培养策略
- 音标字体设计作业
- 初中交通安全课件
- 教育数据挖掘与智能化学习路径探索
- 老年营养与健康专题研究
- 二零二五年度特殊材料采购合同范本
- 2025版智能办公楼租赁合同(含能源管理)
- 学生集体外出活动备案表
- Q∕SY 1347-2010 石油化工蒸汽透平式压缩机组节能监测方法
- 基于Qt的俄罗斯方块的设计(共25页)
- 西门子顺序功能图语言S7-Graph的应用
- 中医治疗室工作制度管理办法
- 提花装造工艺技术培训课程
- 食堂投诉处理方案
- 北京市昌平区2021-2022学年八年级上学期期末考试语文试卷(word版含答案)
- 直播传媒公司简介PPT课件(参考)
- 水电工程分包劳务合同
- 五谷杂粮食品安全调查
评论
0/150
提交评论