【安博培训技术】Java2 数组、字符串、常用工具类20130918

来源:互联网 发布:网络协议仿真编辑器 编辑:程序博客网 时间:2024/06/06 03:18
教学目标


熟练使用一维数组存取数据,了解多维数组的使用
熟练掌握String与StringBuffer操作的几个常见函数
熟练使用包装类、Math类、日期类、Random类、System和Runtime类


什么是数组?
数组是用来存储一组相同数据类型数据的数据结构
数组是一种引用类型。
由类型相同的元素组成的有顺序的数据集合
数组是固定的不能扩展
数组的元素可以是简单类型的数据,也可以是引用类型的数据


声明数组
数组的声明包括数组名和所包含的数据类型
通用的一维数组的声明格式是:
    数据类型  数组名[];
 或 数据类型[] 数组名;
举例:
    int array_int[ ]; 
    String[ ] str;
注意:
可以存储基本数据类型或对象,接口
声明中不用写元素个数
数组名符合标识符规定


创建数组
创建数组:利用new 来为数组型变量分配内存空间
格式:数组名=new  数组元素类型[元素个数]
举例:
  array_int=new int[10];
注意:
必须分配内存后才能使用数组
两步可以合并,如:
  String[ ] str=new String[10];


数组初始化
创建数组后,系统会个每个元素一个默认值
也可以自己赋值
int array[] = new int[5];
for(int i = 0;i<array.length;i++){
array[i] = i;
}

        array[3] = 45;


声明并初始化数组
可以在声明数组时给数组元素一个初始值
举例:
  int[] array_int={1,2,3,4,5,6};
  String str[]={“we”,”are”,good”};
注意:
可以不指定数组大小
可称为静态分配数组空间


静态分配数组空间只能在数组声明的同时使用
int[] arr;
arr = {1,2,4,5};
int[] arr;
arr =new int[]{12,34,46,25};
int[] arr; 
arr = new int[3];
arr = {1,2,3};
int[] arr;
arr[0] = 1; arr[1] = 2; arr[2] = 3;


