张孝祥IT课堂 -Java就业培训教程 主讲老师:□□□.

Slides:



Advertisements
Similar presentations
第四章 类、对象和接口.
Advertisements

第一單元 建立java 程式.
四資二甲 第三週作業 物件導向程式設計.
Tool Command Language --11级ACM班 金天行.
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
第二章 JAVA语言基础.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
第三章 控制结构.
程式設計實作.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
本單元介紹何謂變數,及說明變數的宣告方式。
程式設計實作.
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第二章 Java语言基础.
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
Java程序设计 第2章 基本数据类型及操作.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第七章 操作符重载 胡昊 南京大学计算机系软件所.
第一單元 建立java 程式.
第三章 C# 基础知识.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第一章 函数与极限.
第4章 PHP流程控制语句.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言程序设计 主讲教师:陆幼利.
第二章Java基本程序设计.
第三课 标识符、关键字、数据类型.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
JAVA 程式設計 資訊管理系 - 網路組.
第二章 Java基本语法 讲师:复凡.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
第4章 Excel电子表格制作软件 4.4 函数(一).
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
第九节 赋值运算符和赋值表达式.
3.16 枚举算法及其程序实现 ——数组的作用.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
ASP.NET实用教程 清华大学出版社 第4章 C#编程语言 教学目标 教学重点 教学过程 2019年5月5日.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
C程序设计 实验二 数据类型、运算符和表达式 第6讲
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二章 Java基本语法 讲师:复凡.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
基本知识 数据类型、变量、常量、运算符.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
第2章 Java语言基础.
第二章 数据类型与表达式 丘志杰 电子科技大学 计算机学院 软件学院.
第二章 Java基础语法 北京传智播客教育
<编程达人入门课程> 本节内容 有符号数与无符号数 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java基本语法 讲师:复凡.
2 Java语言基础 (数据运算与流程控制).
第二章 简单数据类型 §2.1 数据类型概述 §2.2 变量和常量 §2.3 简单数据类型 §2.4 简单数据类型的相互转换
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

张孝祥IT课堂 -Java就业培训教程 主讲老师:□□□

第二讲 java 编程基础

Java的基本语法(1) java代码的位置 java是严格区分大小写的 java是一种自由格式的语言 java程序有三种注释方式 代码分为结构定义语句和功能执行语句 功能执行语句的最后必须用分号结束 java程序有三种注释方式

Java的基本语法(2) java中的标识符 java中的包、类、方法、参数和变量的名字,可由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,不能是关键字。 合法的标识符: indentifier username user_name _userName $username 非法的标识符: class 98.3 Hello World

java的关键字 abstract do implement private this boolean double import protected throw break else instanceof public throws byte extend int return transient case false interface short true catch final long static try char fianlly native strictfp void class float new super volatile continue for null switch while default if package synchronized 注:java 无sizeof ,goto, const 关键字,但不能用goto const作为变量名

java中的常量(1) 整型常量 长整型常量 单精度浮点数 双精度浮点数 布尔常量 十进制(12) ,十六进制 (0x12),八进制(012) 长整型常量 13L 单精度浮点数 5.1f,.4f ,2e3f ,0f 双精度浮点数 5.1,.4,2e-3,0d 布尔常量 true和false

java中的常量(2) 字符常量 字符串常量 null常量 ‘a’ , ‘8’, '\u0027' ‘\r‘表示接受键盘输入,相当于按下了回车键; ‘\n‘是换行; ‘\t‘是制表符,相当于table键; ‘\b‘是退格键,相当于Back Space; ‘\‘‘是单引号,而‘\“‘是双引号; ‘\\‘是一个斜杠“\”。 字符串常量 “Hello World“,”123”, "Welcome \nXXX" null常量 null常量只有一个值,用null表示,表示对象的引用为空

变量的概念与作用 变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。根据所存储的数据类型的不同,有各种不同类型的变量。变量名代表这块内存中的数据 。 int x=0,y; y=x+3; 执行这两条语句的过程中,内存分配及变化情况。X在被取值前必须被初始化。

java的变量类型 整数类型(byte, short, int, long) 数值型 浮点类型(float, double) 基本数据类型 字符型(char) 布尔型(boolean) 数据类型 类(class) 引用数据类型 接口(interface) 数组

