当前位置: 代码迷 >> 综合 >> 《Java 2 实用教程》课程学习(8)——第8章 常用实用类
  详细解决方案

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

热度:65   发布时间:2023-10-01 10:53:43.0

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

本章主要内容

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

8.1 Double类和Float类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

二、常量

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

DOUBLE.MAX_VALUE
100/0.0=infinity
-100/0.0=-infinityFloat d1=new Float("123.12");
Double d2=new Double(-1.0/0.0);
if (d2==Double.POSITIVE_INFINITY)System.out.println(d2);  
else if (d2==Double.NEGATIVE_INFINITY)System.out.println(d2); System.out.println(Double.MAX_VALUE);
System.out.println(Double.MIN_VALUE);
System.out.println(Double.POSITIVE_INFINITY);
System.out.println(Double.NEGATIVE_INFINITY);

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

public class E
{public static void main(String[] args) { System.out.println(Double.MAX_VALUE);System.out.println(Double.MIN_VALUE);System.out.println(Double.NaN);System.out.println(Double.POSITIVE_INFINITY);System.out.println(Double.NEGATIVE_INFINITY);}}

运行结果:

  • -Infinity
  • 1.7976931348623157E308
  • 4.9E-324
  • Infinity
  • -Infinity

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

public class E
{public static void main(String[] args) { Double d=new Double(-1.0/0.0);if (d==Double.POSITIVE_INFINITY)System.out.println(d);  else if (d==Double.NEGATIVE_INFINITY)System.out.println(d); }}
DOUBLE.MAX_VALUE
100/0.0=infinity
-100/0.0=-infinityFloat d1=new Float("123.12");
Double d2=new Double(-1.0/0.0);
if (d2==Double.POSITIVE_INFINITY)System.out.println(d2);  
else if (d2==Double.NEGATIVE_INFINITY)System.out.println(d2); System.out.println(Double.MAX_VALUE);
System.out.println(Double.MIN_VALUE);
System.out.println(Double.NaN);
System.out.println(Double.POSITIVE_INFINITY);
System.out.println(Double.NEGATIVE_INFINITY);

运行结果:

  • -Infinity
  • 1.7976931348623157E308
  • 4.9E-324
  • NaN
  • Infinity
  • -Infinity

三、Float类的常用方法

int compareTo(Float f)

将调用对象的数值与f中的值进行比较,分别返回0,1,-1。

boolean equals(Float f)

将调用对象的数值与f中的值进行比较,相等返回true,否则返回false

String toString()

返回调用对象的等价字符串

static String toString(float num) 

返回由num指定值的等价字符串 

static Float valueOf(String str)

 throws NumberForamtException  

返回包含了由str中的字符串指定值的Float对象 

float floatValue()

返回调用对象的浮点值

boolean isInfinite()

如果调用对象包含有无穷大值,则返回true,否则返回false

static boolean

isInfinite(float num) 

如果num指定了一个无穷大值,则返回true。否则返回false  

boolean isNaN()

如果调用对象包含有非数字值,则返回true,否则返回false

static boolean isNaN(float num) 

如果num指定了一个非数字值,则返回true。否则返回false 

四、Double类的常用方法

int compareTo(Double d)

将调用对象的数值与d中的值进行比较,分别返回0,1,-1。

boolean equals(Double d)

将调用对象的数值与d中的值进行比较,相等返回true,否则返回false

String toString()

返回调用对象的等价字符串

static String toString(double num) 

返回由num指定值的等价字符串 

static Double valueOf(String str)

 throws NumberForamtException  

返回包含了由str中的字符串指定值的Double对象 

double doubleValue()

返回调用对象的浮点值

boolean isInfinite()

如果调用对象包含有无穷大值,则返回true,否则返回false

static boolean

isInfinite(double num) 

如果num指定了一个无穷大值,则返回true。否则返回false  

boolean isNaN()

如果调用对象包含有非数字值,则返回true,否则返回false

static boolean 

isNaN(double num) 

