第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.

Slides:



Advertisements
Similar presentations
主要内容 Java 的常用包 Java 的常用包 “ == ” 和 “ equals ” 的用法 “ == ” 和 “ equals ” 的用法 基本数据类型与引用类型 基本数据类型与引用类型 String 和 StringBuffer String 和 StringBuffer 对象的克隆( clone.
Advertisements

软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
多元評量與 Greenfoot 簡介 南港高中高慧君. 演講大綱 多元評量 高中階段程式設計教學目標與困境 Greenfoot 快速入門 – 袋熊吃樹葉 – 沙灘螃蟹 Greenfoot 臺灣社群介紹 2.
单元二:面向对象程序设计 任务二:借书卡程序设计.
第四章 类、对象和接口.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
项目6 通用堆栈.
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
Java程序设计教程 第一讲 Java概述.
四資二甲 第三週作業 物件導向程式設計.
C#程序设计案例教程 第3章 程 序 结 构.
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
第二章 JAVA语言基础.
第三章 控制结构.
程設一.
程式設計實作.
Q1: 追蹤程式: 印出結果? 搶答 while (i<=n) { p=p*i; i=i+2; }
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
控制流程 邏輯判斷 迴圈控制.
物件導向程式設計 (Object-Oriented rogramming)
第二章 C# 基础知识.
第四章 在 C# 中实现 OOP 概念.
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
2018/11/22 Java语言程序设计-程序流程 教师:段鹏飞.
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
第 7 章 陣列 (Array).
2018/11/27 Java语言程序设计-程序流程 教师:段鹏飞.
程式設計實作.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
程式撰寫流程.
Java语言程序设计 第五部分 Java异常处理.
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
2019/1/16 Java语言程序设计-类与对象 教师:段鹏飞.
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
Java程序设计 第2章 基本数据类型及操作.
第5讲 使用类和对象编程(三) 内部类 实例 程序控制结构 选择语句.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
第三章 C# 基础知识.
辅导课程八.
實作輔導 2 日期: 3/24(星期六) 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
第二章Java基本程序设计.
第三课 标识符、关键字、数据类型.
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
Review 1~3.
龍老師我不會Debug QQ.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
迴圈(重複性結構) for while do while.
判斷(選擇性敘述) if if else else if 條件運算子.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
Summary
Presentation transcript:

第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch ②循环 for,while,do……while

第3章 方法与数组 3.1 方法 1.定义 2.格式 3.调用 4.return语句 5.方法重载 6.递归调用 3.2 数组 1.一维数组 ⑴创建数组 ⑵访问数组元素 ⑶数组长度 ⑷数组初始化 2.一维数组应用 3.二维数组

main()执行后,可以完成判断一个给定的整数是奇数 还是偶数的功能。 public class Demo02 { public static void main(String[] args) { int x = 3; if (x % 2 == 0) { System.out.println(x + "是偶数") ; } else { System.out.println(x + "是奇数") ; } main()执行后,可以完成判断一个给定的整数是奇数 还是偶数的功能。

方法 定义:方法就是一段用来完成特定功能,可重复使用的代码段。类似其他语言中的函数。 格式: [修饰符] 返回值类型 方法名(形式参数列表) { 方法体 } public class HelloWorld { public static void main(String[ ] args) { System.out.println("Hello World!"); }

方法里的概念 [修饰符] 返回值类型 方法名(形式参数列表){ 语句;…… } 形式参数:方法被调用时,用于接收外界输入的数据 实参:调用方法时,实际传给被调用的方法的数据。 返回值:被调的方法执行完后,返还给调用处的数据 返回值类型:事先约定的返还值类型。无返回值void 方法命名规范要求 第1个单词的首字母小写,之后每个单词的首字母大写如:printInfo()

方法调用 调用方法格式:对象名.方法名(实参列表) 要求:实参的数目、数据类型和次序必须与所调用的方法的形参列表相匹配。 传递原则:传递参数时遵循值传递原则。 ①基本数据类型传递的是值的本身。 ②引用数据类型传递的是对象的引用,而不是 对象本身。 return语句:①终止方法运行,返回该调用处 ②同时也可返回结果 TestMethod.java

方法重载 方法重载就是方法名称相同,但参数的类型和参数的个数不同。 作用:在一个类里,解决方法同名问题。 例:MethodDemo02.java 通过传递参数的类型及个数不同,编译器可以自动完成不同功能的方法调用。 注意:方法的重载跟返回类型没关。

递归调用 递归调用就是在一个方法的内部对方法的自身进行的调用。 注意:递归调用在操作时如果处理不好,有可能出现内存的溢出,所以谨慎使用。

//求5! public class MethodDemo03 { public static void main(String[] args) { System.out.println( method(5) ); } public static int method( int n ) { if (n == 1) { return 1; } else { return n * method(n-1) ;

返回值 method( 3 ) return 3*2*1; method( 2 ) return 2*1; …… method( 3 ) if (n == 1) return 1; else return 3*method(2) ; return 2*method(1) ; public static int method( int n ) { if (n == 1) { return 1; } else { return n * method(n-1) ; } 返回值 method( 3 ) return 3*2*1; method( 2 ) return 2*1; method( 1 ) return 1;

main method(5) method(4) method(1) method(3) method(2)

一维数组 数组用来存放一组相同数据类型的数据的集合 Java中的数组属于引用数据类型。 定义数组必须经过两个步骤: (1) 声明数组 数据类型[ ] 数组名 = null; (2) 分配内存空间给数组 数组名 = new 数据类型[长度]; int[] a; float b[]; char[] c; double[] d; boolean e[]; long f[];

声明数组 int[] score = null; 内存情况 声明数组 int[] score = null; heap(堆) stack(栈) data segment code segment new出来的东西 局部变量 静态变量 字符串常量 存放代码 说明:声明数组后,编译器仅会在栈内存中分配一块内存空间存此数组的名字,score还没有指向具体的空间,所以无法使用。

内存情况 (2)为数组开辟空间 score = new int[3]; 创建数组之后,编译器会在栈内存放数组名,在堆内存放的数组元素。 引用实质就是指向,有指针的含义。 栈内存放的东西实质是数组元素的首地址。 new关键字作用:命令编译器根据括号里的长度在堆内存中开辟一块内存给该数组使用。

一维数组 访问数组中某元素的方法格式:数组名[下标] 求数组长度: 数组名.length 注意:⑴数组被创建后,其大小不能被改变,但数组中的各个数组元素的值是可以被改变的。 ⑵访问数组中的元素时,下标索引不能越界, 范围必须在0 ~ length-1 例: int[] score = new int[10] ; score[0](第1个元素) score[1] score[9](最后一个元素)

数组初始化 ①静态初始化:在声明的同时指定具体内容 int[] a = { 52, 63, 85, 98, 14, 88 } ; ②动态初始化:将数组的定义和数组的初始 化分开来进行。 例1: int[] array = new int[2] ; array[0]=1; array[1]=2; 例2: int[] array=new int[10]; for(int i=0;i<10;i++){ array[i]=i+2; }

数组应用:为数组中的元素赋值并输出 public class ArrayDemo01 { public static void main(String[] args) { int score[] = new int[3]; for (int i = 0; i < score.length; i ++) { score[i] = 2*i+1; } for (int i = 0; i < score.length ; i ++){ System.out.println("score["+i+"]="+score[i]);

数组应用:求数组中元素的最大、小值 int a[] = {10, 3, -1, 119, -51, 100, 56, 90}; 思路分析 1.静态初始化数组 2.定义2个整型变量max和min,存放最值 3.比较⑴将第1个元素分别赋给max和min ⑵逐一比较(for语句、if语句) ⑶循环次数用 数组.length 来求 4.打印输出 min 10 3 -1 119 -51 100 56 90 max

public class ArrayDemo02{ public static void main(String[] args) { int a[] = {10, 3, -1, 119, -51, 100, 56, 90}; int max = a[0]; int min = a[0]; for (int i = 1; i < a.length; i ++) { if ( a[i] > max ) { max = a[i]; } if ( a[i] < min ) { min = a[i]; System.out.println("MXA="+ max); System.out.println("MIN=" + min);

数组应用:使用循环语句进行数组复制 public class ArrayCopyFor { public static void main(String[] args) { int[] a1 = {1, 2, 3, 4, 5}; int[] a2 = new int[ a1.length ] ; for (int i = 0; i < a1.length; i ++){ //复制 a2[i]=a1[i]; } for (int i = 0; i < a2.length; i ++){ //输出 System.out.println(a2[i]);

使用System.arraycopy()复制数组 System.arraycopy( from, fromIndex, to, toIndex, count) public class ArrayCopy{ public static void main(String[] args) { int[] a1 = {1,2,3,4,5}; int[] a2 = new int[a1.length]; //复制 System.arraycopy(a1, 0, a2, 0, a1.length); //输出 for(int i=0;i<a2.length;i++){ System.out.println(a2[i]); } ArrayCopy01.java

方法调用 传递参数原则: ①基本数据类型传递的是值的本身。 ②引用数据类型传递的是对象的引用,不是对象本身. public class MethodDemo01 { public static void main(String args[]) { int one = addOne(29, 58) ; //调用addOne()方法 } public static int addOne(int x, int y){ //定义方法 int temp = 0; temp = x + y; return temp; //返回计算结果

数组的引用传递 向方法中传递数组. //读程序,写结果 public class ArrayRefDemo01 { 数组的引用传递 向方法中传递数组. //读程序,写结果 public class ArrayRefDemo01 { public static void main(String args[]) { int temp[] = {1, 3, 5}; //静态初始化 fun (temp) ; //传递数组 for (int i=0; i<temp.length; i++){ System.out.println(temp[i]); } public static void fun (int[] x) { //接收数组 x[0] = 6; 分析内存情况

数组应用:排序 (从小到大) 算法就是在有限的步骤内求解某一个问题所使用的一组定义明确的规则。 算法的好坏直接影响程序的运行效率。 int[] arr={16, 5, 8, 2, -6, 0, 10}; 算法就是在有限的步骤内求解某一个问题所使用的一组定义明确的规则。 算法的好坏直接影响程序的运行效率。 排序算法:选择、冒泡、希尔、快速、…… 思路: 例:SelectionSort.java 例:BubbleSort.java

a0 a1 a2 a3 a4 a5 a6 16 5 8 2 -6 10 外层 内层 比较 交换 i = 0 j = 1 a1 < a0 10 外层 内层 比较 交换 i = 0 j = 1 a1 < a0  j = 2 a2 < a0 ⅹ j = 3 a3 < a0 j = 4 a4 < a0 j = 5 a5 < a0 j = 6 a6 < a0 i = 1 a2 < a1 5 16 8 2 -6 10 2 16 8 5 -6 10 -6 16 8 5 2 10 外层循环1次,就能选出一 个最小的数放在最前面。 -6 8 16 5 2 10 SelectionSortPrint.java

a0 a1 a2 a3 a4 a5 a6 16 5 8 2 -6 10 外层 内层 比较 交换 i = 0 j = 0 a0 > a1 10 外层 内层 比较 交换 i = 0 j = 0 a0 > a1  j = 1 a1 > a2 j = 2 a2 > a3 j = 3 a3 > a4 j = 4 a4 > a5 j = 5 a5 > a6 i = 1 ⅹ 5 16 8 2 -6 10 5 8 16 2 -6 10 5 8 2 16 -6 10 5 8 2 -6 16 10 5 8 2 -6 16 10 5 8 2 -6 10 16 外层循环1次,将最大的数放到了最后 5 8 2 -6 10 16

数组排序:直接使用Java类库中的方法 import java.util.Arrays ; public class ArraySort { public static void main(String[] args) { int[] a = { 16, 5, 8, 92, -66, 0, 100, 45}; Arrays.sort(a); //排序 for(int i=0;i<a.length;i++){ //打印 System.out.print(a[i]+","); }

二维数组 格式: 例: int[][] a = new int[3][4]; 初始化:动态、静态。 1 2 3 10 -1 119 -51 100 56 90 49

int[][] a={{10,3},{-1,119,-51},{100,56,90,49}}; heap 10 3 -1 119 -51 stack a[0] a[1] a[2] 100 56 90 49 a

//二维数组静态初始化 public class Array2DDemo { public static void main(String[] args) { int[][] a = {{10,3},{-1,119,-51},{100,56,90,49}}; for (int i = 0; i < a.length; i ++) { for(int j = 0; j < a[i].length; j ++){ System.out.print(a[i][j]+"\t"); } System.out.println("");

使用数组结构实现杨辉三角的存储和打印 分析: 杨辉三角的规律是:它的一条斜边和一条垂直边是由数字1组成,其余的数字等于它上方和左上方的两个数之和。 假设元素为整型。

public class YangHuiTriangle { public static void main(String[] args){ int row = 10; //行数 int[][] array = new int[row][]; //二维数组存储三角数字 for (int i = 0; i < row; i ++){ //初始化三角 array[i] = new int[i + 1]; array[i][0] = 1; //两条边为1 array[i][i] = 1; } for(int i = 2; i < row; i ++){ //其它位置的数 for(int j = 1; j < i; j ++){ array[i][j] = array[i - 1][j - 1] + array[i - 1][j]; for(int i = 0; i < row; i ++){ //打印杨辉三角 for(int j = 0; j <= i; j ++){ System.out.print(array[i][j]+"\t"); System.out.println("");

数据输入 Java提供专门输入数据类Scanner,在java.util包中 //接收String类的数据 import java.util.*; public class ScannerStringDemo { public static void main(String[] args) { //从键盘输入数据 Scanner scan = new Scanner(System.in); System.out.println("请输入数据"); String str = scan.next(); System.out.println("输入的数据是:" + str); }

数据输入 Java提供专门输入数据类Scanner,在java.util包中 //接收整型类的数据 import java.util.*; public class ScannerStringDemo { public static void main(String[] args) { //从键盘输入数据 Scanner scan = new Scanner(System.in); System.out.println("请输入数据"); int i = scan.nextInt(); System.out.println("输入的数据是:" + i); }

数据输入 Java提供专门输入数据类Scanner,在java.util包中 //接收浮点型类的数据 import java.util.*; public class ScannerStringDemo { public static void main(String[] args) { //从键盘输入数据 Scanner scan = new Scanner(System.in); System.out.println("请输入数据"); float f = scan.nextFloat(); System.out.println("输入的数据是:" + f); }