390 likes | 526 Views
第 2 章 Java 语言编程基础. 主讲:胡伏湘. 复习与思考. 1 、举例说明什么是对象,什么是类,类和对象有什么不同? 2 、举例说明类的继承性。. 2.1 Java 语言的基本组成. 2.1.1 分隔符 1.空白符:换行、回车、空格、 tab 2.注释语句:例题参见 P25 // 一行的注释内容 /*一行或多行的注释内容*/ /**文档注释内容*/ 3.普通分隔符: { } ; , :共 4 种. 2.1 Java 语言的基本组成. 2.1.2 关键字 所有的关键字都是小写的。参见 P25
E N D
第2章Java语言编程基础 主讲:胡伏湘
复习与思考 • 1、举例说明什么是对象,什么是类,类和对象有什么不同? • 2、举例说明类的继承性。
2.1 Java语言的基本组成 • 2.1.1 分隔符 1.空白符:换行、回车、空格、tab 2.注释语句:例题参见P25 // 一行的注释内容 /*一行或多行的注释内容*/ /**文档注释内容*/ 3.普通分隔符:{ } ; , :共4种
2.1 Java语言的基本组成 • 2.1.2 关键字 • 所有的关键字都是小写的。参见P25 • const和goto是java的保留字,但已经不再使用 • then和sizeof都不是java的关键字,大写的NULL不是java语言的关键字,String是java语言的一个封装类的类名,也不是关键字,使用时要注意。
2.1 Java语言的基本组成 • 2.1.3 Java语言标识符 • 首字符必须是字母(大小写均可)、下划线_或美元符$ • 标识符可以由数字(0--9)、所有从A--Z的大写字母、a--z的小写字母和下划线_、美元符$和所有在十六进制0xc0前的ASCII码等构成 • 长度不限
2.1 Java语言的基本组成 • 2.1.4 Java的编码规范 包package:包名采用完整的英文描述符,全由小写字母组成 类class和接口interface:类名采用完整的英文描述符,所有单词的第一个字母均大写 组件/部件(Component):使用完整的英文描述来说明组件的用途,末端应接上组件类型
2.1 Java语言的基本组成 2.1.4 Java的编码规范 • 异常(Exception):通常采用字母 e 表示异常的实例 • 变量variable和方法method:采用完整的英文描述,第一个字母小写,后面任何单词的首字母大写 • 静态常量字段(static final):全部采用大写字母,单词之间用下划线分隔
2.2 基本数据类型 • 数据类型
2.2 基本数据类型 • 2.2.1 基本数据类型 1.布尔型boolean 也称为逻辑型,只有两个取值:true表示逻辑真,false表示逻辑假,这种变量称为boolean型变量 ,使用方法实例如下: 2.字符型char char型是用来表示字母的,它仅能表示一个单一的Unicode字母,其值用16位无符号整数表示,范围是0~65535
2.2 基本数据类型 • 2.2.1 基本数据类型 3.整型 在Java语言中,提供了4种整型数据类型:byte、short、int、long,它们都是定义了一个整数,但它们能够表示数据的范围不同。使用方法实例如下: 4.浮点型 在Java语言中有两种浮点数类型:float、double
2.2 基本数据类型 • 2.2.2 类型转换 整型、实型、字符型数据可以进行混合运算。运算时,不同类型的数据先转换成同一类型后再参与运算,转换的原则是位数少的类型转换成位数多的类型,称为自动类型转换
2.3 运算符与表达式 • 2.3.1 算术运算符 1. 双目算术运算符 双目算术运算符包括+、-、*、/和%(取模)五种运算符。 2.单目算术运算符 +,++,-,--
2.3 运算符与表达式 • 2.3.2 关系运算符 > >= < <= == != 注意:=不是关系运算符,而是赋值运算符
2.3 运算符与表达式 • 2.3.3 逻辑运算符 &&、|| 为双目运算符,实现逻辑与、逻辑或。 !为单目运算符,实现逻辑非。 对于布尔逻辑运算,先求出运算符左边的表达式的值,对或运算如果为true,则整个表达式的结果为true,不必对运算符右边的表达式再进行运算;同样,对与运算,如果左边表达式的值为false,则不必对右边的表达式求值,整个表达式的结果为false,这种逻辑运算又称为逻辑短路与和逻辑短路或。 其应用见下面例题:
2.3 运算符与表达式 • 2.3.4 位运算符 ~ 按位取反 & 按位与 | 按位或 ^ 按位异或 >> op1右移op2位 << op1左移op2位 >>> op1无符号右移op2位 位运算实例见例2-6:
2.3 运算符与表达式 • 2.3.5 赋值运算符= 1.赋值运算符 赋值运算符“=”把一个数据赋给一个变量,在赋值运算符两侧的类型不一致的情况下,进行类型转换 2.扩展赋值运算符 在赋值符“=”前加上其它运算符,即构成扩展赋值运算符
2.3 运算符与表达式 • 2.3.6 条件运算符 条件运算符 ?:为三目运算符,它的一般形式为: expression? statement1: statement2 例:maxValue:=a>b?a:b
复习提问 • 1、指出下面的标识符,哪些合法,哪些非法? • char i90 integer_2 71string myFile-2 文件1 • I love Java! • 2、&运算与&&运算有什么区别? • 3、64>>3 = ?
2.4 数组 • 2.4.1 一维数组 1.一维数组的定义 type arrayName[]; 或 type [] arrayName[]; 2.一维数组元素的引用 定义了一个数组,并用运算符new为它分配了内存空间后,就以引用数组中的每一个元素了。 arrayName=new type[arraySize] 数组元素的引用方式为:arrayName[index] 使用举例:赋值及输出—例2-7
2.4 数组 • 2.4.1 一维数组 3.一维数组的初始化 intArray.length表示数组intArray的长度 对数组元素可以先声明再进行赋值。也可以在定义数组的同时进行初始化。 如:int arr[]={2,4,6,8,4}; 但int arr[5]={2,4,6,8,4};非法 例2-8:求Fabonacci数组的前10项。 例2-9:冒泡排序法
2.4 数组 • 2.4.2 多维数组 1.二维数组的定义 type arrayName[][]; 直接分配每维空间:int arr[][]=new int[2][3]; 也可从高维开始,分别为每一维分配空间: int a[][]=new int[2][]; arr[0]=new int[3]; arr[1]=new int[3];
2.4 数组 • 2.4.2 多维数组 2.二维数组的初始化 • 直接对每个元素赋值 • 如:int a[][]={{2,3},{1,5},{3,4}}; • 定义的同时初始化: int arr[][]={{3,4},{7,1},{-4,12}}; 实例2-10:矩阵的乘法运算
2.4 数组 • 2.4.3 与数组有关的系统函数(方法) 1.数组复制System.arraycopy() 格式:public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length) arraycopy(source,o,dest,o,x)表示复制源数组中从下标0开始的x个元素到目标数组,从目标数组下标0对应的位置开始存放。 2.数组排序Array.sort() 格式:Array.sort(数组变量名) 功能:将元素由小到大排序,结果仍然放在原数组中。
2.4 数组 • 实例:数组排序 • public class ArrSort{ • public static void main(String[] args){ • int ia[]=new int[] {4,18,6,10,25,3}; • Arrays.sorts(ia); • for (int i=0;i<ia.length;i++) • System.out.print(ia[i]); • } • }
复习提问 1、数组下标变量是从哪个数字开始编号的?假如有一个数组a,其长度怎么表示? 2、指出下面数组定义中有没有错误: • int [46] intStudentNo; • int a[][]=new int[][3]; • int a[][]=new int[2][]; • int a[5]={1,2,3,4,5}; 3、定义一个整形数组myArray大小为4,并赋值(任意数),写出代码段
补充内容 • 例1:命令行参数的使用,从命令行输入参数并执行—数值 • //CommandParamIsInt.java,命令行参数的使用 • public class CommandParamIsInt • { • public static void main(String args[]) • { • int i=Integer.parseInt(args[0]); • int j=Integer.parseInt(args[1]); • int sum=i+j; • System.out.println("你输入的数是: "+i+" 和 "+j); • System.out.println("两数之和是: "+sum); • } • }
补充内容 • 例2:从命令行输入参数并执行—字符串 • //CommandParamIsChar.java--命令行参数是字符串 • public class CommandParamIsChar • { • public static void main(String args[]) • { • System.out.println(“你在命令行输入的字符串分别是: "+args[0]+" 和 "+args[1]); • } • }
2.5 控制结构 • 2.5.1 分支语句 1. 条件语句 if-else 格式: if(boolean-expression) statement1; [else statement2;] 实例1:判断今年是否为闰年
2.5 控制结构 闰年规则:年份用4位数表示且符合2个条件之一 • 1、能被4整除,但不能被100整除; • 2、能被400整除 • 即可以表示为: (year%4==0&&year%100!=0)||(year%400==0)
2.5 控制结构 • 2.5.1 分支语句 2.多分支选择语句switch switch (expression){ case value1 : statement1;break; case value2 : statement2;break; ………… case valueN : statemendN;break; [default : defaultStatement; ] } 实例2:根据运算符输出结果
2.5 控制结构 • //SwitchOp.java,根据不同的四则运算符(+、-、*、/),对两个实数执行相应的运算并输出结果。 • public class SwitchOp1{ • public static void main(String args[]){ • float a=9; • float b=3; • float result=0; • char op='+'; • switch(op){ • case '+': result=a+b; • case '-': result=a-b; • case '*': result=a*b; • case '/': result=a/b; • default: result=0; • } • System.out.println("result="+result); • } • }
2.5 控制结构 • 2.5.1 分支语句 3.break语句:在switch语中,break语句用来终止switch语句的执行,使程序从switch语句后的第一个语句开始执行。 格式1: break //直接中止并退出 格式2:break blockLabel;// blockLabel:代码块 4.返回语句return 格式1:return expression //返回一个值,相当于定义一个函数 格式2:return //不返回任何值,用于void方法
2.5 控制结构 • //SwitchOp.java,对例2程序的修改 • public class SwitchOp{ • public static void main(String args[]) { • float a=9; • float b=3; • float result; • char op='+'; • switch(op) { • case '+': result=a+b;break; • case '-': result=a-b;break; • case '*': result=a*b;break; • case '/': result=a/b;break; • default: result=0; • } • System.out.println("result="+result); • } • }
2.5 控制结构 • 2.5.2 循环语句 1.while语句 格式: [initialization] while (terminationCondition){ body; [iteration;] //反复执行或者返回结果 }
2.5 控制结构 • 2.5.2 循环语句 2.do-while语句 格式: [initialization] do { body; [iteration;] } while (terminationCondition);
2.5 控制结构 • 2.5.2 循环语句 3.for语句 格式: for (initialization; terminationCondition; iteration){ body; }
2.5 控制结构 • 2.5.2 循环语句 4.continue语句 格式1:continue; 格式2:用continue跳转到括号指明的外层循环中:continue outerLable; outer: for( int i=0; i<10; i++ ){ //外循环 for( int j=0; j<20; j++ ){ //内循环 if( j>i ){ …… continue outer;} …… } …… }
2.5 控制结构 • 2.5.2 循环语句 • 实例3:输出1—20之内的单数 public class ContinueOp { public static void main(String args[]) { int n; for(n=1;n<=10;n++){ if (n%2==0) System.out.println("n="+n);} } } continue;
2.5 控制结构 • 2.5.2 循环语句 • 实例4:计算10的阶乘,DoWhileOp.java public class DoWhileOp { public static void main(String args[]) { int n=10; result=1; do result*= ; while(n>=1); System.out.println("10!="+result); } } long n--