版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java程序设计,第一章 计算机、程序和Java概述,什么是计算机、程序、操作系统 Java的诞生 Java的特点 Sun公司的SDK 一个Java application应用程序 一个Java applet应用程序,计算机、程序、操作系统,计算机是存储和处理数据的电子设备。 包括硬件和软件两部分。 硬件包括CPU、存储器(内存、存储设备)、I/O设备(如图所示) 程序是计算机上运行的、能完成某种特定功能的软件(指令集合)。包括系统程序和应用程序。 操作系统是指挥硬件运行的系统程序。包括进程调度、线程调度、存储器管理、I/O设备管理等功能。,磁盘、光盘、磁带,调制解调器、网卡,键盘、鼠标,显示
2、器、打印机,返回,编程语言的几个发展阶段,机器语言:二进制码 汇编语言:助记符取代二进制码 面向过程的高级语言: 面向对象的高级语言:,面向过程的高级语言,用更接近于自然语言的单词符号取代助记符。 程序独立于计算机 采用自顶向下的方法分析问题,把复杂的问题分解成小的、简单的问题。 用称为函数或子程序的独立的功能模块解决小的问题,有利于代码重用。 程序由这些功能模块组成。 数据和操作它们的方法(函数)分离。,面向对象的高级语言,通过抽象、封状、继承、多态等技术把数据和操作它们的方法封装在类中,增强了代码重用的功能。 通过访问限制,增加了数据的安全性。 程序模型更接近于现实中的事物。,Java的诞
3、生,C语言、Visual Basic和 Java语言,是当今世界上最为流行三大计算机语言; Java语言在网络编程方面占有主流的地位。 Java语言产生于1991年,当初的开发设计目的是以设计消费电子产品(如电视机、电话机、电烤厢、手机)上的操作系统和程序为主的,当时这个语言叫Oak;但自1994万维网出现后, James Gosling 意识到万维网上需要一种跨平台的计算机语言,于是他把oak加以改造并用于网络编程,取得巨大成功。1995年5月23日Sun 公司正式推出Java语言.java的出现,是计算机信息交换的一个重要里程碑。 Java 语言的开发者James Gosling 使Jav
4、a语言成为一个非常具有特色且功能强大的计算机语言。他的设计灵感起源于C+,在Java语言中我们可以看到C+语言的身影,虽然Java语言和C+语言有很相似,但本质上却大不相同,它不是C+的延伸和扩展,它可以说是一个专为Internet而设计开发出来的新一代计算机语言,它现在在因特网程序设计上占有如日中天的地位,它在因特网上的应用和蓬勃发展,是全世界所公认的。,Java的特点,简单的 面向对象的 解释型的 平台无关的 安全的 多线程的 动态的,普通编译型语言的编译过程,JAVA的编译执行过程,Sun公司的SDK,Java语言在万维网上的编程方面取得了广泛的应用,与此同时, Java语言本身也得到了
5、快速的发展,已从Java 1.0发展到 Java1.7 。 Java1.2 已与 Java 1.0有很大区别,所以Java1.2以后各版通称为 Java2。 本人使用的Java2开发软件: jdk-6u5-windows-i586-p.exe ,是从网站: WWW ,其体积大概有 71 兆 字节。 该网站以及网站WWW 有很多关于java的说明资料,如 API (应用程序接口)的说明,也有很多关于 java 的软件供免费下载,大家可以去浏览。,一个Java application 应用程序,/ This application program prints Welcome to Java! p
6、ublic class Welcome public static void main(String args) System.out.println(Welcome to Java!); ,一个Java applet 应用程序,/* WelcomeApplet.java: This is an example of Java applets */ import java.awt.*; public class WelcomeApplet extends java.applet.Applet public void paint(Graphics g) g.setColor(Color.red)
7、; g.drawString(Welcome to Java!, 30, 30); , HTML Test Page WelcomeApplet will appear below in a Java enabled browser. ,第二章 基本数据类型和基本操作,编写简单的程序 标识符 变量和常量 基本数据类型及其运算,一个简单的程序,public class ComputeArea public static void main(String args) double radius; double area; radius = 20; area = radius * radius *
8、3.14159; System.out.println(The area for the circle of radius + radius + is + area); ,下一页,标识符,标识符:标识符是以字母(包括汉字)、下划线、美元符号开头,后跟字母、数字、下划线或美远符号组成的字符串。用来命名编程实体,如变量、常量、方法、类、包等。标识符区别大小写字母,没有固定长度,中间不能插入空格。 标识符用作变量名、方法名、接口名、类名等。例如: 关键字(保留字):关键字是系统预定义的、具有特殊意义和用法的符号,不得用它们做标识符。 例如:,变量和常量,变量用来存储数据,程序运行过程中,值可以改变。
9、 变量使用前要先定义。 变量定义后,可以用赋值语句给它赋值。 任何表达式都有一个值。赋值表达式的值就是赋值号右边的表达式的值。 常量:是在程序的执行过程中,其值不能改变的量。包括数值字面量和符号常量。 Java使用关键字final定义符号常量。,int x; double radius; char a;,x=1; a=A; double radius=1.0;,i= j = k =1;,final double PI = 3.14159; area=radiu*radiu*PI;,数据类型,表2-1 数值数据类型,数值数据类型及其运算,算术运算符+ - * / % + - 数值直接量(数值字面
10、量)是在程序中直接出现的常量值。 1. 整型直接量默认为int型十进制数,后加L或l变为long型。以0开头为八进制常量,以0 x或0X开头为十六进制常量。 2. 浮点型直接量默认为double型。后加F或f变为float型。例如100.2F。 浮点型直接量也可以用科学记数法表示。例如 1234E2相当于1234102 1234e-2相当于123410-2,数值数据类型及其运算,算术表达式由算术运算符连接而成的表达式。例如表达式(3+4*x)/5-10*(y-5)*(a+b+c)/x+9*(4/x+(9+x)/y)表示数学中的如下表达式 简洁赋值运算符+= -= *= /= %=,数值类型转换
11、,不同类型的数值混合运算时,需进行数值类型转换。 数值类型转换分为自动类型转换和强制类型转换。 自动类型转换由系统自动进行,总是把相对比较低级的数据类型转换为比较高级的类型。转换规则如下1.如果一个操作数是double型,则将另一个转换为double型;2.否则,如果一个操作数是float型,则将另一个转换为float型;3.否则,如果一个操作数是long型,则将另一个转换为long型;4.否则,两个操作数都转换为int型。 强制类型转换可以把高级类型转换为低级的数据类型。例如: 赋值时的情况比较特殊,无论是否使用强制类型转换,都是把赋值号右边的值转换为左边变量的类型。例如:,float f
12、= (float)10.1; int i = 10 + (int) f;,int i = 12.34 + 100.45,字符数据类型及其运算,字符类型char表示单个字符。字符直接量(字符字面量)是用单引号括住的单个字符。例如: Java使用Unicode码对字符进行编码。编码一个字符的Unicode码占两个字节,书写上用以u开头的4位十六进制数表示。例如: Unicode码包含ASCII码,对于属于ASCII码字符集中的字符既可以使用ASCII字符来表示,也可以使用Unicode码来表示。例如: 自增和自减运算符可以用于char型变量,得到后一个或前一个Unicode字符。例如:,char
13、letter = A; char numChar = 4;,JOptionPane.showMessageDialog(null, “u5496u5561”, “Display coffee”, JOptionPane.INFORMATION_MESSAGE);,char letter = A; char letter = 65; char letter = u0041; /这3条语句是等价的,char ch=a; System.out.println(+ch);,字符数据类型及其运算,Java用转义字符序列表示一些无法显示的、具有特殊功能的字符。如下表所示:,表2-2 Java转义字符序列,
14、字符数据类型及其运算,char型数据可以转换成任何数值型数据,反之亦然。 一个整数转换成char型数据时,只使用整数的低16位,其余部分忽略。 一个浮点数要转换成char型时,首先转换成int型,然后将这个int型数据转换成char型。 char型数据转换成数值型时,就是把该字符的Unicode码值转换为指定类型的值。,布尔数据类型及其运算,布尔型数据(boolean)只能取两个值:true或false。 Java关系和逻辑表达式的值是一个布尔型的值。 Java的关系运算符包括: = = != Java的逻辑运算符用来连接两个关系表达式括:! if(i0) ,int i=10 , j=5 ;
15、if(i0) ,运算符的优先级,运算符的结合性,当两个优先级相同的运算符连续出现时,若左边的运算符先运算,则为自左向右结合;若右边的运算符先运算,则为自右向左结合。 除赋值运算符之外的所有双目运算符都是自左向右结合;赋值运算符为自右向左结合。 后置自增和自减运算符为自左向右结合;前置自增和自减运算符为自右向左结合。 !、(按位取反)、+、-(正负号)为自右向左结合。,字符串类型String,String为Java预定义的类,表示字符串。例如: 出现在字符串操作中的+的作用是连接。 +=也可以用来连接字符串。,String message=Welcome + to + Java;,从输入对话框获
16、取输入,可以使用JOptionPane类中的showInputDialog方法从输入对话框获取用户输入的字符串。例如: 可以使用Integer类的parseInt方法把表示整数的字符串转换成对应的int型值。例如: 可以使用Double类的parseDouble方法把表示实数的字符串转换成对应的double型值。例如:,String input = JOptionPane. showInputDialog(null, “Enter an input”, “Input Dialog Demo”, JOptionPane.QUESTION_MESSAGE);,int in=Integer.pars
17、eInt(inputstring);,double in=Double.parseDouble(inputstring);,例2.1 从对话框输入,第三章 控制语句,Java控制结构,顺序结构 分支结构 循环结构,分支语句分支语句根据一定的条件,动态决定程序的流程方向,从程序的多个分之选取一个或多个来执行。分之语句有两种: if 语句和 switch 语句. 1、if 语句其语法是: if(逻辑表达式)语句序列1 else 语句序列2 /蓝色部分可选 其含义是,若表达式为真,执行语句序列1,否则执行语句序列2,如: int x=3; if(x!=3) ,请看如下例子: If (grade=90
18、) System.out.println(“A等”); else if(grade=80) System.out.println(“B等”); else if(grade=70) System.out.println(“C等”); else if(grade=60) System.out.println(“D等”); else System.out.println(“不及格 !”); ,注意 :因为每对中只有一句,所以可以省去。 若中有多句,则不能省去,条件语句例,switch语句,其格式为: switch(表达式) case c1: 语句组1; break; case c2:语句组2; br
19、eak; . case ck:语句组k; break; default:语句组; ,其中表达式的值必须是byte型、short型、int型、或char 型的。不能是long型。 break语句的作用是跳到switch 语句的 之后去执行其它语句。 注意其中的break语句不可省去。若省去break语句,那么,当某个语句组被执行后,它后面的所有语句组都会被执行 !,开关语句,class SwitchTest public static void main(String args) char ch=args0.charAt(0); switch(ch) case 0: case 1: case 2
20、:case 3:case 4: case 5:case 6:case 7:case 8:case 9: System.out.println(The character is digit +ch); break; case a:case b:case c:case d:case e:case f: case g:case h:case i:case j:case k:case l: case m:case n:case o:case p:case q: case r:case s:case t:case u:case v:case w: case x:case y:case z: System
21、.out.println(The character is letter +ch); break;,case A:case B:case C: case D:case E:case F: case G:case H:case I: case J:case K:case L: case M:case N:case O: case P:case Q:case R: case S:case T:case U: case V:case W:case X: case Y:case Z: System.out.println( The character is letter +ch); break;/若省
22、去此句,后果如何? default: System.out.println(The character +ch+ is neither a digit nor a letter); ,循环结构,while语句 do-while语句 for语句,While循环,while循环的语法格式为: while(逻辑表达式)语句序列 (其中逻辑表达式不能象C语言那样可用十进制数代替。) 例 3-16 int i=0; While( i3) System.out.println(“Are you finished yet ?”); i+ ; System.out.println(“Finally !”);
23、/输出为: Are you finished yet ? Are you finished yet ? Are you finished yet ? Finally !,do循环,do语句的语法格式为 do statements while (logical expression) Example int i=0; do System.out.println(“Are you finished yet ?”); i+ ;while (i3); System.out.println(“Finally !”); /输出为: Are you finished yet ? Are you finish
24、ed yet ? Are you finished yet ? Finally !,实际上 do statements while (logical expression) 等价于: while (logical expression) statements,do循环,。 1、 for语句 其语法格式为: for(初始语句;逻辑表达式;跌代语句) 语句序列 例3-13 for(int i=0; i3; i+) System.out.println(“Are you finished yet ?”); System.out.println(“Finally !”); /输出为: Are you
25、finished yet ? Are you finished yet ? Are you finished yet ? Finally !,例 for( ; ;) System.out.println(“Always print !”); /等价于: for( ;true ;) System.out.println(“Always print !”); 它们将会不停地执行下去,即死循环。 例3-15 初始语句和跌代语句皆不止一个的情形。 int sumi=0 , sumj=0; for(int i=0, j=0; j10 ; i+, j+) sumi+=i; sumj+=j; ,初始语句、逻
26、辑表达式、跌代语句都可以省略:,特殊的流控制语句。 java语言中无goto 语句,而代之以 break语句和 continue语句。,1、标号 标号可放在for,while或do语句之前,其语法格式为: 标号:语句; 2、break语句 break语句可用在switch ,for,while或do语句之中,其语义是跳过本块中余下的所以语句,转到块尾(循环外)执行其后的语句。 例 for(int i=0;i100;i+) if(i=5)break; System.out.println(“i= ”+i); 实际上只执行了5次(i从0到4),特流控语句,break语句还可和标号结合起来使用,起语
27、法格式为: break 标号; 其语法意义是跳出标号所标记的语句块,继续执行其后的语句。多用于嵌套块中,从内层跳到外层之后去执行。 3、continue 语句。 continue 语句立即结束当次循环而进入下一次循环。 语句continue 标号; 它立即结束标号所标记的那重循环的当次循环而进入下一次循环。多用于多重循环。,public class TestBreak public static void main(String args) int sum = 0; int item = 0; while (item = 6) break; System.out.println(The sum
28、 is + sum); ,public class TestContinue public static void main(String args) int sum = 0; int item = 0; while (item 5) item+; if (item = 2) continue; sum += item; System.out.println(The sum is + sum); ,第4章 方法,方法:是为了完成某个功能组合在一起的一组语句。,创建方法: 修饰符 返回值类型 方法名(形式参数列表) 语句组;(方法体) ,public static int max(int num
29、1, int num2) if (num1 num2) return num1; else return num2; ,例:创建方法,调用方法: 例: int larger=max(3,4); System.out.plintln(“Welcome to java”);,参数传递,C+语言中的方法(函数),通过值传递或引用传递来传递参数。 当采用值传递时,将产生参数值的一个拷贝并把它传递给被调用的方法(函数)。形参的改变不会影响实参。 采用引用传递参数时,形参是实参的引用,被调方法(函数)可通过实参直接访问形参;形参的改变影响实参。,参数传递,与C+不同,Java的参数传递方式就是值传递。 值
30、传递的特点:形参和实参相互独立;参数传递时,实参把值复制给形参;修改形参的值不会影响实参的值。(参数为简单数据类型),public class TestPassByValue public static void main(String args) int num1 = 1; int num2 = 2; System.out.println(Before invoking the swap method, num1 is “ +num1 + and num2 is + num2); swap(num1, num2); System.out.println(After invoking the
31、swap method, num1 is + num1 + and num2 is + num2); ,例:值传递:,static void swap(int n1, int n2) System.out.println( Inside the swap method); System.out.println( Before swapping n1 is + n1 + n2 is + n2); int temp = n1; n1 = n2; n2 = temp; System.out.println( After swapping n1 is + n1+ n2 is + n2); ,方法重载,
32、一个类中可以有多个方法具有相同的名字。 这些方法的参数必须不同,即或者是参数个数不同,或者是参数的类型不同。,public class TestMethodOverloading public static void main(String args) System.out.println(The maximum between 3 and 4 is + max(3, 4); System.out.println(The maximum between 3.0 and 5.4 is + max(3.0, 5.4); System.out.println(The maximum between
33、3.0, 5.4, and 10.14 is “ + max(3.0, 5.4, 10.14); ,例:方法重载,static int max(int num1, int num2) if (num1 num2) return num1; else return num2; static double max(double num1, double num2) if (num1 num2) return num1; else return num2; static double max(double num1, double num2, double num3) return max(max(
34、num1, num2), num3); ,局部变量的作用域,变量作用域:指程序中,一个变量有效的范围。 局部变量的作用域:从变量的定义开始,到包含该变量的程序块结束(函数、复合语句)。 形式参数实际是局部变量,其作用域是整个函数体。,方法抽象,方法就象一个黑盒子,使用者不需了解方法的具体实现,只需知道如何调用方法即可。,数学类Math,ath类是Java系统预定义的类,其中包含了执行基本算术运算所需的方法。如、三角函数方法 public static double sin(double radius) 参数为弧度 public static double cos(double radius)
35、public static double tan(double radius) public static double asin(double radius) public static double acos(double radius) public static double atan(double radius) public static double toRadians(double degree) 角度 转弧度 public static double toDegrees(double radians)弧度转角度,数学类Math,2、指数函数方法 public static d
36、ouble exp(double a) /* 求e的a次方*/ public static double log(double a) /*求ln(a)=loge(a)*/ public static double pow(double a, double b) /*求ab*/ public static double sqrt(double a) /*求 */ 3、取整方法 public static double ceil(double x) /*以double返回向上与x最接近的整数*/ public static double floor(double x) /*以double返回向下与
37、x最接近的整数*/ public static double rint(double x) /*以double返回与x最接近的整数,如果x到 两个整数的距离相等,返回其中的奇数*/ public static int round(float x) /*返回(int)Math.floor(x+0.5) */ public static long round(double x) /*返回(long)Math.floor(x+0.5) */,数学类Math,、min、max和abs方法 min和max是两个重载方法,用来返回两个数(int、 long、float或double型)的最小值和最大值。
38、abs是一个重载方法,用来返回一个数(int、long、 float或double型)的绝对值。 5、random方法 生成大于等于0.0小于1.0的double型随机数。,例.,编写一个随机生成小写字母字符的方法,随机生成100个小写字母字符,并显示它们。 算法思想:随机生成小写字母字符,就是要随机生成小写字母字符的Unicode码值,该值应该大于等于 (int)a,小于等于(int)z,也就是要产生一个大于等于 (int)a并且小于等于(int)z的随机整数。可用下面的表达式产生这个随机整数: a+Math.random()*(z-a+1) 从而生成的随机小写字母是: (char)(a+M
39、ath.random()*(z-a+1),递归方法,递归:一个数学概念,把规模大的、复杂的问题逐步化简为相同类型的小的、简单的问题,直到求得小问题的解,再回推出大问题的解。 递归的步骤:、回朔。(逐步简化问题) 、到达递归终止条件。、递推。(从小问题的解递推出大问题的解) 递归方法:如果一个方法内部直接或间接调用了方法本身,则该方法为递归方法。 实现递归方法的步骤:、分析问题、得到递归定义。、从递归定义直接得到递归方法。,例4.5 计算整数n的阶乘,分析: factorial(n)=n!=n(n-1) (n-2) 1 0!=1 递归定义: factorial(n)= n factorial(n
40、-1) factorial(0)=1 递归方法:public int factorial(int n) if(n=0) return 1; else return factorial(n-1)*n; ,递归方法的调用过程,main方法 调用factorial(4),例4. 汉诺塔问题,递归定义: moveDisks(n, A, C, B)定义为如下3步:(n1) 、moveDisks(n-1, A, B, C) 、将盘子从挪动到 、moveDisks(n-1, B, C, A) 如果n等于1,则将盘子从挪动到 递归方法:public void moveDisks (int n,char a,c
41、har b,char c) if(n=1) System.out.println(a+“move to”+b); else moveDisks(n-1, a, c, b); System.out.println(a+“move to”+b); moveDisks(n-1, c, b, a); ,第5章 数组,数组用于存放一组相同类型的数据。 Java将数组作为对象来处理。,声明和创建数组,第一步、声明数组的引用变量。语法格式如下:,数据类型 数组名;或 数据类型 数组名; 例如: double myList; 或 double myList;,第二步、创建数组。语法格式如下:,数组名=new
42、数据类型数组大小; 例如: myList=new double10;,声明和创建可以合并在一个语句中进行。语法格式如下:,数据类型 数组名=new 数据类型数组大小; 例如: double myList=new double10;,double myList;,myList=new double10;,初始化和使用数组, 数组创建后,它的元素被赋予默认的值: * 数值类型数组:默认值为0; * char类型数组:默认值为u0000; * boolean类型数组:默认值为false; * 对象型数组:默认值为null; 数组元素的个数存放在成员变量 数组名.length 中。 数组元素可通过下标
43、访问,语法为:数组名下标 例如: myList2=20; 使用数组前需要对数组元素赋值。例如: for(int i=0; imyList.length; i+) myListi=i; 可以在创建数组的同时给数组元素赋值,叫做初始化数组。例如: double myList= 1.9, 2.9, 3.4, 3.5 ;,例5.1:读入6个整数,找出其中最大者,并统计它出现的次数。 例5.2:从键盘上输入学生的成绩(int),挑选最好的成绩并根据下表确定分数的等级: 如果分数=最高分数-10, 等级为A; 如果分数=最高分数-20, 等级为B; 如果分数=最高分数-30, 等级为C; 如果分数=最高分
44、数-40, 等级为D; 其他情况等级为E。 程序提示用户输入学生总数,然后输入成绩,最后显示等级。,数组的复制,由于数组是一个对象,所以不能使用赋值运算符将一个数组复制给另一个。例如 若list1和list2是两个同类型的数组,采用赋值运算符“=”复制数组的结果如下:,例:用赋值运算符赋值数组:,public class TestCopyArray public static void main(String args) int list1 = 0, 1, 2, 3, 4 ,5; int list2 = new intlist1.length; list2 = list1; System.ou
45、t.println(Before modifying list1); printList(list1 is , list1); printList(list2 is , list2); for (int i=0; ilist1.length; i+) list1i = 0; System.out.println(nAfter modifying list1); printList(list1 is , list1); printList(list2 is , list2); /end of main,public static void printList(String s, int list
46、) System.out.print(s + ); for (int i=0; ilist.length; i+) System.out.print(listi + ); System.out.print(n); /end of class,运行结果:,复制数组的三种方法,用循环语句复制数组的每个元素。 使用System类中的静态方法arraycopy。 使用Object类的clone方法。,int sourceArray=2,3,1,5,10; int targetArray=new intsourceArray.length; for(int i=0;isourceArray.length
47、;i+) targetArrayi= sourceArrayi;,System.arraycopy(sourceArray, 0, targetArray, 0, sourceArray.length);,targetArray=(int) sourceArray.clone();,例:用clone方法复制数组:,public class TestCopyArray public static void main(String args) int list1 = 0, 1, 2, 3, 4 ,5; int list2 = new intlist1.length; list2 =(int) li
48、st1.clone(); System.out.println(Before modifying list1); printList(list1 is , list1); printList(list2 is , list2); for (int i=0; ilist1.length; i+) list1i = 0; System.out.println(nAfter modifying list1); printList(list1 is , list1); printList(list2 is , list2); /end of main,给方法传递数组参数,Java的参数传递方式:传值传
49、递实参的值复制给型参 对于基本数据类型传递实参的值。 对于数组类型的参数,参数值是数组的引用,给方法传递的是这个引用的值。导致的结果是:实参和型参引用了同一个数组,修改型参数组就是修改实参数组。,public class Test public static void main(String args) int x = 1; int y = new int 1,2,3,4,5; m(x,y); System.out.println(x is + x + y0 is + y0); public static void m(int number, int numbers) number = 100
50、1; numbers0 = 5555; ,给方法传递数组参数,从方法中返回数组,在方法中创建一个数组,并作为方法的返回值返回该数组。 其实是返回数组的引用变量数组在堆中的地址。 例5.4,数组排序, 采用选择排序法。 算法思想:当按升续排序时,先找到n个数中的最大数,放到数组最后,然后在前面的n-1个数中找最大数,并放到前n-1个数的最后,一直这样做,直到找到前2个数中较大的一个并放到数组的第2个位置上。此时数组中的n个数都排好了续。,public class SelectionSort public static void main(String args) double myList =
51、5.0, 4.4, 1.9, 2.9, 3.4, 3.5; System.out.println(My list before sort is: ); printList(myList); selectionSort(myList); System.out.println(); System.out.println(My list after sort is: ); printList(myList); static void printList(double list) /打印数组方法 for (int i=0; ilist.length; i+) System.out.print(list
52、i + ); System.out.println(); ,static void selectionSort(double list) /选择排序方法 double currentMax; int currentMaxIndex; for (int i=list.length-1; i=1; i-) currentMax = listi; currentMaxIndex = i; for (int j=i-1; j=0; j-) if (currentMax listj) currentMax = listj; currentMaxIndex = j; if (currentMaxIndex
53、 != i) listcurrentMaxIndex = listi; listi = currentMax; /end of loop for /end of selectionSort /end of main,数组查找, 在数组中查找特定元素。查找的方法很多, 本节介绍两种方法:,1、线性查找 2、二分查找,线性查找,算法思想:用要查找的关键字和数组中的元素逐个进行比较,直到找到匹配的元素或查找完数组也没有找到。如果查找成功,则返回该数组元素的下标;否则返回-1。,public class LinearSearch public static void main(String args)
54、 int list = new int10; System.out.print(The list is ); for (int i=0; ilist.length; i+) listi = (int)(Math.random()*100); System.out.print(listi+ ); System.out.println(); System.out.print(Enter a key ); int key = MyInput.readInt(); int index = linearSearch(key, list); if (index != -1) System.out.prin
55、tln(The key is found in index +index); else System.out.println(The key is not found in the list); /end of method main,/ The method for finding a key in the list public static int linearSearch(int key, int list) for (int i=0; ilist.length; i+) if (key = listi) return i; return -1; /end of class,多维数组,
56、声明多维数组(创建多维数组引用变量) int matrix; 创建多维数组 matrix = new int55; 以上两步可以合为一步。 int matrix = new int55;,多维数组的长度,对于二维数组matrix,其长度为: matrix.length*matrix0.length 对于三维数组scor,其长度为: scor.length*scor0.length*scor00.length,使用多维数组,例5.5 编写程序给选择题评分。假设有8个学生和10个问题,学生对问题给出的解答存储在二维数组中,每行记录一名学生的解答。正确的答案存储在一个一维数组中,程序给答卷评分并显示
57、结果。,第5章 类和对象,面向过程的高级语言,用更接近于自然语言的单词符号取代助记符。 程序独立于计算机 采用自顶向下的方法分析问题,把复杂的问题分解成小的、简单的问题。 用称为函数或子程序的独立的功能模块解决小的问题,有利于代码重用。 程序由这些功能模块组成。 数据和操作它们的方法(函数)分离。,面向对象的高级语言,通过抽象、封状、继承、多态等技术把数据和操作它们的方法封装在类中,增强了代码重用的功能。 通过访问限制,增加了数据的安全性。 程序模型更接近于现实中的事物。,类与对象,人类认识自然的时候,是先接触个体(对象),然后把相似的个体归纳为类;但人们在设计、生产产品的时候,先是设计一个类,然后生产这个类的个体产品(对象)。发明家发明一种产品,可以说他发明了一个类,工程师设计出一种产品也可以说他设计了一个类。 从这个思想出发,你造出一个饼干模子,可以说你造出了一个类,由这个模子造出饼干,可以说你获得了这个类的一个对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烟草产业园区可行性研究报告
- 2026-2027学年 第二章《有理数及其运算》巩固卷-北师大版数学七上单元测试卷
- 【高二】【数学】【秋季】开学第一课
- 2026动漫面试题及答案
- 2026工作重点面试题目及答案
- 2026管路设计面试题及答案大全
- 2026护士慎独面试题目及答案
- 人工智能在保单自动化处理中的作用
- 人工智能驱动的个性化投资建议
- 光机电一体化公司客户经理述职报告
- JJG 693-2011可燃气体检测报警器
- 领导干部个人有关事项报告制度
- 大连啤酒节策划方案
- 成人高考《专科起点本科》生态学基础复习资料
- TCSAE 261-2022 自主代客泊车 地图与定位技术要求
- 脊髓损伤的治疗及研究进展
- 合成实验室安全培训
- YY/T 1833.1-2022人工智能医疗器械质量要求和评价第1部分:术语
- GB/T 17947-2008拟再循环、再利用或作非放射性废物处置的固体物质的放射性活度测量
- GB/T 16895.15-2002建筑物电气装置第5部分:电气设备的选择和安装第523节:布线系统载流量
- 稠油热采新锐利器-过热锅炉
评论
0/150
提交评论