变量字节大小及有效取值范围 byte占用一个字节,数字大小为-27—27-1 short占用两个字节,数字大小为-215—215-1 int占用四个字节,数字大小为-231—231-1 long占用八个字节,数字大小为-263—263-1 float占用四个字节,数字大小为1.4E-45~3.4E+38 , -1.4E-45~-3.4E+38 。用二进制的指数形式表示一个浮点数的格式,如:101*22 , 101*2-3 double占用八个字节,数字大小为4.9E-324~1.7E+308, -4.9E-324~-1.7E+308 。 char占两个字节,数字大小为0—216-1,是unicode编码。字符的本来面目,我们为什么可以直接将一个数字赋给字符变量。 Boolean占一个字节,其取值只有两个,true和false。

浮点数在内存中的表示方式 在JDK文档中查找Float. intBitsToFloat的说明 打印出最大数和最小数及它们的二进制格式 打印出无穷大与NaN及它们的二进制格式 分析0x50000000所对应的浮点数

类型转化 自动类型转换(也叫隐式类型转换) 强制类型转换(也叫显式类型转换) 类型转换的原理 及什么时候要用 强制类型转换 表达式的数据类型自动提升 所有的byte型、short型和char的值将被提升到int型。 如果一个操作数是long型,计算结果就是long型; 如果一个操作数是float型,计算结果就是float型; 如果一个操作数是double型,计算结果就是double型。 分析 System.out.println(‘a’+1)与 System.out.println(“”+’a’+1) 的区别。

变量的生命周期与作用域 变量要先定义,后使用,但也不是在变量定义后的语句一直都能使用前面定义的变量。我们可以用大括号将多个语句包起来形成一个复合语句,变量只能在定义它的复合语句中使用。 public class TestScope { public static void main(String[] args) int x = 12; int q = 96; // x和q都可用 int x = 3;//错误的定义,Java中不允许有这种嵌套定义 System.out.println("x is "+x); System.out.println("q is "+q); } q = x; /* 错误的行,只有x可用, q 超出了作用域范围 */ }

函数 函数(子程序)的概念与作用。 定义一个函数的格式 编写打印三个矩形的程序(用流水帐的方式与用函数的方式进行对比分析)。 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,….) { 程序代码 return 返回值; } 其中: 形式参数:在方法被调用时用于接收外部传入的数据的变量。 参数类型:就是该形式参数的数据类型。 返回值:方法在执行完毕后返还给调用它的程序的数据。 返回值类型:函数要返回的结果的数据类型。 实参:调用函数时实际传给函数形式参数的数据。 如何理解函数返回值类型为void的情况

函数的调用 函数调用的格式 在函数中使用return提前返回 函数调用的过程分析

函数的重载 函数的重载就是在同一个类中允许同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可。 如: public class Test { public static void main(String [] args) int isum; double fsum; isum=add(3,5); isum=add(3,5,6); fsum=add(3.2,6.5); } public static int add(int x,int y) reutrn x+y; public static int add(int x,int y,int z) return x+y+z; public static double add(double x,double y) return x+y;

java中的运算符 运算符是一种特殊符号,用以表示数据的运算、赋值和比较,一般由一至三个字符组成 。运算符共分以下几种: 算术运算符 赋值运算符 比较运算符 逻辑运算符 移位运算符

算术运算符

算术运算符的注意问题 “+”除字符串相加功能外,还能把非字符串转换成字符串 ,如: “x”+123;的结果是“x123” 。 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论了。 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 int x=3510;x=x/1000*1000;实际运行结果是3000 ,想想为什么?

算术运算符的应用技巧 思考题1:某个培训中心要为新到的学员安排房间,假设共有x个学员,每个房间可以住6人,让你用一个公式来计算他们要住的房间数? 答案:(x+5)/6。这种算法还可用在查看留言板的分页显示上: 其中x是总共的留言数,6是每页显示的留言数,结果就是总共有多少页。 思考题2:假设你要让x的值在0至9之间循环变化,请写出相应的程序代码。 答案: int x=0; while(true) { x = (x+1)%10; }

