本章主要内容
8.1 Double类和Float类
二、常量
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);
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
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 |
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类
二、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类的常用方法。
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类
二、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值。 |
举例:
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类
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 |
- 在“异常”层次的最上层有一个单独的类叫做Throwable。这个类用来表示所有的异常情况。每个异常类型都是Throwable的子类。
- 一类是Error,它定义了那些通常无法捕捉到的“异常”。应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。如果出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。所以,在进行程序设计时,应该更关注Exception体系。
- 另一类是Exception,是用户程序能够捕捉到的异常情况。我们可通过产生它的子类来创建自己的异常。
- 处理RuntimeException的原则是:如果出现RuntimeException,那么一定是程序员的错误。例如,可以通过检查数组下标和数组边界来避免数组越界访问异常。
- 其他(IOException等等)异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。
8.5 字符串String
一、String类的构造方法
二、String类的常用方法
比如,“\\dcat”中的\\d就是有特殊意义的元字符,代表0到9中的任何一个。字符串对象调用 public boolean matches(String regex)方法可以判断当前字符串对象是否和参数regex指定的正则表达式匹配。
【练习1】:将字符串从小到大排序
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”在字符串中出现的次数
【练习3】将字符串逆序后输出
回顾
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);}
}
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”在字符串中出现的次数
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);}
}
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); }
}
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]);} }
}
三、字符串与基本数据类型的转化
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
8.6 字符串变量StringBuffer
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() |
将当前对象反转,并返回当前对象的引用。 |
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的区别
注:String 是一种非常常用的数据类型,但由于 String 是不可变对象,在进行 String 的相关操作的时候会产生许多临时的 String 对象。而 StringBuffer 在操作上是在一个缓冲中进行的,性能当然优越得多。不过,一般做为简单的字符串传递和其它操作,只不要改变字符串内容的操作,用 String 效率会高一些。
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);}}
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的类
有时我们需要分析字符串并将字符串分解成可被独立使用的单词,这些单词叫做语言符号,例如:对于字符串”we are students”,如果我们把空格作为该字符串的分隔符,那么该字符串有三个单词(语言符号)。
当我们分析一个字符串并将字符串分解成可被独立使用的单词时,可以使用java.util包中的StringTokenizerd类。
二、常用方法
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类
那么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()方法返回该非数字化单词。
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+"元");}
}
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+"元");}
}
8.10 Date类
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() 获取系统当前时间
二、日期格式化
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);}
}
三、星期格式化
8.11 Calendar类
二、常用方法
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表示九月
8.12 Math、BigInteger和Random类
二、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的反正弦值。 |
NumberFormat类的常用方法
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( ) |
返回当前大整数对象的绝对值 |
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类
8.13 Pattern与Matcher类
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类
要特别注意的是:使用Class对象调用newInstance()实例化一个className类的对象时,className类必须有无参数的构造方法。
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());} }
}
二、获取类的有关信息
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());}}
}
本章主要内容
上机实践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的整数部分和小数部分。