java程序设计课件_java程序设计课件

93ab52f2d6c7fd07233e648db3102cd8.png

PPT内容

这是java程序设计课件,关于常用系统类,包括了语言基础类,字符串,Vector类,Collection API简介,日期和时间等内容,欢迎点击下载。

第5章 常用系统类

5.1  语言基础类

5.2  字符串

5.3  Vector类

5.4  Collection API简介

5.5  日期和时间

5.1 语言基础类

5.1.1 Object类

5.1.2 Math类

5.1.3 数据类型包装类

5.1.1 Object类

Object类是所有Java类的最终祖先

5.1.2 Math类

1)常量

Math.PI代表数学上的π

Math.E代表数学上的e

例5-1 利用随机函数产生20个整数给一个一维数组赋值,输出该数组的所有元素,每行4个,找出其中的素数,并输出对应的元素位置

public class pickPrime {

public static void main(String args[])  {

int a[]=new int[20];

for (int i=0;i<20;i++) {

a[i] = (int)(Math.random()*1000); }

for (int i=0;i<20;i++) {

System.out.print("  "+a[i]);

if ((i+1)%4==0)

System.out.println();

}

System.out.println("素数如下...");

for (int i=0;i<20;i++) {

if ( prime(a[i]) )

System.out.println("a[ "+i+" ]="+a[i]);

}

}

private static boolean  prime(int n) {

for (int k=2;k<=Math.sqrt(n);k++) {

if (n%k==0)

return false;

}

return true;

}

5.1.3 数据类型包装类

包装类的用途

(1)构造方法形态多样

例:Integer类

public Integer(int value)

public Integer(String s)

包装类的用途(续)

(3)提供了各种static方法

Character类提供有isDigit(char ch)方法可判断一个字符是否为数字

除Character类外的所有包装类均提供有valueOf(String s)的静态方法,它将得到一个相应类型的对象

例:Long.valueOf(“23”)构造返回一个包装了数据值23的Long对象。

(4)还有一组非常有用的静态包装方法是parseXXX()方法

例如: Integer.parseInt(String s)

5.2 字符串

5.2.1 String类

5.2.2 StringBuffer类

String类主要用于对字符串内容的检索、比较等操作,但要记住操作的结果通常得到一个新字符串,但不会改变源串的内容 .

举例:

String s = new String("ABC");

String s = "ABC";

char[] helloArray = { 'h', 'e', 'l', 'l', 'o' };

String helloString = new String(helloArray);

2、比较两个字符串

boolean equals(Object anObject)

int compareTo(String anotherString)

boolean equalsIgnoreCase(String anotherString)

String s1="Hello!World";

String s2=new String("Hello!World");

boolean b1=s1.equals(s2);

boolean b2=(s1= =s2);

3. 字符串的其它常用方法

(1)求字符串长度 length()

String s = "Hello!" ;

System.out.println(s.length());

(2)字符串的连接

利用“+”运算符

例:String s= "Hello!";

s=s+ " Mary "+4;  //s的结果为Hello! Mary 4

方法concat(String s)

String s="4+3=";

System.out.println(s.concat(“7”)); //输出4+3=7

System.out.println(s); //输出4+3=

3. 字符串的其它常用方法(续1)

(3)前缀和后缀的处理

boolean startsWith(String prefix)

boolean endsWith(String prefix)

String trim()

(4)字符串中单个字符ch的查找

int indexOf(int ch)

int lastIndexOf(int ch)

int indexOf(int ch, int fromIndex))

int lastIndexOf(int ch, int fromIndex))

考察以下程序的运行结果

String s="Java 是面向对象的语言,Javascript是脚本语言";

int k=-1;

do {

k=s.indexOf( (int) '是‘ , k+1);

System.out.print(k+"\t");

}  while (k!=-1);

3. 字符串的其它常用方法 (续2)

(5)字符串中子串str的查找

int indexOf(String str)

int lastIndexOf(String str)

int indexOf(String str, int fromIndex))

int lastIndexOf(String str, int fromIndex))

考虑以下程序段,写出运行结果

String s="Java是面向对象的语言,Javascript是脚本语言";

String sub="语言";