赋值运算符 注1:在JAVA里可以把赋值语句连在一起,如: x = y = z = 5 ; 在这个语句中,所有三个变量都得到同样的值5。 注2 :x += 3等效于x = x + 3,等于*= ,-=,/=依此类推。

比较运算符 注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。 注2:比较运算符“==”不能误写成“=” ,切记!切记!

逻辑运算符 注1:逻辑运算符用于对boolean型结果的表达式进行运算,运算的结果都是boolean型 。 注2:“&”和“&&”的区别在于,如果使用前者连接,那么无论任何情况,“&”两边的表达式都会参与计算。如果使用后者连接,当“&&”的左边为false,则将不会计算其右边的表达式。“|”和“||”的区别与“&”和“&&”的区别一样。

“&”和“&&”的区别分析 public class TestAnd { public static void main(String[] args) int x=0; int y=3; if(x!=0 && y==y/x) System.out.println("y = "+y); } 上面例子中,由于while语句的判断条件中的第一个布尔表达式是不成立的,程序就不会判断第二个布尔表达式的值,这就是“短路”。如果两个表达式之间用“&”来连接,如果正好碰到上面所示的特殊情况,程序运行时就会出错

位运算符 任何信息在计算机中都是以二进制的形式保存的,&,|,^除了可以作为逻辑运算符,也可以做为位算符,它们对两个操作数中的每一个二进制位都进行运算。 只有参加运算的两位都为1,&运算的结果才为1,否则就为0。 只有参加运算的两位都为0,|运算的结果才为0,否则就为1。 只有参加运算的两位不同,^运算的结果才为1,否则就为0。 我们可以对数据按二进制位进行移位操作,java的移位运算符有三种: << 左移 >> 右移 >>> 无符号右移

“>>”和“>>>” 区别的实例分析 public class ShiftTest { public static void main(String [] args) int x=0x80000000; int y=0x80000000; x=x>>1; y=y>>>1; System.out.println(“0x80000000>>1 = ” + Integer.toHexString(x)); System.out.println(“0x80000000>>>1 = ” + Integer.toHexString(y)); } 运行结果如下: 0x80000000>>1 = c0000000 0x80000000>>>1 = 40000000 十六进制与二进的对比 0x8000000016 =1000,0000, 0000, 0000, 0000, 0000, 0000, 00002 0xc000000016=1100,0000, 0000, 0000, 0000, 0000, 0000, 00002 0x4000000016 =0100,0000, 0000, 0000, 0000, 0000, 0000, 00002

移位运算的注意事项及小技巧 移位运算符适用类型有byte、short、char、int、long 对低于int型的操作数将先自动转换为int型再移位。 对于int型整数移位a>>b,系统先将b对32取模,得到的结果才是真正移位的位数。例如:a>>33和a>>1结果是一样的,a>>32的结果还是a原来的数字。 对于long型整数移位时a>>b ,则是先将移位位数b对64取模。 移位不会改变变量本身的值。如a>>1;在一行语句中单独存在,毫无意义 。 x>>1的结果和x/2的结果是一样的,x<<2和x*4的结果也是一样的。总之,一个数左移n位,就是等于这个数乘以2的n次方,一个数右移n位,就是等于这个数除以2的n次方。请思考:如何用程序实现求2的x次方。答案:y = 1<< x;

运算符的优先级 我们可以使用括号改变运算赋的优先级,分析int a =2;int b = a + 3*a;语句的执行过程 与int a =2;int b =( a + 3)*a;语句的执行过程的区别 。

如何避免多个运算符带来的问题 对于int a =2; int b= a + 3 * a++;这样的语句,b最终等于多少呢? 作者试验得到的结果是8。 对于int a =2; int b= (a ++)+ 3 * a;这样的语句,b最终等于多少呢? 作者试验得到的结果是11。

如何避免多个运算符带来的问题 与其去思考其中的原因,我们还不如将上面的第二句改为几条语句来实现我们想要的结果。 不要在一行中编写太复杂的表达式,也就是不要在一行中进行太多的运算 在一行中进行太多的运算并不能为你带来什么好处,相反只能带来坏处,它并不比改成几条语句的运行速度快,它除可读行差外,还极容易出错。 对于优先级顺序,读者不用刻意去记,有个印象就行如果你实在弄不清这些运算先后关系的话,就用括号或是分成多条语句来完成你想要的功能,因为括号的优先级是最高的, 这也是软件编码规范的一个要求。