命令行参数 
在程序执行过程中,可以通过传递命令行参数将信息传递至 main( ) 方法
可以通过 String[ ] 参数访问这些参数
class ComndLineArg1 {
  public static void main(String args[ ]) {
     for(int i=0;i<args.length;i++) {
        System.out.println(args[i]);
     }
  }



声明数组(二维)
通用的二维数组的声明格式是:
     元素类型  数组名[][];
    元素类型[][] 数组名;
     元素类型[] 数组名[];
举例:
   float a[][];
 int[][] nums;
   int[]  qty[]; 
注意:
理解为数组的数组


初始化二维数组
float a[][]={{1,2},{3,4},{4,4,5}};
int[][] nums=new int[2][3];
nums[0][0]=21;
int[]  qty[]=new int[3][];
qty[0]=new int[2]
qty[1]=new int[1]
qty[2]=new int[4]


字符串
构造函数:
public String()   //创建空串
public String(String value)   //以value的拷贝建一个新串
public String(char[] value)  //以value中的字符建一个新串
public String(char[] value, int from, int count) //  
public String(byte[] value, int hibyte) //以value字符数组建一个新串,为8位,以不提倡使用
public String(byte[] value, int from, int count,String charset) 
public String(StringBuffer buffer)  //以StringBuffer创建新串
如:


字符串
创建一个 String 类的实例:
 String strName1 = “Humpty dumpty”; //字符串字面量
 String strName2 = new String("Egg");
两个或多个字符串可以用“+”运算符合并起来。例如:
strName3 = strName1+ " is the name of an " + strName2;
字符串的长度可以通过 String 类中的函数计算。例如:
String strName4={‘a’,’c’,’b’};
也可将数字添加到字符串类型中。例如:
String strVar = "Mark" + 1;
例子:StringConstructor.java


String 类方法
字符串的长度可以通过 String 类中的函数计算。
         public int length() 
察看字符串的开始是否同某个串相同
     public boolean startsWith(String  s) 
察看字符串的结尾是否同某个串相同
     public boolean endsWith(String  s) 
查找字串:返回字符串中某个特定子字符串首次出现的索引 
     public int indexOf(String anotherString) //返回首次出现位置
     public int indexOf(String anotherString,int startpoint)


字符串检索
//指定起始检索位置。若没检索到,返回-1
如:    String tom=“I am a good cat”;
tom.indexOf(97) //2
          tom.indexOf(97,3) //5
     tom.lastIndexOf(97) //13
          tom.indexOf(97,3) //13


得字符串的子串
String类中的抽取字串函数:
public String substring(int index)
public String substring(int  start, int end)
如:
    String jerry=“I love Tom”,s1,s2;
    s1=jerry.substring(2);//love Tom
    s2=jerry.substring(2,5);//lov


替换字符串中的字符
String类中的函数:
public String replace(char oldchar,char newchar)
//串中的旧字符全部用新字符代替
如:String jerry=“I mist theep”,s1;
      s1=jerry.replace(‘t’,’s’);//l miss sheep       


去掉字符串的前后空格
String类中的函数:
        public String trim( )
如:
    String jerry=“    I love Tom    ”,s1;
    s1=jerry.trim();//l love Tom
       
例子:StringTest.java StringMethods.java


字符串的不可变
String s1=“I you He”;
s1.substring(2,6);
s1=s1+” am”;
String s2=s1+” Java”;
s2.replace(‘J’,’j’);
String s3=“I am ”;
s3.trim();
String s4=s1+s2+s3;
s4?


字符串的比较(一)
     public boolean equals(Object ob)  //
    public boolean equalsIgnoreCase(String anotherString) // 忽//大小写
   如:
      String tom=“we are students”;
      String mary=“We are students”;
      String jerry=“We are students”;
      tom.equals(mary)   //false
      mary.equals(jerry)  //true
      tom.equalsIgnoreCase(mary)  //true
mary==jerry?


字符串比较(二)
String s1=“Hello”;
String s2=“Hello”;
String s3=new String(“Hello”);
String s4=new String(“Hello”);
结果?
s1==s2,s2==s3,s3==s4
s1.equals(s2),s1.equals(s3),s1.equals(s4)


字符串比较(三)
字符串按字典序比较大小(三)
   public int compareTo(String anotherString) 
    public int compareToIgnoreCase(String anotherString) 
返回类型为整型量
例如: 
      String tom=“we are students”;
      String mary=“We are students”;
      String jerry=“We are students”;
      tom. compareTo(mary)   //正值
      mary. compareTo(tom)  //负值
      mary. compareTo(jerry)  //0
      tom. compareToIgnoreCase(mary)  //0


把数值转换成字符串
Java.lang包中的String类中的静态函数把各种类型的数值转换成字符串
public static String valueOf(boolean b);
public static String valueOf(char c);
public static String valueOf(int i); 
public static String valueOf(long l); 
public static String valueOf(float f);
public static String valueOf(double d); 
如:float f=12.34f;
           String str=String.valueOf(f);


其他类型对象转换成字符串
各包装类中的静态函数把各种类型的对象转换成字符串
public static String toString();

把字符串转换成数值
Java.lang包中的包装类中的静态函数把字符串转换成相应类型的数值
转换为整型:用Integer.parseInt(String s)
转换为长整型:用Long.parseInt(String s)
转换为浮点型:用Float.parseFloat(String s)
     或Float.valueOf(String s).floatValue()
转换为双精型:
     用Double.valueOf(String s).doubleValue()
举例:
      int x=Integer.parseInt(“1234”);
      long  l=Long.parseLong(“9876542”);
      float f=Float.valueOf(“123.45”).floatValue()


StringBuffer(字符串缓冲)
StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。 
StringBuffer(int length) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。 
StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。 


StringBuffer
主要方法:
append(double d)  //追加
append(float f) 
append(int i) 
delete(int start, int end)  //删除
insert(int offset, int i)  //插入
substring(int start, int end)   //截取
indexOf(String str, int fromIndex)  //检索
toString()  //转为字符串
例子:StringBuf.java


分析(切割)字符串
Java.util包中的StringTokenizer类
构造函数: StringTokenizer(String  s)//用默认分割符分割
     StringTokenizer(String  s,String delim,true f)
其它函数:
nextToken( ) //取下一个单词
hasMoreTokens( ) //检测是否还有单词
countTokens( ) //分析出的串中的单词数
例子:StringToken.java


常见工具类
包装类
Math类
日期类
Date类
Calender类
GregorianCalendar
Random类
System和Runtime类


包装类 
原始数据类型 包装类
byte(字节) Byte 
char(字符) Character 
int(整型) Integer
long(长整型) Long 
float(浮点型) Float
double(双精度) Double 
boolean(布尔) Boolean
short(短整型) Short 


包装类 
public class NumberWrap {
/** 构造方法 */
    protected NumberWrap() {
    }
/** 这是 main 方法
 * 它将原始值转换为其相应的包装类型
*/
    public static void main(String[] args) {
        String number =“21”;
        Byte byNum = Byte.valueOf(number);
        Short shNum = Short.valueOf(number);
        Integer num = Integer.valueOf(number);
        Long lgNum = Long.valueOf(number);
        System.out.println("Output");
        System.out.println(byNum);
        System.out.println(shNum);
        System.out.println(num);
        System.out.println(lgNum);
  }}


包装类 
Character包装类的方法
方法 说明
isDigit() 确定字符是否为 0 至 9 之间的数字
isLetter() 确定字符是否为字母
isLowerCase() 确定字符是否为小写形式
isUpperCase() 确定字符是否为大写形式
isSpace() 确定字符是否为空格或换行符
isUnicodeIdentifierStart() 确定是否允许将指定字符作为 Unicode 标识符中的首字符


包装类 
public class TestCharacter {
    public static void main(String[] args) {
         int count;
         char[] values = {'*', '7', 'p', ' ', 'P'};
         for (count = 0; count < values.length; count++) {
             if (Character.isDigit(values[count])) {
                   System.out.println(values[count] + “是一个数字");
             } 
             if (Character.isLetter(values[count])) {
                   System.out.println(values[count] + “是一个字母");
             }
             if (Character.isUpperCase(values[count])) {
                   System.out.println(values[count] + “是大写形式");
             }
             if(Character.isUnicodeIdentifierStart(values[count])) {
                   System.out.println(values[count] + “是 Unicode "
                                + “标识符的第一个有效字符");
             }
        }
    }
}


Math 类 
方法 说明
int abs (int numvalue) 计算 int 类型值 numvalue 的绝对值,也接收 long、float 和 double 类型的参数
double ceil (double numvalue) 返回大于等于 numvalue 的最小整数值
double floor (double numvalue) 返回小于等于 numvalue 的最大整数值
int max(int a, int b) 返回 int 型值 a 和 b 中的较大值,也接收 long、float 和 double 类型的参数
int min(int a, int b) 返回 a 和 b 中的较小值,也可接收 long、float 和 double 类型的参数
double  random() 返回带正号的 double 值,大于或等于 0.0,小于 1.0。 
……
Math 类的用法
使用 Math 类的方法,如 ceil()、floor() 和 round(),random()
例子:MathDemo.java


Math 类的用法
使用 Math 类的方法,如 ceil()、floor() 和 round(),random()
例子:MathDemo.java


Math 类的用法 使用 Math 类的方法,如 ceil()、floor() 和 round(),random() 例子:MathDemo.java


sort(xxx[] a)方法
binarySearch (xxx[]?a, xxx?key) 
equals(xxx[] a, xxx[] a2) 
fill(xxx[] a, xxx val) 
toString(xxx[]?a) 


Date 类
Date 类表示日期和时间
提供操纵日期和时间各组成部分的方法
Date 类的最佳应用之一是获取系统当前时间


Date 类构造方法
构造方法 说明
Date() 使用当天的日期创建 Date
Date(long dt) 使用自 1970 年 1 月 1 日以后的指定毫秒数创建 Date


Calendar 类
根据给定的 Date 对象,Calendar 类可以以 YEAR 和 MONTH 等整型的形式检索信息
它是抽象的,因此不能像 Date 类一样实例化
GregorianCalendar:是 Calendar 的子类,实现 Gregorian 形式的日历


Random 类
此类生成随机数
两种构造方法
Random类的方法:
     nextInt() nextFloat() nextDouble()
例子:TestRandom.java


System类和Runtime类
方法 说明
System类
long currentTimeMillies 获取当前系统的时间
exit(int status) 终止Java程序的运行,退出JVM
Runtime类
Runtime getRuntime() 返回当前的Runtime对象
Process exec(String com) 执行指定的外部命令


示例
public class Test{
public static void main(String[] s) throws Exception{
long start=System.currentTimeMillis();
int m=0;
int size=100000;
for(int i=0; i<size; i++){
m+=i;
    System.out.println(""+i);
   }
   long end=System.currentTimeMillis();
   long totalTime=end-start;
   System.out.println("for 运行了毫秒数: "+totalTime+" m "+m);
    Runtime run=Runtime.getRuntime();
    run.exec("cmd /c start winword.exe");//用java打开word
    run.exec("cmd /c start mailto:abc@163.com"); //用java打开outlook
    }
}















原创粉丝点击