2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞
类 顾客类 轿车类 …… 类是模子,确定对象将会拥有的状态(属性)和行为(方法) 类 具有相同属性和方法的一组对象的集合
对象:用来描述客观事物的一个实体,由一组状态和行为构成 对象的特征——行为 行为(方法)——对象执行的操作 对象:用来描述客观事物的一个实体,由一组状态和行为构成 收银 收银员李明 方法 打印账单 刷卡
如何定义类 定义一个类的步骤 1、定义类名 2、编写类的属性 3、编写类的方法
类将现实世界中的概念模拟到计算机程序中 Java类模板 public class 类名 { //定义属性部分 属性1的类型 属性1; 属性2的类型 属性2; … 属性n的类型 属性n; //定义方法部分 方法1; 方法2; 方法m; }
对象、变量和属性命名,驼峰命名法,首字母小写 常量命名,全大写,下划线连接 首字符必须是字母(包括汉子,_和$) 回避Java保留字 命名约定 Java用Unicode编码来记录字符 允许中文变量名(不推荐) 类命名,驼峰命名法,首字母大写 对象、变量和属性命名,驼峰命名法,首字母小写 常量命名,全大写,下划线连接 首字符必须是字母(包括汉子,_和$) 回避Java保留字
程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier)包括:类名、变量名、常量名、方法名、… 1.1标识符与关键字(考点) 程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier)包括:类名、变量名、常量名、方法名、… 组成规则: 汉子、字母(A~Z、a~z)、特殊符号($、_)和数字(0~9) 第1个符号不能为数字 不能为关键词、true、false、null 区分大小写
举例: 1.2注释 // 单行注释,简单的解释语句含义. /* 多行注释,用来说明更多的内容,包括算法等. …… */ /** Java文档注释,可以通过javadoc生 * 成类和接口的HTML格式的帮助文档. * 这种注释有其特殊的格式(参见相关文档)
public static void main(String[] args) { Java注释 /** * Exam1_1 class实现一个应用 * 将特定的字符串显示到标注输出 */ public class Exam1_1 { public static void main(String[] args) { System.out.println(“This is a Java Application Program."); }
Java注释 文档注释:当程序员编完程序以后,可以通过JDK提供的javadoc命令,生成所编程序的API文档,而该文档中的内容主要就是从文档注释中提取的。该API文档以HTML文件的形式出现,与java帮助文档的风格与形式完全一致。凡是在“/**”和“*/”之间的内容都是文档注释。如:DocTest.java文件。
/** 这是一个文档注释的例子,主要介绍下面这个类 */ public class DocTest{ Java注释 /** 这是一个文档注释的例子,主要介绍下面这个类 */ public class DocTest{ /** 变量注释,下面这个变量主要是充当整数计数 */ public int i; /** 方法注释,下面这个方法的主要功能是计数 */ public void count( ) {} }
在命令行输入:javadoc DocTest.java,生成了介绍类DocTest的index.html文件 文档注释的生成 在命令行输入:javadoc DocTest.java,生成了介绍类DocTest的index.html文件
所有基本类型所占的位数都是确定的,并不因操作系统的不同而不同。 所有基本类型的关键词都是小写的。 2.1 Java基本数据类型 所有基本类型所占的位数都是确定的,并不因操作系统的不同而不同。 所有基本类型的关键词都是小写的。 数据类型 Java C/C++ 所占位数 值的范围 char 16 0 ~65535 8 -27~27-1 byte 0-255 short -215~215-1 int 32 -231~231-1 16/32 - long 64 -263~263-1 32/64 float 3.4e-038 ~3.4e+038 double 1.7e-308 ~1.7e+308
ascii Latin-1/iso8859-1(0-255) GB2312/GBK,GBK兼容繁体字 2.1 字符发展 ascii Latin-1/iso8859-1(0-255) GB2312/GBK,GBK兼容繁体字 (GB2312 1981年实施,收录6763个汉字, GBK收录21886个字) BIG5,台湾标准,收录13461个字 unicode,支持七千多个汉字 UTF8
2.1 Unicode char c = ‘\u5E74’; //char c = ‘年’; String s1 = “Java\u8BED\u8A00”; //String s1 = “Java语言”; String s2 = "\u0030\u0031"; //String s2 =“01”; System.out.println(c ); System.out.println(s1); System.out.println(s2);
Eclipse简介 Eclipse(日食)
Eclipse简介 Eclipse简介 Eclipse是一种可扩展的开放源代码IDE。2001年11月,IBM公司捐出价值4,000万美元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。 常见的JAVA集成开发环境 IntelliJ IDEA、Sun的NetBeans、Sun的Sun Java Studio、Borland的JBuilder 、 Oracle 的JDeveloper 等
Eclipse使用 下载地址:eclipse.rar
Eclipse 安装与使用 安装步骤: 安装JDK 将Eclipse压缩包解压即可。 运行:执行解压目录中eclipse.exe
/links 其他plugins和features的连接地址的存放目录 /readme eclipse.exe 启动Eclipse程序 /workspace 具体的项目目录。workspace目录下还有一个.metadata的目录,这个目录存着你这个启动的工作区的所有配置 。
Eclipse开发环境
项目构建 1.选择文件→新建→项目; 2.项目类别选Java; 3.项目列表选Java项目; 4.点击“下一步”; 5.输入项目名称,例如:HelloProject; 6.点击“完成”; 7.在工具条里点击“创建Java类”的按钮 ; 8.在名称域输入HelloWorld; 9.点击public static void main(String[] args) 的复选框,让Eclipse创建 main方法 ; 10.点击“完成”; 11.一个Java编辑窗口将打开,在main方法中输入 System.out.println(“Hello World”)行; 12.使用Ctrl-s保存,这将自动编译 HelloWorld.java; 13.点击工具条里的“运行”按钮; 14.测试成功,控制台窗口,一句 “Hello World”将会显示在里面 。
Eclipse有一个增量编译器,每次保存一个Java文件时它就自动进行编译。这个特性被称做“自动构建”。 调试运行 Eclipse有一个增量编译器,每次保存一个Java文件时它就自动进行编译。这个特性被称做“自动构建”。
Java程序结构 package语句 //0或1条,必须放在文件开始 import语句 //0或多条,必须放在所有类定义之前 public classDefinition //0或1个。文件名必须与该类的类名完全相同 classDefinition //类定义,个数不限 interfaceDefinition //接口定义,个数不限
Java程序结构示例 package javawork.helloworld; /*把编译生成的所有.class文件放到包 import java.awt.*; //告诉编译器本程序中用到系统的AWT包 import javawork.newcentury; /*告诉编译器本程序中用到用户自定义 的包javawork.newcentury*/ public class HelloWorldApp{......} /*公共类HelloWorldApp的定义, 名字与文件名相同*/ class TheFirstClass{......} //第一个普通类TheFirstClass的定义 class TheSecondClass{......} //第二个普通类TheSecondClass的定义 ...... //其它普通类的定义 interface TheFirstInterface{......} //第一个接口TheFirstInterface的定义 ...... //其它接口定义
Java编程规范 包名 类名 接口名 方法名 变量名 常量名 全小写,一般为名词,如:java.awt.event; 首字母大写,每个单词的首字母大写,如:class HelloWorldApp; 接口名 同类名,如:interface Collection; 方法名 一般为动词,小写字母开头,每个单词的首字母都要大写,如:balanceAccount, isButtonPressed; 变量名 一般为动词,小写字母开头,每个单词的首字母都要大写,如:length; 常量名 基本类型的常量名为全大写,如:int YEAR, int WEEK_OF_MONTH;对象常量大小写混合。
布尔型数据只有两个值true和false,且它们不对应于任何整数值 布尔型变量的定义如: 2.1 布尔类型(boolean) 布尔型数据只有两个值true和false,且它们不对应于任何整数值 布尔型变量的定义如: boolean b = true; 布尔型数据只能参与逻辑关系运算: && || == != ! 示例: boolean b1; boolean b2 = true; b = !b2; boolean b = (b1 && b2) != false;
2.2常量和变量 与 C、 C++不 同,Java中 不 能 通 过 #define命 令 把 一 个 标 识 符 定 义 为 常 量,而 是 用 关 键 字 final来 定义,定义常量的一般格式为: final 类型 常量标识符 = 常数值; final int MAX_NUM = 100; final double PI = 3.1415926;
程序中的基本存储单元,其定义包括变量名、变量类型和作用域几个部分,定义格式为: 2.2常量和变量 程序中的基本存储单元,其定义包括变量名、变量类型和作用域几个部分,定义格式为: 类型 变量名 = 值 ; int n1 = 3, n2 = 4; Java中变量的缺省初值都是确定的: 布尔变量的初值为:false 整数变量的初值为:0 浮点数变量的初值为:0.0 引用(复合)变量的初值为:null 在方法实现中定义的变量必须显式的初始化。 变量的作用域 指可访问变量的一段代码,在程序中不同的地方声明的变量具有不同的作用域:局部变量、类变量、方法参数、例外处理参数。在一定的作用域内,变量名必须唯一。
2.3数据类型的转换 自动类型转换 整型、实型、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级: 低----------------------------------------------------->高 byte,short,char—> int —> long—> float —> double 操作数1类型 操作数2类型 转换后的类型 byte、short、char int int byte、short、char、int long long byte、short、char、int、long float float byte、short、char、int、long、float double double System.out.println(‘a’)与System.out.println(’a’+1) 的区别。
2.3 常量与变量 自动类型转换(也叫隐式类型转换) 强制类型转换(也叫显式类型转换) 类型转换的原理 什么时候要用强制类型转换? 表达式的数据类型自动提升 • 所有的byte型、short型和char的值将被提升到int型。 • 如果一个操作数是long型,计算结果就是long型; • 如果一个操作数是float型,计算结果就是float型; • 如果一个操作数是double型,计算结果就是double型。 分析 System.out.println(‘a’)与System.out.println(’a’+1) 的区别。
2.3数据类型的转换 自动类型提升 byte b = 3; int x = 4; x = x + b;//b会自动提升为int类型进行运算。 自动类型提升 byte b = 3; int x = 4; x = x + b;//b会自动提升为int类型进行运算。 强制类型转换 b = b + 4;//报错 b = (byte)b+4;//强制类型转换,强制将b+4的结果转换为byte类型,再赋 值给b。 思考: byte b1=3,b2=4,b; b=b1+b2; b=3+4; 哪句是编译失败的呢?为什么呢?
3、Java运算符和表达式 3.1 优先级、结合性以及单/双目运算 3.2 Java 运算符和表达式
优先级、结合性以及单/双目运算 3.1 优先级、结合性以及单/双目运算 1) . , [] , () 9) & 1) . , [] , () 9) & 2) ++ , -- , ! , ~ , instanceof 10) ^ 3) new (type) 11) | 4) * , / , % 12) && 5) + , - 13) || 6) >> , >>> , << 14) ?: 7) > , < , >= , <= 15) = , += , -= , *= , /= , %= , ^= 8) == , != 16) &= , |= , <<= , >>= , >>>= Stu s = new Stu(); int a = ++s.age*3>>;
(1)运算符 3.2 Java 运算符和表达式 算术运算符: +,―,*,/,%,++,―― 关系运算符: >,<,>=,<=,==,!= 布尔逻辑运算符: !,&&,|| 位运算符: >>,<<,>>>,&,|,^,~ 赋值运算符: =,及其扩展赋值运算符如+=,―=,*=,/=等。 条件运算符: ? :
3.2 Java 运算符和表达式 位运算符 运算符 << >> >>> & | ^ ~ 运算 左移 右移 无符号右移 与运算 或运算 异或运算 反码 范例 3 << 2 = 12 ‐‐> 3*2*2=12 3 >> 1 = 1 ‐‐> 3/2=1 3 >>> 1 = 1 ‐‐> 3/2=1 6 & 3 = 2 6 | 3 = 7 6 ^ 3 = 5 ~6 = ‐7
3.2 Java 运算符和表达式 “&”和“&&”的区别: 单&时,左边无论真假,右边都进行运算; 双&时,如果左边为真,右边参与运算,如果左边为假,那 么右边不参与运算。 “|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
表达式是由操作数和运算符按一定的语法形式组成的符号序列。 3.2 Java 运算符和表达式 (2)表达式 表达式是由操作数和运算符按一定的语法形式组成的符号序列。 一个常量或一个变量名字是最简单的表达式,其值即该常量或变量的值; 表达式的值还可以用作其他运算的操作数,形成更复杂的表达式。 例: x num1+num2 a*(b+c)+d 3.14 x<=(y+z) x&&y||z
4.1 选择语句:if-else, switch-case 4.2 循环语句:while, do-while, for 4、Java控制结构 4.1 选择语句:if-else, switch-case 4.2 循环语句:while, do-while, for 4.3 跳转语句:continue, break, return
布尔表达式boolean-expression是任意一个返回布尔数据类型的表达式,而且必须是(比C或C ++要严格)。 4.1 选择语句:if-else 布尔表达式boolean-expression是任意一个返回布尔数据类型的表达式,而且必须是(比C或C ++要严格)。 与C或C++一样,每个单一语句后面都要有分号。为了增强程序的可读性,应将if或else后的语句用{}括起来。 else子句是任选的,不能单独作为语句使用,它必须和if语句配对使用,并且总是与离它最近的if配对。 int i1 = 123; int i2 = 456; if( i1>i2 ) { System.out.println(“The bigger one is: ”+i1); } else System.out.println(“The bigger one is: ”+i2);
4.1 选择语句:switch switch (expression) { case value1 : statements1; break; } …… case valueN : statementsN; [default : defaultStatements; }]
表达式expression的返回值类型必须是这几种类型之一:int、byte、char、short char(String在java7 4.1 选择语句: switch 表达式expression的返回值类型必须是这几种类型之一:int、byte、char、short char(String在java7 中被支持) 。 case子句中的值valueI必须是常量,而且所有case子句中的值应是不同的。 default子句是任选的。 break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行。 (如果某个case分支后没有break语句,程序将不再做比较而执行下一个分支。) switch语句的功能可以用if-else语句来实现,但某些情况下,使用switch语句更简炼。
4.2循环语句 for循环 while循环 do-while循环 int sum =0; for( int i=1; i<=10; i++ ) { sum += i; } int n = 1, sum = 0; while ( n<=10 ) { sum = sum + n; n++; } do-while循环 int n = 10, sum = 0; do { sum += n; n--; }while( n>0);
4.3 跳转语句: continue outer: for( int i=0; i<10; i++ ) //外层循环 { inner: for( int j=0; j<10; j++ ) //内层循环 if( i<j ) …… continue outer; } } //内层循环结束 } //外层循环结束 for( int i= 0; i <10; i++ ) { if( i == 5 ) continue; } ……
4.3跳转语句: break a:{ //标记代码块a …… b:{ //标记代码块b c:{ //标记代码块c break b; …… //这段语句将不执行 } //代码块c结束 …… //这段语句也不执行 } //代码块b结束 …… //从这段语句开始执行 } //代码块a结束
1.下列标识符中,哪些是合法的变量名,哪些是不合法的变量名? 练习(1) 1.下列标识符中,哪些是合法的变量名,哪些是不合法的变量名? (1)char (2)2abc (3)$_isTrue (4)i+j (5)_istrue(6)变量6 (7)String (8)3.14159 2.判断下面的程序段是否正确,若有错误,错在哪里,应该如何改正,并且测试改正后的输出结果。 public static void main(String[] args){ ch = ‘a’; char ch; System.out.println(“ch=”+ch); }
练习(2) 3.写出下面程序的运行结果。 //Examplex2_3.java public class Example2_3{ public static void main(String[] args){ int x = 1,a = 0,b = 0; switch(x){ case 0: b++; case 1: a++; case 2: a++,b++; } System.out.prinln(“a=”+a); System.out.prinln(“b=”+b);
练习(3) 4.写出下面表达式的最后运算结果,并且令a = 1,b = 2,c =3,d = false。 (1)a+=b--/++c; (2)d = !((a>=--b/b++<=c--)&&a==b); (3)d = b>c^a!=c; 5.编写Java程序,计算sum = 1!+2!+……+10!。
练习(4) 6.编写Java程序,输出从公元1990年到2007年所有闰年的年号,每输出两个年号换一行。判断年号是否为闰年的条件是: (1)若年号能被4整除,而不能被100整除,则是闰年; (2)若年号能被400整除也是闰年。
7.利用for循环编写一个程序,将如下图案分别打印输出。 * *** ***** ******* 练习(5) 7.利用for循环编写一个程序,将如下图案分别打印输出。 * *** ***** *******
8.编写一个方法来计算正方形的面积和周长。 9.编写程序找出所有的水仙花数;水仙花数是三位数,它的各位数字的立方和等于这个三位数本身。 练习(6) 8.编写一个方法来计算正方形的面积和周长。 9.编写程序找出所有的水仙花数;水仙花数是三位数,它的各位数字的立方和等于这个三位数本身。
2019/1/17 谢谢