如果num指定了一个非数字值,则返回true。否则返回false 

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

public class InfNaN 
{  public static void main(String[] args){Double d1=new Double(123);Double d2=new Double("123.45");Double d3=new Double(0.0/0.0);System.out.println(d1.isInfinite());System.out.println("d2="+d2);System.out.println(d3.isNaN());}
}

8.2 Byte、Short、Integer和Long类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

二、Byte类的常用方法

byte byteValue()  

返回调用对象值(字节型)

int compareTo(Byte b) 

将调用对象的数值与d中的值进行比较,分别返回0,1,-1。

boolean equals(Object ByteObj) 

如果Byte调用对象与ByteObj相等,则返回true。否则,返回false  

static byte parseByte(String str)   throws 

NumberFormatException

返回包含在由str指定的字符串中的数字的等价字节(byte)形式 

static String toString(byte num) 

返回一个包含了num的等价十进制形式的字符串

static Byte valueOf(String str) throws NumberFormatException  

返回一个包含了由str中的字符串指定的值的Byte对象 

static Byte valueOf(String str,int radix)   

throws NumberFormatException  

以指定的基数(radix)为底,返回一个包含了由str中的字符串指定的值的Byte对象 

String toString()    

返回一个包含了调用对象的等价十进制形式的字符串

static byte parseByte(String str,int radix)   

throws NumberFormatException  

以指定的基数(radix)为底,返回包含在由str指定的字符串中的数字的等价字节  

三、Short、Integer和Long类的常用方法

同Byte类的常用方法

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

public class IsChange 
{  public static void main(String[] args){Integer i1=new Integer(123);sub_1(i1,i1);System.out.println("i1="+i1);}public static void sub_1(Integer x1,Integer y1){x1=Integer.valueOf(x1.toString()+"123");y1=Integer.valueOf(y1.toString()+"231");System.out.println("x1="+x1);System.out.println("y1="+y1);}
}

8.3 Character类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

二、Character类的常用方法

static boolean isDigit(char ch) 

如果ch是一个数字,则返回true,否则,返回false  

static boolean isLetter(char ch)  

如果ch是一个字母,则返回true。否则返回false  

static boolean 

isLowerCase(char ch) 

当ch是小写字母时,返回true。否则返回false  

static boolean

isUpperCase(char ch) 

如果ch是一个大写字母,则返回true。否则返回false  

static char 

toLowerCase(char ch) 

返回ch的小写等价形式 

int compareTo(Character c) 

将调用对象的数值与c中的值进行比较,返回Unicode值的差。  

boolean equals(Character c )  

将调用对象的数值与c中的值进行比较,相等返回true,否则返回false。

String toString() 

返回调用对象的字符串形式。

char charValue()

返回Character对象所对应的char值。 

举例:

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

class IsDemo 
{
public static void main(String args[]){char a[] = {'a', 'b', '5', '?', 'A', ' '};for(int i=0; i<a.length; i++) {if ( Character.isDigit(a[i]) )System.out.println(a[i] + " is a digit.");if ( Character.isLetter(a[i]) )System.out.println(a[i] + " is a letter.");if ( Character.isWhitespace(a[i]) )System.out.println(a[i] + " is whitespace.");if ( Character.isUpperCase(a[i]) )System.out.println(a[i] + " is uppercase.");if ( Character.isLowerCase(a[i]) System.out.println(a[i] + " is lowercase.");}}
}

8.4 Boolean类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

 Boolean b=new Boolean(true);System.out.println("b="+b);

二、Boolean类的常用方法

boolean booleanValue( ) 

返回布尔(boolean)等价形式 

boolean 

equals(Object boolObj)  

如果调用对象与boolObj相等,则返回true。否则返回false   

static boolean getBoolean

(String propertyName) 

如果由propertyName指定的系统属性为true,则返回true。否则返回false

String toString( )  

返回调用对象的字符串等价形式

static Boolean 

valueOf(String boolString) 

如果在boolString中包含了“true”(以大写或小写形式),则返回true。否则返回false

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