for (int i =s.length();i!=-1;) {

i=s.lastIndexOf(sub,i-1);

System.out.print(i+"\t");

}

3. 字符串的其它常用方法 (续3)

( 6)字符串的替换与提取

String replace(char oldchar,char newchar)

String replaceAll(String regex,String replacement)

char charAt(int index)

String substring(int beginIndex, int endIndex)

String substring(int beginIndex)

例5-2  从一个代表带有路径的文件名中分离出文件名和路径

public class GetFilename {

private String fullpath;

private final char pathSeparator='\\';

public GetFilename(String fname) {   fullpath=fname;  }

/* 获取文件名,文件名是最后一个分隔符后面的子串 */

public String getname() {

int pos=fullpath.lastIndexOf(pathSeparator);

if (pos==-1)

return fullpath;

return fullpath.substring(pos+1);

}

例5-2  从一个代表带有路径的文件名中分离出文件名和路径(续)

public String getPath() {

int pos=fullpath.lastIndexOf(pathSeparator);

if (pos==-1)     return null;

return  fullpath.substring(0,pos);

}

public static void main(String ags[]) {

GetFilename fn=new GetFilename("d:\\java\\example\\test.java");

System.out.println("filename="+fn.getname());

System.out.println("filepath="+fn.getPath());

}  }

在String类中也提供了一个方法split用来根据指定分隔符分离字符串

格式:public String[] split(String regex)

例如:对于字符串str="boo:and:foo"

split(“:”)的结果为:

{ "boo", "and", "foo" }

而split(“o”)的结果为:

{ "b", "", ":and:f" }

StringBuffer类主要实现串内容的添加、修改、删除。

1. 创建StringBuffer对象

public StringBuffer()

public StringBuffer(int length)

public StringBuffer(String str)

2. StringBuffer的主要方法

public StringBuffer append(Object obj)

public StringBuffer insert(int position, Object obj)

public StringBuffer setCharAt(int position, char ch)

public StringBuffer deleteCharAt(int position)

StringBuffer replace(int start, int end, String str)

String substring(int start, int end)

思考以下代码段对应的运行结果

StringBuffer str1=new StringBuffer();

str1.append("Hello,mary!");

str1.insert(6,30); //匹配方法StringBuffer insert(int offset,int i)

System.out.println(str1.toString());

例5-3  将一个字符串反转

public class StringsDemo {

public static void main(String[] args) {

String s = "Dot saw I was Tod";

int len = s.length();

StringBuffer dest = new StringBuffer(len);

for (int i = (len - 1); i >= 0; i--)

dest.append(s.charAt(i));

System.out.println(dest.toString());

}

}

5.3 Vector类

5.3.1 向量的各种访问

5.3.2 向量的应用举例

向量(Vector)是java.util包(java.util包是专门保存各种常用工具类的类库)提供的一个工具类。

向量比较适合在如下的情况中使用:

(1) 需要处理的对象数目不定,序列中的元素都是对象,或可以表示为对象。

(2) 需要将不同类的对象组合成一个数据序列。

(3) 需要做频繁的对象序列中元素的插入和删除。

(4) 经常需要定位序列中的对象或其他查找操作。

(5) 在不同的类之间传递大量的数据。

创建向量类的对象

使用向量一定要先创建后使用。

Vector类有三个构造函数:

public Vector(int initCapacity, int capacityIncrement)

public Vector(int initCapacity)

public Vector( )

1. 给向量序列中添加元素

⑴使用addElement或add方法在向量序列尾部添加新元素

Vector v=new Vector();

v.add("hello");         //添加一个字符串对象

v.add(new Integer(3));  //添加一个整数对象

v.addElement(“good”);   //添加一个字符串对象

加入向量中的数据元素必须是对象形式

例5-4 测试向量的大小及容量变化

import java.util.*;

public class TestCapacity {

public static void main( String [] args) {

Vector v=new Vector();

System.out.println("size="+v.size());

System.out.println("capacity="+v.capacity());

for (int i=0;i<14 ;i++ )

v.add("hello");

System.out.println("After added 14 ElementS");

System.out.println("size="+v.size());

System.out.println("capacity="+v.capacity());

}  }

例5-4 测试向量的大小及容量变化

运行结果如下:

size=0

capacity=10

