Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "2018/11/29 Java语言程序设计-使用对象 教师:段鹏飞."— Presentation transcript:

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

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

3 返回出现第一个匹配的位置, 如果没有找到字符或字符串,则返回-1
3.4 字符串常用提取方法 位置 常用提取方法举例 返回出现第一个匹配的位置, 如果没有找到字符或字符串,则返回-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)

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

5 如果要打印输出“小鱼儿”,应填入的代码是什么?
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

6 replace(): 类似word的查找替换功能 split():
String replace(): 类似word的查找替换功能 split():

7 使用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 可以将“数字”格式的字符串,转化为相应的基本数据类型。

8 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)

9 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() 字符串对象调用该方法可以初始化一个字符数组,该数组的长度与字符串的长度相等,并将字符串对象的全部字符拷贝到该数组中。

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

11 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); }

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

13 定义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,效率高!

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

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

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

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

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

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

20 创建和使用对象 创建“张浩”对象 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(); } 创建对象 给每个属性赋值 调用方法

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

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

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

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

25 方法调用 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()方法中 调用类的方法 提问会输出什么结果? 程序执行时各语句的执行顺序是什么?使用断点调试的方法进行 在类的方法中调用 该类另一个方法

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

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

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

29 常见错误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; } 多个方法不能相互嵌套定义!

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

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

32 定义带参数的方法 调用带参数的方法 如何使用带参数的方法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); 调用方法,传递的参数要与参数列表一一对应

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

34 调用带参数的方法 如何使用带参数的方法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(); 先实例化对象, 再使用方法 实参的类型、数量、顺序 都要与形参一一对应

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

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

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

38 巩固练习 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)

39 巩固练习 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

40 巩固练习 1.在Java中,类Test的源代码如下所示,改程序的编译运行结果是()。 public class Test(){ public int add(int a,intb){ return a+b; } public int length(int a,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

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

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

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

44 1、实现在给定字符里提取网址,如Test1; 输入:
2018/11/29 3、网址提取 1、实现在给定字符里提取网址,如Test1; 输入: <html><body><a href=" href=' target='_blank'>网易</a></body></html> (注意:该输入可以直接在程序里定义为字符串常量) 输出:

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

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

47 2018/11/29 Java语言程序设计-正则表达式 教师:段鹏飞

48 为什么要用正则表达式 我们在电脑中搜索一个文件,一般搜索文件名:java.ppt 如果要查找所有的ppt呢? *.ppt

49 关于正则表达式 条条大道通罗马 正则测试网址

50 正则表达式基础知识 我们先从简单的开始。假设你要搜索一个包含字符“cat”的字符串,搜索用的正则表达式就是“cat”。如果搜索对大小写不敏感,单词“catalog”、“Catherine”、“sophisticated”都可以匹配。也就是说:

51 1.1 句点符号 假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。 可以使用一个通配符——句点符号“.”。这样,完整的表达式就是“t.n”,它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”。

52 1.2 方括号符号 “.” 搜索的内容太多了,可以在方括号 “[]” 里面指定看来有意义的字符。只有方括号里面指定的字符才参与匹配。也就是说,正则表达式“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”。但“toon”不匹配,因为在方括号之内你只能匹配单个字符:

53 1.3 “或”符号 如果想要匹配“toon”,那么,你可以使用“|”操作符。 “|”操作符的基本意义就是“或”运算。要匹配“toon” ,使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号“()”。

54 1.4 表示匹配次数的符号 如何用“[]”来表示“toon” t[o]+n

55 1.4 表示匹配次数的符号 假设我们要在文本文件中搜索美国的社会安全号码。这个号码的格式是 ,如何表示? (“-”)有着特殊的意义,它表示一个范围,比如从0到9

56 1.5 “否”符号 “^”符号称为“否”符号。如果用在方括号内, “^”表示不想要匹配的字符。例如,图四的正则表达式匹配所有单词,但以“X”字母开头的单词除外。

57 1.6 其它符号 [A-Za-z0-9] [^A-Za-z0-9]

58 示例 非负整数:[1-9]\d*|0 正整数:[1-9]\d* 英文字符串:[A-Za-z]+ 地址:

59 程序 String ; String String if(str1.matches(regex)) { System.out.println(str1+"是一个 地址"); }else { System.out.println(str1+"不是一个 地址"); } if(str2.matches(regex)) System.out.println(str2+"是一个 地址"); System.out.println(str2+"不是一个 地址");

60 2018/11/29 谢谢


Download ppt "2018/11/29 Java语言程序设计-使用对象 教师:段鹏飞."

Similar presentations


Ads by Google