3.7 Java 的工具类

44
3.7 Java 的的的的

description

3.7 Java 的工具类. 3.7.1 数组. 7.1.1 声明数组 格式:数组元素类型  数组名字 [ ] 数组元素类型 [ ]   数组名字; 二维数组:    数组元素类型  数组名字 [ ][ ] 数组元素类型 [ ][ ]   数组名字;. 例如: float boy[]; double gitl[] char cat[] float a[] double[] b; 也可用定义的类来声明数组: Point line[ ];. 7.1.2 创建数组. 数组声明后,要用 new 运算符为其分配内存空间 分配内存空间时必须指明数组的长度 - PowerPoint PPT Presentation

Transcript of 3.7 Java 的工具类

Page 1: 3.7 Java 的工具类

3.7 Java 的工具类

Page 2: 3.7 Java 的工具类

3.7.1 数组 7.1.1 声明数组 格式:数组元素类型  数组名字 [ ] 数组元素类型 [ ]   数组名字; 二维数组:    数组元素类型  数组名字 [ ][ ] 数组元素类型 [ ][ ]   数组名字;

Page 3: 3.7 Java 的工具类

例如: float boy[]; double gitl[] char cat[] float a[] double[] b; 也可用定义的类来声明数组: Point line[ ];

Page 4: 3.7 Java 的工具类

7.1.2 创建数组 数组声明后,要用 new 运算符为其分配

内存空间 分配内存空间时必须指明数组的长度 格式如下: 数组名字= new  数组元素类型 [ 个数 ] 如: boy=new float[5]; int[] age=new int[10];

Page 5: 3.7 Java 的工具类

声明数组时内存情况: float boy[];

boy 0x785ba

Page 6: 3.7 Java 的工具类

创建数组后,内存情况: boy=new float[5];

boy 0x785ba boy[0] boy[1] boy[2] boy[3] boy[4]

Page 7: 3.7 Java 的工具类

7.1.3 数组元素的使用 数组元素的使用是通过下标实现的 Java 的数组下标由 0 开始 例 :boy[0]=100f; boy[4]=500f; 1 。数组初始化 float boy[ ]={100f,200f,300f,400f,500f}

Page 8: 3.7 Java 的工具类

7.1.3 数组元素的使用 2 。拷贝数组 当把一个数组变量拷贝给另一个变量时,

两个变量都指向相同的数组 Float girl[]=boy;

boy girl

Page 9: 3.7 Java 的工具类

7.1.3 数组元素的使用 如果只是想把一个数组中的值拷贝给另

一个变量,可用 arraycopy 方法。 格式: System.arraycopy( from,fromIndex,to,toIndex,coun

t);

Page 10: 3.7 Java 的工具类

7.1.3 数组元素的使用 例: int small[]={2,3,4,5,6,7}; int big[]={9,8,7,6,5,4,3,2,1}; System.arraycopy(small,1,big,0,3); 输出 big 的值为: 3 , 4 , 5 , 6 , 5 , 4 , 3 , 2 , 1

Page 11: 3.7 Java 的工具类

7.1.3 数组元素的使用 3 。排序 调用 Java.util.Arrays 类中的 sort 方法,

可对一个数组中的数字进行排序 Static void sort( 数组); 例: Array.sort(boy); 实例:模拟抽彩游戏 LotteryDrawing.j

ava

Page 12: 3.7 Java 的工具类

public class LotteryDrawing

{

public static void main(String[] args)

{

String input = JOptionPane.showInputDialog

("How many numbers do you need to draw?");

int k = Integer.parseInt(input);

input = JOptionPane.showInputDialog

("What is the highest number you can draw?");

输入数据

int n = Integer.parseInt(input); 确定为 n 取 K

Page 13: 3.7 Java 的工具类

// numbers 用来存放 1 2 3 . . . n

int[] numbers = new int[n];

for (int i = 0; i < numbers.length; i++)

numbers[i] = i + 1;

// result 用不存放选取出的数

int[] result = new int[k];

for (int i = 0; i < result.length; i++)

{

// 在 0---N-1 之间产生选取出的数

int r = (int)(Math.random() * n);

Page 14: 3.7 Java 的工具类

// 将选出的数放入 result

result[i] = numbers[r];

// move the last element into the random location

numbers[r] = numbers[n - 1];

n--; }

// 将 result 排序输出

Arrays.sort(result);

System.out.println

("Bet the following combination. It'll make you rich!");

for (int i = 0; i < result.length; i++)

System.out.println(result[i]);

System.exit(0); }}