程序的流程控制 顺序结构 选择结构 循环结构 顾名思义,顺序结构就是程序从上到下一行一行执行的结构,中间没有判断和跳转,直到程序结束。

if语句的选择结构 if (表达式) 语句; if (表达式) 语句1; else 语句2; if (表达式1) 语句1; … else 语句n; 每个语句可以是使用{ }组成的复合语句 变量 = 布尔表达式?语句1:语句2; If语句还可以嵌套使用 if (表达式1) if (表达式2) 语句1; else语句2; esle if (表达式2) 语句3; else语句4; 嵌套时最好使用{}确定层次界限,举例说明

switch语句的选择结构 Switch (表达式) { case 常量表达式1:语句1; case 常量表达式2:语句2; … case 常量表达式n:语句n; default: 语句n; } default语句是可选的,它接受除上面接受值的其他值,通俗的讲,就是谁也不要的都归它。 case后面可以跟多个语句,这些语句可以不用大括号括起来 。 switch语句判断条件可接受int, byte, char, short型,不可以接受其他类型 一旦碰到第一次case匹配,就会开始顺序执行以后所有的程序代码,而不管后面的case条件是否匹配,后面case条件下的代码都会被执行,直到碰到break语句为止。我们可以利用这个特点来用同一段语句处理多个case条件

while循环语句 While (表达式) 语句; int x=1; while(x<3) { System.out.println("x="+x); x++; } 脚下留心:while表达式的括号后面一定不要加“;”

do-while循环语句 do 语句 while (表达式); public class TestDo { public static void main(String[] args) int x=3; while(x==0) System.out.println("ok1"); x++; } int y=3; do System.out.println("ok2"); y++; while(y==0);

do-while循环语句 编写一个程序,这个程序不断地读取从键盘上输入的字符,直到读到字符’q’时,程序结束。 提示:调用System.in.read();可以读取到一个从键盘上输入字符对应的整数。通过这个程序,你一定能体会到在什么样的情况下,用do-while循环语句比while循环语句方便。

for循环语句 for(表达式1;表达式2 ;表达式3) 语句 for(int x=1;x<10;x++) { System.out.println("x="+x); } 等效于 int x=1; for(;x<10;x++) for(;x<10;) x++; for(;;) if(x >= 10) break; }

break语句 break语句可以中止循环中的子语句和switch语句。一个无标号的break语句会把控制传给当前(最内)循环(while,do.for或Switch)的下一条语句。如果有标号,控制会被传递给当前方法中的带有这一标号的语句。如: st:while(true) { while(true) break st; }

continue语句 continue语句只能出现在循环语句(while,do,for)的子语句块中,无标号的continue语句的作用是跳过当前循环的剩余语句块,接着执行下一次循环。 用continue语句的打印出 0到10之间的所有奇数的程序例子。 for(int i=0;i<10;i++) { if(i%2==0) continue; System.out.println(i); }

数组 为什么有数组? 堆内存和栈内存 int [] x; x = new int[100]; x=null; 的内存状态变化情况

数组 静态数组 使用数组时要注意的问题 int ia[] ={1,2,3,4}; int [] ia=new int[]{3,4,5}; int a[5];//声明数组时,不能指定其长度,编译时将出错 使用数组时要注意的问题 空指针异常 如何得到数组长度 数组越界异常

多维数组 如何理解多维数组,类似我们的棋盘。 java 中并没有真正的多维数组,只有数组的数组, Java中多维数组不一定是规则矩阵形式。 定义一个多维数组 int[][] xx; xx=new int[3][]; xx[0]=new int[3]; xx[1]=new int[2];

多维数组 多维数组中元素的引用方式,如:x[1][2]。 规则矩阵数组可以在一条语句中产生,如:int xx[][]=new int[2][3]; 多维数组的静态初始化 ,如: int[][] xx={{3,2,7},{1,5},{6}};

与数组操作相关的函数 使用System.arraycopy()函数拷贝数组 用Arrays.sort 来排序数组