After added 14 Elements

size=14

capacity=20

⑵ 在序列的指定位置插入新元素

v.insertElementAt("bye",2) ;

v.add(4, new Student()) ;

注意,两个方法的参数位置不同,前者序号在前,而后者序号在后

2. 获取向量序列中元素

可通过elementAt或get方法获取指定索引位置的元素对象。例如:

System.out.println("v(1)=“ + v.elementAt (1)) ;

String x=(String) v.get(0) ;

3.查找向量序列中元素

boolean contains(Object obj)

检查向量中是否包含元素obj。

int indexOf(Object obj, int start_index)

从指定位置起向后搜索对象obj,返回首次匹配位置,如果未找到,返回-1。

int lastIndexOf(Object obj, int start_index)

4. 修改向量序列中元素

void setElementAt(Object obj, int index)

设置index处元素为obj

5.删除向量序列中元素

boolean removeElement(Object obj)

删除首个与obj相同元素。

void removeElementAt(int index)

删除index指定位置的元素。

void removeAllElements()

清除向量序列所有元素。

void clear()

清除向量序列所有元素。

6. 向量的遍历访问

方法1:首先获取向量大小,然后通过get方法循环访问向量的所有元素。例如:

for (int i=0;i

System.out.println(v.get(i));

方法2:使用iterator(),它返回一个可以遍历的元素列表。然后用Iterator提供的hasNext()和Next()方法实现遍历,例如:

Iterator x=v.iterator();

While ( x.hasNext() ) //检查是否还有元素

System.out.println( x.next() ); //访问下一个元素

例5-5  模拟逆波兰式的计算处理

5.4 Collection API简介

1、 Collection接口

2、 Set接口

3、 List接口

Collection API的实现层次

(1)Collection接口

boolean add(Object o)

boolean contains(Object o)

boolean isEmpty()

Iterator iterator()

boolean remove(Object o)

int size()

Object[] toArray()

void clear()

(2) Set接口

是数学上集合模型的抽象,特点有两个:一是不含重复元素,二是无序

例5-5 Set接口用法

import java.util.*;

public class TestSet {

public static void main(String args[]) {

HashSet h=new HashSet() ;

h.add("Str1");    h.add( new Integer(12) );

h.add( new Double(4.2) );

h.add("Str1");    h.add(new String("Str1"));

System.out.println(h);

}

}

例5-6  List接口用法

import java.util.*;

public class TestList {

public static void main(String args[]) {

ArrayList a=new ArrayList() ;

a.add("Str1");   a.add(new Integer(12));

a.add(new Double(4.2));

a.add("Str1");    a.add(new String("Str1"));

Iterator p=a.iterator();

while (p.hasNext()) {

System.out.print(p.next()+" , ");

}   } }

Iterator接口

boolean hasNext()

判断容器中是否存在下一个可访问元素

Object next()

返回要访问的下一个元素

void remove()

用于删除迭代子返回的最后一个元素。该方法只能在每次执行next()后执行一次

5.5 日期和时间

5.5.1 Date类

5.5.2 Calendar类

5.5.1  Date类

Date():创建一个代表当前时间的日期对象;

Date(long date) :根据毫微秒值创建日期对象。

执行日期对象的toString()方法将按星期、月、日、小时、分、秒、年的默认顺序输出相关信息,例如:Sun Oct 31 16:28:04 CST 2004

int compareTo(Date anotherDate) :结果为0代表相等;为负数代表日期对象比参数代表的日期要早;为正数则代表日期对象比参数代表的日期要晚。

5.5.2  Calendar类

Calendar是一个抽象类,不能直接创建对象,但可以使用静态方法获得代表当前日期的日历对象。

Calendar rightNow = Calendar.getInstance();

void set(int year, int month, int date)

void set(int year, int month, int date, int hour, int minute, int second)

int get(int field)

其中,参数field的值由Calendar类的静态常量决定,例如:YEAR代表年;MONTH代表月;DAY_OF_WEEK代表星期几;HOUR代表小时;MINUTE代表分;SECOND代表秒等。

例如:rightNow.get(Calendar.MONTH)

相关PPT

《java程序设计课件》是由用户Proditio于2017-06-24上传,属于课件PPT。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值