2018/11/22 Java语言程序设计-字符串 教师:段鹏飞.

Slides:



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

1 第 10 章 字串. 2 字串的產生  其中 StringBuffer 與 StringBuilder 類別會在 10-3 節中介 紹。底下就來看看如何透過前 4 個建構方法產生字串: 這 是 個 測 試 字 串 4ED6 test 4ED6 test[0] test[1] test[2] test[3]
第3-2章 类与 对象 Java类的特性 教学内容: 类的私有成员与公共成员 方法的重载 构造方法 实例成员与静态成员 重点: 重载 难点:
单元二:面向对象程序设计 任务二:借书卡程序设计.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
项目6 通用堆栈.
四資二甲 第三週作業 物件導向程式設計.
第五章 字符串.
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
第二章 JAVA语言基础.
第14章 c++中的代码重用.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
再回首: Java关键字 数据类型:byte boolean char double float int long short ,
第九章 字符串.
Using C++ The Weird Way Something about c++11 & OOP tricks
程式設計實作.
Q1: 追蹤程式: 印出結果? 搶答 while (i<=n) { p=p*i; i=i+2; }
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
第二章 C# 基础知识.
常用工具类.
Java基础 JavaSE异常.
實作輔導 日期: 3/11 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
2018/11/22 Java语言程序设计-程序流程 教师:段鹏飞.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
2018/11/27 Java语言程序设计-程序流程 教师:段鹏飞.
程式設計實作.
2018/11/29 Java语言程序设计-使用对象 教师:段鹏飞.
抽象类 File类 String类 StringBuffer类
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
走进编程 程序的顺序结构(二).
辅导课程六.
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
第二章 Java语言基础.
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
Java程序设计 第8章 字符串和文本I/O.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
實作輔導 2 日期: 3/24(星期六) 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
第二章Java基本程序设计.
第二章 Java基本语法 讲师:复凡.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
$9 泛型基础.
Java變數 2014/6/24.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第4章 Excel电子表格制作软件 4.4 函数(一).
第二章 Java语法基础.
第九节 赋值运算符和赋值表达式.
3.16 枚举算法及其程序实现 ——数组的作用.
Review 1~3.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
辅导课程十五.
龍老師我不會Debug QQ.
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二章 Java基本语法 讲师:复凡.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
變數、資料型態、運算子.
第2章 Java语言基础.
迴圈(重複性結構) for while do while.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
Presentation transcript:

2018/11/22 Java语言程序设计-字符串 教师:段鹏飞

int[][] arr 或 int arr[][]; 1.1 创建和使用数组 声明数组 (1)声明一维数组的格式: 数组元素的类型[ ] 数组的名字; int[] arr 或 int arr[]; (2)声明二维数组的格式: 数组元素的类型[ ][ ] 数组的名字; int[][] arr 或 int arr[][];

返回出现第一个匹配的位置, 如果没有找到字符或字符串,则返回-1 3.4 字符串常用提取方法 0 1 2 3 位置 青 春 无 悔 常用提取方法举例 返回出现第一个匹配的位置, 如果没有找到字符或字符串,则返回-1 方法 说明 public int indexOf(int ch) 搜索第一个出现的字符ch(或字符串value) public int indexOf(String value) public int lastIndexOf(int ch) 搜索最后一个出现的字符ch(或字符串value) public int lastIndexOf(String value)

3.4 字符串常用提取方法 方法 说明 public String substring(int index) 提取从位置索引开始的字符串部分 public String substring(int beginindex, int endindex) 提取beginindex和endindex之间的字符串部分 public String trim() 返回一个前后不含任何空格的调用字符串的副本 beginindex: 字符串的位置从0开始算;endindex: 字符串的位置从1开始算

如果要打印输出“小鱼儿”,应填入的代码是什么? 3.4 小结 如果要打印输出“小鱼儿”,应填入的代码是什么? String word = "Hello, "; word = word.trim(); String s = word.concat("小鱼儿!"); int index1 = s.indexOf(','); int index2 = s.indexOf('!'); System.out.println(s.substring(______, _______)); 顺便讲一下trim() index1+1 index2