Page 15: 3.7 Java 的工具类

7.1.3 数组元素的使用

4. 命令行参数 每个 Java 应用程序都有一个带 String[] ar

gs 参数的 main 方法。 这个参数用来接收命令行上的参数 例: public class Message { public static void main(String [] args) {

Page 16: 3.7 Java 的工具类

If (args[0].equals(“-h”)) System.out.print(“Hello”); Else if(args[0].equals(“-g”); System.out.print(“goodbye,”); For(int I=1;I<args.length;I++) System.out.print(“ “+args[I]); System.out.println(“!”); } }

Page 17: 3.7 Java 的工具类

如果程序用如下方法调用java Message –g cruel word

则 args 数组内容如下:

程序运行结果: goodbye,cruel world!Args 参数从命令行第三个参数开始取值

Args[0]: “-g”

Args[1]: “Cruel”

Args[2]: “World”

Page 18: 3.7 Java 的工具类

3.7.2  字符串 本节主要内容 创建并使用 String 对象 学习使用 String 类的属性及其文方法 在字符串中查找子字符串 在字符串中提取子字符串 在字符串中替换子字符串

Page 19: 3.7 Java 的工具类

例:屏幕抓取程序--网上商店及汇率转换

Page 20: 3.7 Java 的工具类

3.7.2 字符串 一。声明 Java 基本类型中没有字符串类型 用 String 类来创建一个字符串变量,因

此字符串变量是一个类类型变量,即是一个对象

字符串常量 :“123.45”,“ 你好” ,“hello!”

声明字符串对象: String s;

Page 21: 3.7 Java 的工具类

3.7.2 字符串 二。创建字符串: 可以用 String 类的构造方法:     String( 字符串常量)来构造字

符串 如: s=new String(“I am a

teacher1”);

Page 22: 3.7 Java 的工具类

3.7.2 字符串 三。常用操作 1 。串连接( + ) 例: String s1=“Hello!”; String s2=“World”; String s3=s1+s2;

Page 23: 3.7 Java 的工具类

查看应用程序中的 HTMLprivate String htmlText = "<HTML><BODY><TABLE>" + "<TR><TD>IBM 笔记本电脑 </TD>" + "<TD>&euro;2035.67</TD></TR>" + "<TR><TD>Sony T9 数码相机 </TD>" + "<TD>&euro;641.55</TD></TR>" + “<TR><TD>ARCHOS  爱可视                MP4</TD>" + "<TD>&euro;1201.83</TD></TR>" + "</TABLE></BODY></HTML>";

Page 24: 3.7 Java 的工具类

获取字符串的长度 使用 String 类中的 length() 方法可以

获取一个字符串的长度 String s=“I am a teacher”; String tom=“ 我是老师” int n1,n2; n1=s.length();n2=tom.length(); 则: n1 = 14,n2=4

Page 25: 3.7 Java 的工具类

字符串检索 可以用 String 类中的方法: indexOf(string s) indexOf(String s,int startpoint) 例: String me=“I am a teacher”; tom.indexOf(“a”);// 结果为 2 tom.indexOf(“w”,3);// 结果为 -1

Page 26: 3.7 Java 的工具类

// search for location of item and price String selectedItem = ( String ) itemJComboBox.getSelectedItem();int itemLocation =    htmlText.indexOf( selectedItem );int priceBegin = htmlText.indexOf( "&euro;",            itemLocation );int priceEnd = htmlText.indexOf( "</TD>", priceBegin );

定位所选物品的名称、价格

Page 27: 3.7 Java 的工具类

获得字符串的子串 格式: substring(int startpoint); substring(int start,int end) String jerry="I love tom”; s1=jerry.substring(2); s2=jerry.substring(2,5)

Page 28: 3.7 Java 的工具类

提取价格// store price found in double price String priceText = htmlText.substring( priceBegin + 6, priceEnd );double price =     Double.parseDouble( priceText );

Page 29: 3.7 Java 的工具类

字符串与数值的转化 java.lang 包中的 Integer 类、 Long

类、 Float 类、 Double 类分别提供了相应的方法用来进行字符串与数值间的转换

转化为整形    Integer.parseInt( 字符串) 例: Integer.parseInt(“12345” ) 再如 :long x;String s=“1000”; x= Integer.parseLong(s);

Page 30: 3.7 Java 的工具类

转化为 float 的 double 型 格式: Float.valueOf(String s).floatValue(); Double.valueOf(String s).doubleValue(); 例: float x; double y; String s=“23.45”; x=Float.valueOf(s).floatValue(); y=Double.valueOf(s).doubleValue();

Page 31: 3.7 Java 的工具类

数值转化为字符 使用 String 类中定义的 valueOf()

方法,便可将一个数值 转换为字符串 如: float x=123.45f; String s; s=String.valueOf(x);

Page 32: 3.7 Java 的工具类

// convert price from euros to RMB double conversionRate =          Double.parseDouble(       rateJTextField.getText() ); price *= conversionRate;

转化为人民币

Page 33: 3.7 Java 的工具类

获得对象的字符串表示 所有的类都默认为 java.lang 包中 Object 类

的子类或间接子类 ---- 同族同宗 所有的类都可以享用一些基本功能 Object 类有一个方法: toString(), 可用于获

得对象的字符串表示 例: Button button=new Button(“ 确

定” ); System.out.println(button.tostring()); 例: ScreenScraping.java

Page 34: 3.7 Java 的工具类

练习:

假若 alphabet=“abcdefghijklmnopqrstuvwxyz”

alphabet. subString. (6,10)=ghit

alphabet. subString. (9,16)= 7

alphabet. subString(14,14) 和

alphabet. subString (4, 4) 的结果相同吗?

alphabet. subString. (26,26)会失败,为什么?

Page 35: 3.7 Java 的工具类

7.3 数组列表

数组列表无类型,它可以存放所有 Object 类型从数组列表中取出的数据项,都必须进行造型转换

数组列表是可以动态延伸的类数组对象

ArrayList 类是一个库类,定义在 java.util 包中

Page 36: 3.7 Java 的工具类

一、定义   ArrayList 对象= new ArrayList(); 例: ArrayList staff = new ArrayList

(); API : java.util.ArrayList ArrayList() 构造一个空数组列表 ArrayList(int c) 构造一个具有指定容

     量的空数组列表

Page 37: 3.7 Java 的工具类

二、添加新元素 API : boolean add(Object obj)   把元素 obj 追加到数组列表的结尾 例: staff.add(new employee(…));

使用 trimtosize()后,再增加新元素会重新移动内存

三、统计个数API : int size() 返回数组列表中当前元素个数 例: staff.size();四、调整大小 把数组列表的存贮空间调整到当前大小API : void trimtosize()

Page 38: 3.7 Java 的工具类

五、访问 API : void set(int index,Object obj)    将 obj 放入数组列表 index 位置     Object get(int index)    获得指定位置 index 的元素值 例: Employee harry=new   Employee

(…); staff.set(5,harry); Employee e=(Employee)staff.get(5);

数组列表是无类型的,每次导出对象时,都要作造

型转换

Page 39: 3.7 Java 的工具类

六、增加与删除    boolean add(int n,Object obj) 在第 n 个位置插入 obj Object remove(n); 将第 n 个位置存放的对象删除 例: staff.add(5,harry);

•Employee • e=(Employee)staff.remove(5);•例: ArrayListTest.java

Page 40: 3.7 Java 的工具类

import java.util.*;

public class ArrayListTest

{

public static void main(String[] args)

{

ArrayList staff = new ArrayList();

staff.add(new Employee("Carl Cracker", 75000,

1987, 12, 15));

staff.add(new Employee("Harry Hacker", 50000,

1989, 10, 1));

staff.add(new Employee("Tony Tester", 40000,

1990, 3, 15));

Page 41: 3.7 Java 的工具类

// raise everyone's salary by 5%

for (int i = 0; i < staff.size(); i++)

{ Employee e = (Employee)staff.get(i);

e.raiseSalary(5); }// print out information about all Employee objects

for (int i = 0; i < staff.size(); i++)

{

Employee e = (Employee)staff.get(i);

System.out.println("name=" + e.getName()

+ ",salary=" + e.getSalary()

+ ",hireDay=" + e.getHireDay());

} } }//class ArrayListTest ended

Page 42: 3.7 Java 的工具类

class Employee{ public Employee(String n, double s, int year, int month, int day) { name = n; salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); // GregorianCalendar uses 0 for January hireDay = calendar.getTime(); }

Page 43: 3.7 Java 的工具类

public double getSalary()

{ return salary; }

public String getName()

{ return name; }

public Date getHireDay()

{ return hireDay; }

Page 44: 3.7 Java 的工具类

public void raiseSalary(double byPercent)

{ double raise = salary * byPercent / 100;

salary += raise; }

private String name;

private double salary;

private Date hireDay; }//end of Employee