  • 在“异常”层次的最上层有一个单独的类叫做Throwable。这个类用来表示所有的异常情况。每个异常类型都是Throwable的子类。
  • 一类是Error,它定义了那些通常无法捕捉到的“异常”。应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。如果出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。所以,在进行程序设计时,应该更关注Exception体系。
  • 另一类是Exception,是用户程序能够捕捉到的异常情况。我们可通过产生它的子类来创建自己的异常。
  • 处理RuntimeException的原则是:如果出现RuntimeException,那么一定是程序员的错误。例如,可以通过检查数组下标和数组边界来避免数组越界访问异常。    
  • 其他(IOException等等)异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。

8.5 字符串String

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

一、String类的构造方法

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

二、String类的常用方法

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

 比如,“\\dcat”中的\\d就是有特殊意义的元字符,代表0到9中的任何一个。字符串对象调用 public boolean matches(String regex)方法可以判断当前字符串对象是否和参数regex指定的正则表达式匹配。

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

【练习1】:将字符串从小到大排序

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

class Example5_1
{  public static void main(String args[]){ String s1,s2;s1=new String("we are students");s2=new String("we are students");System.out.println(s1.equals(s2)); System.out.println(s1==s2);         s1="how are you";s2="how are you"; System.out.println(s1.equals(s2));   System.out.println(s1==s2);      }
}

【练习2】求“en”在字符串中出现的次数

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

【练习3】将字符串逆序后输出

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

回顾

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

class Example5_6
{  public static void main(String args[]){ char c[],d[];String s="巴西足球队击败德国足球队";c=new char[2];s.getChars(5,7,c,0);System.out.println(c);d=new char[s.length()];s.getChars(7,12,d,0);s.getChars(5,7,d,5);s.getChars(0,5,d,7);System.out.println(d);}
}

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

class Example5_6
{   public static void main(String args[]){  String s="巴西足球队击败德国足球队";String ss;ss=s.substring(7,12);ss=ss.concat(s.substring(5,7));ss=ss.concat(s.substring(0,5));System.out.println(ss);}
}

【练习4】求“en”在字符串中出现的次数

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

class Example5_6
{   public static void main(String args[]){  String s="this is the dog,oh,that is the cat,the mice";s=s.replaceAll("the","a");System.out.println(s);}
}

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

public class E {public static void main(String[] args) {String str = "欢迎大家访问http://www.xiaojiang.cn了解、参观公司";String regex = "(http://|www)\56?\\w+\56{1}\\w+\56{1}\\p{Alpha}+";System.out.printf("替换\n\"%s\"\n中的网站链接信息后得到的字符串:\n",str);str = str.replaceAll(regex,"******");System.out.println(str);String money = "89,235,678¥";System.out.print(money+"转化成数字:"); String s = money.replaceAll("[,\\p{Sc}]","") ; //"\\p{Sc}"可匹配任何货币符号long  number = Long.parseLong(s);System.out.println(number); }
}

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

import java.util.Scanner; 
public class E {public static void main(String[] args) {Scanner reader=new Scanner(System.in);String str= reader.nextLine();//空格、数字和符号(!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)组成的正则表达式:String regex="[\\s\\d\\p{Punct}]+"; String words[]=str.split(regex); for(int i=0;i<words.length;i++){int m=i+1;System.out.println("单词"+m+":"+words[i]);}  }
}

三、字符串与基本数据类型的转化

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

public class E {public static void main(String[] args) {double aver=0,sum=0,item=0;boolean computable=true; for(String s:args) {try{ item=Double.parseDouble(s);sum=sum+item;}catch(NumberFormatException e) {System.out.println("您键入了非数字字符:"+e);computable=false;}}if(computable)System.out.println("sum="+sum); }
} 

注:应用程序中的main方法中的参数args能接受用户从键盘键入的字符串。          

比如,使用解释器java.exe来执行主类          

C:\ch8\>java Example8_4  78.86  12  25  125  98        

这时程序中的args[0]、arg[1]、arg[2]、arg[3]和args[4]        

分别得到字符串“78.86”、“12”、“25”、“125”和“98”。

在eclipse中,选择“Run”菜单下的“Open Run Dialog”,在“Arguments”页中“Program arguments”中填入上述的78.86  12  25  125  98即可。

8.5 字符串String

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

8.6 字符串变量StringBuffer

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

StringBuffer s=“this”; 是错误的,只能写成:    

StringBuffer s=new StringBuffer(“this”);  

StringBufferf对象不能使用运算符“+”进行串连接

二、StringBuffer类的常用方法

StringBuffer append

(object obj)

将一个Object对象的字符串表示追加到当前对象中,并返回当前对象的引用。 

char charAt(int n)

得到指定位置n上的字符。

void setCharAt(int n,char ch)

将当前字符串对象位置n上的字符替换为字符ch。

StringBuffer insert

(int index,String str)

将字符串str插入到当前对象的index位置处,并返回当前对象的引用。

StringBuffer delete

(int index1,int index2)

删除当前对象中的子字符串,子字符串从index1到index2-1。

StringBuffer deleteCharAt

(int index)

删除当前对象位置n上的一个字符。

StringBuffer replace

(int index1,int index2,

 String str)

将当前对象的从位置index1到index2-1的子字符串用字符串 str替换。

StringBuffer reverse() 

将当前对象反转,并返回当前对象的引用。

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

class Example5_10
{public static void main(String args[]){StringBuffer str=new StringBuffer(“我们大家都很愿意学习Java语言");str.setCharAt(0 ,'w'); str.setCharAt(1 ,'e');System.out.println(str); str.insert(2, " all");System.out.println(str);str.delete(6,8);System.out.println(str);int index=str.indexOf("都");str.replace(index,str.length()," love java");System.out.println(str);}
}

8.7 String和StringBuffer的区别

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

注:String 是一种非常常用的数据类型,但由于 String 是不可变对象,在进行 String 的相关操作的时候会产生许多临时的 String 对象。而  StringBuffer 在操作上是在一个缓冲中进行的,性能当然优越得多。不过,一般做为简单的字符串传递和其它操作,只不要改变字符串内容的操作,用 String 效率会高一些

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

    public class Replace{   public static void main(String[] args) {String s1=new String(“this is ");StringBuffer sv1=new StringBuffer("this is ");s1.concat("a dog");sv1.append("a cat");System.out.println(s1);System.out.println(sv1);}}

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

public class Untitled1{   public static void main(String[] args) {  String s1="String类的值是不是会变的->";String s2=s1;s1+="加个试试"; System.out.println(s2);StringBuffer b1=new StringBuffer(“StringBuffer类的值是会变的->");StringBuffer b2=b1;b1.append("加个试试"); System.out.println(b2);}}

8.8 StringTokenizer的类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

有时我们需要分析字符串并将字符串分解成可被独立使用的单词,这些单词叫做语言符号,例如:对于字符串”we are students”,如果我们把空格作为该字符串的分隔符,那么该字符串有三个单词(语言符号)。

当我们分析一个字符串并将字符串分解成可被独立使用的单词时,可以使用java.util包中的StringTokenizerd类。

二、常用方法

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

import java.util.*;
public class Example5_11 
{  public static void main(String args[]){  String s="we are stud,ents";StringTokenizer fenxi=new StringTokenizer(s, "    ,"); int number=fenxi.countTokens();while(fenxi.hasMoreTokens()) { String str=fenxi.nextToken();System.out.println(str);}System.out.println("s共有单词:"+number+"个");} 
}

8.9  Scanner类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

那么scanner将空格做为分隔标记来解析字符串中的单词,解析操作的特点如下:

◆ scanner调用next()方法依次返回NBA中的单词,如果NBA最后一个单词已被next()方法返回,scanner调用hasNext()将返回false,否则返回true。

◆  对于被解析的字符串中的数字型的单词,比如618,168.98等,scanner可以用nextInt()或nextDouble()方法来代替next()方法,即scanner可以调用nextInt()或nextDouble()方法将数字型单词转化为int或double数据返回。

◆ 如果单词不是数字型单词,scanner调用nextInt()或nextDouble()方法将发生InputMismatchException异常,在处理异常时可以调用next()方法返回该非数字化单词。

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

import java.util.*;
public class Example {public static void main(String args[]) {String  cost= "TV cost 876 dollar.Computer cost 2398 dollar.telephone cost 1278 dollar.";Scanner scanner = new Scanner(cost);double sum=0;while( scanner.hasNext()  ){try{double price=scanner.nextDouble();sum=sum+price;System.out.println(price); } catch(InputMismatchException exp){String t= scanner.next();}   }System.out.println("总消费:"+sum+"元");}
}

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

import java.util.*;
public class Example {public static void main(String args[]) {String  cost= "话费清单:市话费76.89元,长途花费167.38元,短信费12.68元";Scanner scanner = new Scanner(cost);scanner.useDelimiter("[^0123456789.]+"); double sum=0;while(scanner.hasNext()){try{double price=scanner.nextDouble();sum=sum+price;System.out.println(price);} catch(InputMismatchException exp){String t=scanner.next();}   }System.out.println("总通信费用:"+sum+"元");}
}

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

8.10  Date类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

Date类在java.util包中。 1.使用Date类的无参数构造方法创建的对象可以获取本地当前时间。 Date()      

例: Date nowTime=new Date();      

当前nowTime对象中含有的日期、时间就是创建nowTime对象时的本地计算机的日期和时间。例如,假设当前时间是:2011年3月10日23:05:32(CST时区),那么 System.out.println(nowTime); 输出结果是:Thu Mar 10 23:05:32 CST 2011。      

Date对象表示时间的默认顺序是:星期、月、日、小时、分、秒、年

2.使用带参数的构造方法  Date(long time)        

计算机系统将其自身的时间的“公元”设置在1970年1月1日0时(格林威治时间),可以根据这个时间使用Date的带参数的构造方法:Date(long time)来创建一个Date对象,例如:        

Date date1=new Date(1000), date2=new Date(-1000);        

其中的参数取正数表示公元后的时间,取负数表示公元前的时间,例如1000表示1000毫秒,那么,date1含有的日期、时间就是计算机系统公元后1秒时刻的日期、时间。如果运行Java程序的本地时区是北京时区(与格林威治时间相差8个小时),那么上述date1就是1970年01月01日08时00分01秒、date2就是1970年01月01日07时59分59秒。

3. System类的静态方法 public long currentTimeMillis() 获取系统当前时间

二、日期格式化

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

import java.util.*;
public class Example {public static void main(String args[]) {Date nowTime = new Date();System.out.println(nowTime);String pattern = "%tY-%<tm-%<td(%<tA) %<tT";String s1=String.format(pattern,nowTime);System.out.println(s1);pattern = "日期:%ty年%tm月%td日";String s1=String.format(pattern,nowTime,nowTime,nowTime);System.out.println(s1);}
}

三、星期格式化

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

8.11  Calendar类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

二、常用方法

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

import java.util.*;
public class Example {public static void main(String args[]) {Calendar calendar=Calendar.getInstance();   calendar.setTime(new Date());       int year = calendar.get(Calendar.YEAR),month = calendar.get(Calendar.MONTH)+1,day = calendar.get(Calendar.DAY_OF_MONTH),hour = calendar.get(Calendar.HOUR_OF_DAY),minute = calendar.get(Calendar.MINUTE),second = calendar.get(Calendar.SECOND);System.out.print("现在的时间是:");System.out.print(""+year+"年"+month+"月"+day+"日");System.out.println(" "+hour+"时"+minute+"分"+second+"秒");int y = 2012,m = 9,d = 1;       calendar.set(y,m-1,d);  //将日历翻到2012年九月一日,注意8表示九月long time1 = calendar.getTimeInMillis();y = 2016;      m = 7;      d = 1;calendar.set(y,m-1,d);  //将日历翻到2016年七月一日long time2 = calendar.getTimeInMillis();long subDay = (time2-time1)/(1000*60*60*24);System.out.println(""+new Date(time2));System.out.println("与"+new Date(time1));System.out.println("相隔"+subDay+"天");}  
}

calendar.set(y,m-1,d);  //将日历翻到2012年九月一日,注意8表示九月

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

8.12  Math、BigInteger和Random类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

二、Math类的常用方法

static double abs(double a)

返回a的绝对值。

static double max

(double a,double b)

返回a,b的最大值。

static double min

(double a,double b)

返回a,b的最小值。

static double random()

产生(0,1)之间的随机数。

static double pow

(double a,double b) 

返回a的b次幂。

static double sqrt(double a)

返回a的平方根。

static double log(double a)

返回a的自然对数(以e为底)

static double sin(double a)

返回a的正弦值。注:a为弧度

static double asin(double a)

返回a的反正弦值。

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

NumberFormat类的常用方法

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

import java.text.*;
class Example5_16
{ public static void main(String args[]){ int a[][]=new int[4][5];int i,j;String s;  NumberFormat f=NumberFormat.getInstance();f.setMinimumIntegerDigits(3);for(i=0;i<4;i++){  for(j=0;j<5;j++){ a[i][j]=i*(j+1)*5;s=f.format(a[i][j]);System.out.print(s+"  ");}System.out.println();} }
}

三、BigInteger类

BigInteger add( BigInteger val)

返回当前大整数对象与参数指定的大整数对象的和。

BigInteger subtract( BigInteger val)

返回当前大整数对象与参数指定的大整数对象的差。

BigInteger multiply( BigInteger val)

返回当前大整数对象与参数指定的大整数对象的积。

BigInteger divide( BigInteger val)

返回当前大整数对象与参数指定的大整数对象的商。

BigInteger remainder( BigInteger val)

返回当前大整数对象与参数指定的大整数对象的余。

int compareTo( BigInteger val)

返回当前大整数对象与参数指定的大整数对象的比较结果。

BigInteger abs( )

返回当前大整数对象的绝对值

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

import java.text.*;
class Example
{ public static void main(String args[]){double a=5.0;double st=Math.sqrt(a);System.out.println(a+“的平方根:"+st);BigInteger result=new BigInteger("0"),one=new BigInteger("123456789"),two=new BigInteger("987654321");result=one.add(two);System.out.println("和:"+result);result=one.multiply(two);System.out.println("积:"+result);}
}

四、Random类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

8.13  Pattern与Matcher类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

import java.util.regex.*;
class Example
{ public static void main(String args[]){Pattern p;          //模式对象Matcher m;         //匹配对象String regex="(http://|www)\56?\\w+\56{1}\\w+\56{1}\\p{Alpha}+";p=Pattern.compile(regex);  //初试化模式对象String s="新浪:www.sina.cn,央视:http://www.cctv.com";   m=p.matcher(s);  //得到检索s的匹配对象mwhile( m.find() ) {String str=m.group();System.out.println(str);} System.out.println("剔除字符串中的网站地址后得到的字符串:");String result=m.replaceAll("");System.out.println(result);   }
}

8.14  Class类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

要特别注意的是:使用Class对象调用newInstance()实例化一个className类的对象时,className类必须有无参数的构造方法。

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

import java.util.Date;
class Rect {double width,height,area;public double getArea() {  area=height*width;return area;}
}
public class Example {public static void main(String args[]) {try{  Class cs=Class.forName("Rect");Rect rect=(Rect)cs.newInstance();rect.width=100;rect.height=200;System.out.println("rect的面积"+rect.getArea());cs=Class.forName("java.util.Date");Date date = (Date)cs.newInstance();System.out.println(date.toString());}catch(Exception e){System.out.println(e.toString());} }  
}

二、获取类的有关信息

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

import java.lang.reflect.*;
import java.util.*;
public class Example8_23 {public static void main(String args[]) {Date date=new Date();Class cs=date.getClass();String className=cs.getName();Constructor[] con=cs.getDeclaredConstructors();Field[] field=cs.getDeclaredFields() ;Method[] method=cs.getDeclaredMethods();System.out.println("类的名字:"+className);System.out.println("类中有如下的成员变量:");for(int i=0;i<field.length;i++) {System.out.println(field[i].toString());}System.out.println("类中有如下的方法:");for(int i=0;i<method.length;i++) {System.out.println(method[i].toString());}System.out.println("类中有如下的构造方法:");for(int i=0;i<con.length;i++) {System.out.println(con[i].toString());}}  
}

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

本章主要内容

《Java 2 实用教程》课程学习(8)——第8章 常用实用类

上机实践5-实验1 String类的常用方法

实验要求:

编写一个Java应用程序,判断两个字符串是否相同,判断字符串的前缀、后缀是否和某个字符串相同,按字典顺序比较两个字符串的大小关系,检索字符串,创建子字符串,将数字型字符串转换为数字,将字符串存放到数组中,用字符数组创建字符串。

class StringExample
{   public static void main(String args[]){   String s1=new String("you are a student"),s2=new String("how are you");if(【代码1】) // 使用equals方法判断s1与s2是否相同{System.out.println("s1与s2相同");} else{System.out.println("s1与s2不相同");  }String s3=new String("22030219851022024");if(【代码2】)   //判断s3的前缀是否是“220302”。{System.out.println("吉林省的身份证");}String s4=new String("你"),s5=new String("我");if(【代码3】)//按着字典序s4大于s5的表达式。{System.out.println("按字典序s4大于s5");}else{             System.out.println("按字典序s4小于s5");         }int position=0;String path="c:\\java\\jsp\\A.java";position=【代码5】 //获取path中最后出现目录分隔符号的位置System.out.println("c:\\java\\jsp\\A.java中最后出现\\的位置:"+position); String fileName=【代码6】//获取path中“A.java”子字符串。System.out.println("c:\\java\\jsp\\A.java中含有的文件名:"+fileName); String s6=new String("100"),s7=new String("123.678");int n1=【代码7】     //将s6转化成int型数据。double n2=【代码8】  //将s7转化成double型数据。double m=n1+n2;System.out.println(m);String s8=【代码9】 //String调用valuOf(int n)方法将m转化为字符串对象position=s8.indexOf(".");String temp=s8.substring(position+1);System.out.println("数字"+m+"有"+temp.length()+"位小数") ; String s9=new String("ABCDEF");char a[]=【代码10】   //将s8存放到数组a中。for(int i=a.length-1;i>=0;i--){System.out.print(" "+a[i]);}}
} 

实验后练习:

(1)程序中的s6改写成

String s6=new String("1a12b");

运行时提示怎样的错误

(2)请用数组a的前3个单元创建一个字符串并输出该串。

(3)请给出获取path中“jsp”子字符串的代码。

(4)在程序的适当位置增加如下代码,注意输出的结果。

String str1=new String(“ABCABC”),str2=null,str3=null,str4=null;
str2=strl .replaceAll("A”, “First”);
str3=str2 .replaceAll("B“,” Second”);
str4=str3 .replaceAll(“C”,” Third”);
System.out.println(strl);
System·out·println(str2);
System:out .println(str3);
System.out .println(str4);

(5)可以使用Long类中的下列static方法得到整数各种进制的字符串表示:

public static String toBinaryString(long i)
public static String toOctalString(long i)
public static String toHexString(long i)
public static String toString(long i,int p)

其中的toString(long i, int p)返回整数i的p进制表示。.请在适当拉置添加代码输出12345的二进制、八进制和十六进制表示。

(6)在适当位置添加代码,分别输出数字m的整数部分和小数部分。

 

  相关解决方案