3.4 字符串常用提取方法 作业提交系统 //检查Java文件名 //检查你的邮箱格式 int index = fileName.lastIndexOf("."); if(index!=-1 && index!=0 && fileName.substring(index+1, fileName.length()).equals("java")){ fileCorrect = true; }else{ System.out.println("文件名无效。"); } //检查你的邮箱格式 if (email.indexOf('@') !=- 1 && email.indexOf('.') > email.indexOf('@')){ emailCorrect = true; }else{ System.out.println("Email无效。"); }

使用java.lang包中的Byte、Short、Integer 、 Long、Float、Double类调相应的类方法: 3.5 字符串与基本数据的相互转化 使用java.lang包中的Byte、Short、Integer 、 Long、Float、Double类调相应的类方法: public static byte parseByte(String s) throws NumberFormatException public static short parseShort(String s) throws NumberFormatException public static short parseInt(String s) throws NumberFormatException public static long parseLong(String s) throws NumberFormatException public static float parseFloat(String s) throws NumberFormatException public static double parseDouble(String s) throws NumberFormatException 可以将“数字”格式的字符串,转化为相应的基本数据类型。

Public static String valueOf(int n) 3.5 字符串与基本数据的相互转化 数字转换为字符串 Public static String valueOf(int n) Public static String valueOf(float n) 例如: String str=String.valueOf(123.56)

3.5 字符串与字符、字节数组 public void getChars(int start,int end,char c[],int offset ) 字符串调用getChars方法将当前字符串中的一部分字符拷贝到参数c指定的数组中。将字符串中从位置start到end-1位置上的字符拷贝的数组c中,并从数组c的offset处开始存放这些字符。需要注意的是,必须保证数组c能容纳下要被拷贝的字符。 public char[] toCharArray() 字符串对象调用该方法可以初始化一个字符数组,该数组的长度与字符串的长度相等,并将字符串对象的全部字符拷贝到该数组中。

public byte[] getBytes() 使用平台默认的字符编码,将当前字符串转化为一个字节数组。 String(byte[],int offset,int length) 该构造方法使用平台默认的字符编码,用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。 public byte[] getBytes() 使用平台默认的字符编码,将当前字符串转化为一个字节数组。

3.5 例子 public class Test10 { public static void main(String args[]) { byte d[]="你我他".getBytes(); System.out.println("数组d的长度是(一个汉字占两个字节):"+d.length+"个字节"); String s=new String(d,0,2); System.out.println(s); }

StringBuffer:String增强版 StringBuffer声明 创建空字符串 StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer("aaa"); 创建一个变量存储字符串aaa sb.toString(); //转化为String类型 sb.append("**"); //追加字符串

定义StringBuffer的实例,存储课程字符串 循环追加字符,使用StringBuffer,效率高! 从控制台接收课程信息,不断累加直到输入“#”键结束,并输出全部课程信息 //声明课程信息字符串 StringBuffer course = new StringBuffer(); System.out.println("请输入S1课程信息: "); Scanner sc = new Scanner(System.in); //循环从键盘接收字符串 String input; while(!(input = sc.next()).equals("#")){ course.append(input); course.append("\n"); } System.out.println("s1的课程信息是:" + course); 定义StringBuffer的实例,存储课程字符串 循环追加字符,使用StringBuffer,效率高!

2018/11/22 Java语言程序设计-使用对象 教师:段鹏飞

如何定义类 定义一个类的步骤 1、定义类名 2、编写类的属性 3、编写类的方法

类将现实世界中的概念模拟到计算机程序中 Java类模板 public class 类名 { //定义属性部分 属性1的类型 属性1; 属性2的类型 属性2; … 属性n的类型 属性n; //定义方法部分 方法1; 方法2; 方法m; }

定义类 编写学生类,输出学生相关信息 学生类 姓名 年龄 班级 爱好 显示学员个人信息

定义类 public class Student { 成员变量 String name; //姓名 int age; //年龄 String classNo; //班级 String hobby; //爱好 //输出信息方法 public void show(){ System.out.println(name + "\n年龄:" + age + "\n就读于:" + classNo + "\n爱好:" + hobby); } 成员变量 成员方法

使用对象的步骤: 创建对象 引用对象成员:使用“.”进行以下操作 如何创建和使用对象 类名 对象名 = new 类名(); 引用类的属性:对象名.属性 引用类的方法:对象名.方法名() Student student = new Student(); student.name = "张浩"; //给name属性赋值 student.show(); //调用show()方法

创建和使用对象 创建“张浩”对象 public class InitialStudent { 创建对象 public static void main(String args[]){ Student student = new Student(); student.name = "张浩"; student.age = 10; student.classNo = "S1班"; student.hobby = "篮球"; student.show(); } 创建对象 给每个属性赋值 调用方法

类的方法定义类的某种行为(或功能) 如何定义类的方法 定义类的方法 方法的名称 方法的定义 方法返回的数据类型 方法的主体 步骤一:定义方法名以及返回值 定义类的方法 public 返回值类型 方法名() { //这里编写方法的主体 } 步骤二:编写方法体

两种情况 方法的返回值 如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型 如果方法没有返回值,返回类型为void 作用: 跳出方法 给出结果 return 表达式; public class Student{ String name = "张三"; public void getName(){ return name; } …… 编译错误 返回类型要匹配

方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果 方法调用 方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果 方法调用:执行方法中包含的语句 对象名.方法名();

小明过生日,爸爸送他一个电动狮子玩具,编程测试这个狮子能否正常工作 方法调用 按此按钮, 狮子开始跑 电动玩具狮子 属性: 颜色:黄色 行为: 跑 叫 按此按钮, 狮子开始叫 只须按动按钮,不需要知道这个玩具到底如何使lion跑或是跳的 按动按钮就是方法调用 小明过生日,爸爸送他一个电动狮子玩具,编程测试这个狮子能否正常工作

方法调用 public class AutoLion { String color = "黄色"; //颜色 /*跑*/ public void run(){ System.out.println("正在以0.1米/秒的速度向前奔跑。"); } /*叫*/ public String bark(){ String sound = "大声吼叫" ; return sound; /*获得颜色*/ public String getColor(){ return color; /*显示狮子特性*/ public String showLion(){ return "这是一个" + getColor() + "的玩具狮子!"; public class TestLion { public static void main(String[ ] args) { AutoLion lion = new AutoLion(); System.out.println(lion.showLion()); lion.run(); System.out.println(lion.bark()); } 在main()方法中 调用类的方法 提问会输出什么结果? 程序执行时各语句的执行顺序是什么?使用断点调试的方法进行 在类的方法中调用 该类另一个方法

方法之间允许相互调用,不需要知道方法的具体实现,提高了效率 方法调用小结 方法之间允许相互调用,不需要知道方法的具体实现,提高了效率 情 况 举 例 Student类的方法a( )调用Student类的方法b( ),直接调用 public void a( ){ b( ); //调用b( ) } Student类的方法a( )调用Teacher类的方法b( ),先创建类对象,然后使用“.”调用 Teacher t = new Teacher( ); t.b( ); //调用Teacher类的b()

常见错误4-1 public class Student{ public void showInfo(){ return "我是一名学生"; } 在Eclipse环境中讲解常见错误 方法的返回类型为void,方法中不能有return返回值!

常见错误4-2 public class Student{ public double getInfo(){ double weight = 95.5; double height = 1.69; return weight, height; } 方法不能返回多个值!

常见错误4-3 public class Student{ public class Student{ public String showInfo(){ return "我是一名学生"; } public double getInfo(){ double weight = 95.5; double height = 1.69; return weight; public class Student{ public String showInfo(){ return "我是一名学生"; public double getInfo(){ double weight = 95.5; double height = 1.69; return weight; } 多个方法不能相互嵌套定义!

常见错误4-4 public class Student{ int age=20; if(age<20){ System.out.println("年龄不符合入学要求!"); } public void showInfo(){ return "我是一名学生"; 不能在方法外部直接写程序逻辑代码!

为什么要用带参数的方法 工作原理 新鲜梨汁 新鲜苹果汁 新鲜桃汁 输出三种果汁

定义带参数的方法 调用带参数的方法 如何使用带参数的方法3-1 public class Zhazhi{ public String zhazhi ( String fruit ) { String juice = fruit + "汁"; return juice; } 参数列表: (数据类型 参数1,数据类型 参数2…) /*调用zhazhi方法*/ Zhazhi myZhazhi = new Zhazhi(); String myFruit = "苹果"; String myJuice = myZhazhi.zhazhi(myFruit); System.out.println(myJuice); 调用方法,传递的参数要与参数列表一一对应

如何使用带参数的方法3-2 传送给方法的形参列表 public 返回值类型 方法名(形式参数列表){ //方法的主体 } 方法返回值的类型 public class CustomerBiz { String[ ] names = new String[30]; public void addName(String name){ //增加客户姓名 } public void showNames (){ //显示全部客户姓名 没有返回值 一个形式参数

调用带参数的方法 如何使用带参数的方法3-3 实参列表 对象名.方法名(实参1, 实参2,……,实参n) 先实例化对象, public static void main(String[] args) { CustomerBiz st = new CustomerBiz(); Scanner input = new Scanner(System.in); for(int i=0;i<5;i++){ System.out.print(“请输入客户的姓名:"); String newName = input.next(); st.addName(newName); } st.showNames(); 先实例化对象, 再使用方法 实参的类型、数量、顺序 都要与形参一一对应

常见错误4-1 //方法定义 public boolean searchName(int start ,int end ,String name){ //方法体 } //方法调用 String s="开始"; int e=3; String name="张三"; boolean flag=对象名. searchName(s ,e ,name); 形参和实参数据类型不一致!

常见错误4-2 //方法定义 public boolean searchName(int start,int end,String name){ //方法体 } //方法调用 int s=1; int e=3; boolean flag= 对象名.searchName(s,e); 形参和实参数量不一致!

常见错误4-3 //方法定义 public boolean searchName(int start,int end,String name){ //方法体 } //方法调用 int s=1; int e=3; String name="张三"; 对象名.searchName(s,e,name); 调用方法后没有对返回值作任何处理!

巩固练习 1.在以下Java程序类中,语法正确的是()。 A) public int ufTest(int num) int sum=num+100; return sum; } B) public String ufTest(int num) C) public void ufTest(int num) D) public int ufTest(int num)

巩固练习 2.如果编写一个main()方法调用HelloAccp类的show()方法, 其运行结果是()。 public class HelloAccp{ int a=100,b=50; public void avg(){ float c=(a+b)/2; } public void show(){ System.out.println("平均值为:“ + c); A)存在错误,提示:无法解析c B)平均值为:75 C)平均值为:75.0 D)存在错误,提示:无法将数据类型int转换为float

巩固练习 1.在Java中,类Test的源代码如下所示,改程序的编译运行结果是()。 public class Test(){ public int add(int a,intb){ return a+b; } public int length(inta,int b){ return add(a,b)*2; public static void main(String[] args){ Test test=new Test(); System.out.println("结果为:“ + test.length(10,20)); A)第6行出现编译错误,提示无法找到add方法 B)第10行出现编译错误,提示无法将int类型自动转换成String类型 C)输出:结果为:60 D)输出:结果为:null

用面向对象的思想完成各种形状面积计算的功能 用String函数完成网址提取的功能 计算器 网络爬虫 实验任务 完成前三个实验,后面的两个实验选作 创建一个管理员的类 用面向对象的思想完成各种形状面积计算的功能 用String函数完成网址提取的功能 计算器 网络爬虫

需求说明: 1、管理员类 编写管理员类 属性:姓名、密码 方法:show(),显示管理员信息 创建两个管理员对象,给两个对象赋值并调用方法输出他们的相关信息

2、计算各种形状的面积 需求说明: 根据用户的选择计算矩形、圆形或三角形的面积 利用面向对象的编程思想

1、实现在给定字符里提取网址,如Test1; 输入: 2018/11/22 3、网址提取 1、实现在给定字符里提取网址,如Test1; 输入: <html><body><a href="http://www.baidu.com">百度</a>,<a href='http://www.163.com' target='_blank'>网易</a></body></html> (注意:该输入可以直接在程序里定义为字符串常量) 输出: http://www.baidu.com http://www.163.com 这个实验同学们做完后将java源代码发送至邮箱:duanpf@whut.edu.cn

需求说明: 实现思路: 用面向对象的思想编写一个计算器类,实现两个整数的加、减、乘、除运算。 计算:“3+(5*6-4)” 4、计算器 需求说明: 用面向对象的思想编写一个计算器类,实现两个整数的加、减、乘、除运算。 计算:“3+(5*6-4)” 实现思路: 1、创建类 Calculator (1) 定义成员变量运算数1(num1)和运算数2(num2) (2) 实施成员方法“加”(add)、“减”(minus)、“乘”(multiple)、“除”(divide) 2、编写测试类TestCalc进行验证

5、网络爬虫 利用学过的String和正则实现网络爬虫。

2018/11/22 谢谢