java基础系列(五)

10 篇文章 0 订阅
4 篇文章 0 订阅

一、 常用类

1、  Math

 1Math类提供了一序列基本数学运算和几何函数的方法。

      2Math类是final类,并且它的所有成员变量和成员方法都是静态的。

       Math类的常用属性和方法

Þ静态常量--PI :圆周率的double

    Þ静态方法

double pow(double a,double b)

计算ab次方

double sqrt(double a)

计算给定值的平方根

int abs(int a)

计算int类型值a的绝对值,也接收longfloatdouble类型的参数

double ceil(double a)

返回大于等于a的最小整数的double

double floor(doble a)

返回小于等于a的最小整数的double

int max(int a,int b)

返回int类型值ab中的较大值,也接收longfloatdouble类型的参数

int min(int a,int b)

返回int类型值ab中的较小值,也接收longfloatdouble类型的参数

int round(float a)

四舍五入返回整数

double random()

返回带正号的double值,该值大于等于0.0且小于1.0


2、 Random

     Random类的对象可以生成“伪随机数”。

       常用方法:

        public int nextInt(int bound)

        返回从0(包含)到bound(不包含)的一个“伪随机数”整数值。

         public boolean nextBoolean()

         返回一个“伪随机数”的boolean值。

         代码实例

          package common;

 

import java.util.Random;

 

public class RandomDemo {

 

           public static void main(String[] args) {

         Random ran=new Random();

         int result=ran.nextInt(16)+3;

      System.out.println("随机返回318的数字"+result);

 System.out.println("随机返回boolean值:"+ran.nextBoolean());

 

               }

 

}

3、 System

成员变量

       System类内部包含inouterr三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。

     ‚成员方法

         «public static void arraycopy(Object src , int srcPos, Object dest, int destPos, int length)

           int[] a = {1,2,3,4};

int[] b = new int[5];

System.arraycopy(a,1,b,3,2);

«exit()方法

  Public static void exit(int status)

     该方法的作用就是退出程序。其中status的值为0代表正常退出,非0代表异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。

«gc()方法

     public static void gc()

     该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。

     垃圾回收时,会先调用finalize()方法,释放非java资源。

      «currentTimeMillis方法

public static long currentTimeMillis()

以毫秒为单位返回从1970年1月1日午夜到当前时间的毫秒数。

    代码示例:

package common;

 

public class Person {

   // 在对象被JVMgc回收之前,会先调用这个方法

      @Override

       protected void finalize() throws Throwable {

      System.out.println("对象被回收之前做的事情...");

         }

}

package common;

 

public class FinalizeDemo {

 

          public static void main(String[] args) {

           Person per=new Person();

           per=null;   // per引用置为null,使堆内存中的Person对象变为垃圾

                 System.gc();  // 显式请求JVM进行垃圾回收gc

            }

 

     }

4、 Runtime

作用:使应用程序与其运行环境相关联

通过使用getRuntime()静态方法获得实例。

   Þexec(String command)在单独的进程中执行指定的字符串命令,该方法返回Process对象,使用Process对象的destroy()方法杀掉进程。

   代码示例:

    package common;

 

import java.io.IOException;

import java.util.Scanner;

 

public class RuntimeDemo {

 

 public static void main(String[] args) {

  Runtime rt= Runtime.getRuntime();

  rt.gc();    // 显式请求JVM进行垃圾回收gc

        System.out.println("当前JVM的内存总量是:"+rt.totalMemory()+"字节");

        System.out.println("JVM试图使用的最大内存量:"+rt.maxMemory());   

        System.out.println("当前JVM的空闲内存量:"+rt.freeMemory());

        try {

rt.exec("notepad");

rt.exec("calc");

Process qq=rt.exec("F:\\Program Files (x86)\\Tencent\\QQ\\Bin\\QQ.exe");   // 打开QQ进程

Scanner scan=new Scanner(System.in);

System.out.print("要关闭QQ吗?y/n");

String choice=scan.next();

if("y".equals(choice)){

qq.destroy();   // 销毁进程

   }

   } catch (IOException e) {

   e.printStackTrace();

   }

   }

 

}

5、 Date类与 SimpleDateFormat

Date类:表示日期和时间

  提供操作日期和时间各组成部分的方法。

SimpleDateFormat

  用于定制日期时间格式

Date date = new Date();    //创建日期对象  

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-  

    MM-dd HH:mm:ss");//定制日期格式

String now = sdf.format(date);

System.out.println(now);

6、 Calendar

抽象类

用于设置和获取日期/时间数据的特定部分

Calandar类提供一些方法和静态字段来操作日历。

方法或属性

说明

int get(int field)    

返回给定日历字段的值

MONTH

指示月

DAY_OF_MONTH

指示一个月中的某天

DAY_OF_WEEK

指示一个星期中的某一天

 

二、 正则表达式

1、概念:正则表达式(regex)是使用字符串描述、匹配一系列符合某个句法规则的字符串。

2、用途:匹配、切割、替换、获取字符串。

3、正则表达式由一些普通字符和一些元字符组成。

      常见的元字符:

       

元字符

描述

^

匹配输入字符串的开始位置

$

匹配字符串的结束位置

\d

匹配一个数字字符。等价于[0-9]

\D

匹配一个非数字字符。等价于[^0-9]

\s

匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\n\r\t\f]

\S

匹配任何非空白字符。等价于[^\n\r\t\f]

\w

匹配包括下划线的任何单个字符。等价于“[A-Za-z0-9]

 

4、Java“\”的含义与作用

     ¾反斜线后面可以加特定字符,组成所谓的“转义字符”。eg: \n  \t

     ¾用于取消元字符的意义,使元字符变为普通字符。

       eg: “\\” 代表”\”。

     ¾用于组成正则表达式中的元字符。

       eg: “\d” 在正则表达式中代表“匹配一个数字字符”。

5、Pattern类与Matcher

      ¾Pattern类与Matcher类都在java.util.regex包中定义。

      ¾Pattern类的对象代表正则表达式编译之后的对象;Matcher类主要用于执行验证。

      ¾Pattern类的主要方法:

        public static Pattern compile(String regex);

        public Matcher matcher(CharSequence input);

      ¾Matcher类的主要方法:

        Public boolean matches();    

6、String类对正则表达式的支持

      public boolean matches(String regex)

        判断字符串是否与给定的正则表达式匹配

      ‚public String replaceAll(String regex,String replacement)字符串替换

     ƒpublic String[] split(String regex)字符串拆分

7、补充:

      正则表达式中间的问号?有两种作用:

        第一种作用:重复前面表达式0次或1次。

        第二种作用:在表示次数的元字符后加上?代表取消默认的贪婪匹配模式,变为“非贪婪匹配模式”。     

       

三、 枚举类型

1、枚举类型使用一组常量值表示特定的数据集合,该集合中的数据的数目确定(通常较少),且这些数据只能取预先定义的值。

2、Java枚举类型均自动继承java.lang.Enum类(该类继    承了Object类)

3、声明枚举类型:

[public] enum 枚举类型名称{

   枚举对象1,枚举对象2.....,枚举对象n

}

eg: public enum Color{

   RED,GREEN,BLUE;

}

4、获取枚举对象的两种方法:

方法一:取得单个枚举对象

       枚举.对象名

方法二:取得全部枚举对象

       枚举.values()

注意:枚举.values()返回的是一个对象数组,可以通过遍历该对象数组获取所有枚举对象。

 

四、 集合概念与框架结构

1、为什么使用集合:

    如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象——可以使用java集合框架

2、集合的概念

集合:Java API所提供的一系列类的实例,可用于            动态存放多个对象。

    ‚java集合框架提供了一套性能优良、使用方便的接口和类,他们位于java.util包中。

       ƒ特点:长度不固定,只能用于存储引用类型对象。

3、Java集合框架结构

    

 

4、Java Collection接口

Collection接口定义了一些集合常用的方法

方法

说明

int size();

返回此collection中的元素数

 

Boolean isEmpty();

 

判断此collection中是否包含元素

Boolean contains(Object obj);

 

判断此collection是否包含指定的元素

boolean add(Object element);

向此collection中添加元素

boolean remove(Object element);

 

从此collection中移除指定的元素

void clear(); 

 

移除些collection中所有的元素

Iterator iterator();

返回在此collection的元素上进行迭代的迭代器

 

Object[] toArray();

 

把此collection转成数组

  

5、collection接口存储特点:

   存取对象的方法,两个常用的子接口:

List接口:存放的元素有序且允许有重复的集合接口。

‚Set接口:存放的元素不包含重复元素的集合接口。    

6、List集合及其实现类

   nList接口是Collection接口的子接口

   n实现List接口的集合类中的元素是有序的,且允许重复。

n List集合中的元素都对应一个整数型的序号记载其在集合中的位置,可以根据序号存取集合中的元素。

7、JDK API所提供的List集合类常用的有

uArrayList

uLinkedList

8、List接口常用的方法(List接口比Collection接口中新      增的几个实用方法):

   public Object get(int index);返回列表中元素数

‚public Object add(int index, Object element);

在列表的指定位置插入指定元素.将当前处于该位置的元素(如果有的话)和所有后续元素向右移动

ƒpublic Object set(int index, Object element) ;

用指定元素替换列表中指定位置的元素

„public Object remove(int index);

移除列表中指定位置的元素

…public ListIterator listIterator();

返回此列表元素的列表迭代器

9、实现类ArrayList

   ArrayList是使用数组结构实现的List集合。

   

  优点:对于使用索引取出的元素有较好的效率

         它使用索引快速定位对象。

  缺点:元素做删除或插入时比较麻烦

         因为使用了数组,需要移动后面的元素以调整索引顺序。

10、实现类LinkedList

LinkedList是使用双链表实现的集合

LinkedList是新增了一些插入、删除的方法

优点:对频繁的插入或删除元素有较好的效率

缺点:查询元素时效率较低,因为要从第一个元素开始查找

11、迭代器的使用

    uIterator是专门的迭代输出接口。所谓的迭代输出就是将元素进行判断,判断是否有内容,如果有内容则把内容取出。

uIterator对象称作迭代器,用以方便的实现对集合内元素的遍历操作。

u所有实现了Collection接口的集合类都有一个iterator()方法用以返回一个实现了Iterator接口的对象。

Iterator it = coll.iterator();

while(it.hasNext()){

        it.next();

}

          u迭代器的使用方法:

 Iterator接口中定义了如下方法:

boolean hasNext(); //判断游标右边是否有元素

Object next(); //返回游标右边的元素并将游标移动到下一个位置

          u另一种遍历集合的方法

用增强for遍历集合中的元素

凡是能用 Iterator 迭代的集合都可以用JDK5.0中增强的for循环来更简便的遍历。

          List<String> list=new ArrayList<String>();

         …

eg: for(String data:list){

             System.out.print(data+”  ”)

           }

12、泛型补充:

泛型(Generic  type)是对java语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法中的形式参数是运行时传递的的值的占位符一样。

泛型的好处:

解决了类型安全的问题(运行期出现“java.lang.ClassCastException”异常)

泛型类举例:

class  Gen<T> {

    private T ob; // 定义泛型成员变量

 

    public Gen(T ob) {

        this.ob = ob;

    }

    public T getOb() {

        return ob;

    }

    public void setOb(T ob) {

        this.ob = ob;

    }

    public void showType() {

        System.out.println("T的实际类型是: " + ob.getClass().getName());

    }

}

 

13、受限泛型

设置上限

   类名称<? extends 上限类>

   只能接收上限类对象或其子类对象

‚设置下限

    类名称<?  super  下限类>

    接收下限类对象或其父类对象

注意:若定义泛型类,可以将?设置为泛型标识

14、Set接口的实现类

      Set接口没有提供Collection接口额外的方法,但实现Set接口的集合类中的元素是不可重复的。

 JDK API中所提供的Set集合类常用的有:

HashSet:散列存放

TreeSet:有序存放

LinkedHashSet

      HashSet的存储原理

        u根据每个对象的哈希码值(调用hashCode()获得)用固定的算法算出它的存储索引,把对象存放在一个叫散列表的相应位置(表元)中。

u如果对应的位置没有其它元素,就只需要直接存入。

u如果该位置有元素了,会将新对象跟该位置的所有对象进行比较(调用equals()),以查看是否已经存在了:还不存在就存放,已经存在就不存储。

15、HashSet集合的特点及使用技巧

HashSet不保存元素的加入顺序。

HashSet接口存、取、删对象都有很高的效率

对于存放到hashCode(Object obj)方法和equals()以实现对象相等规则的编写。     

16、TreeSet集合的特点

       TreeSet:可以对加入其中的元素进行排序。但前提是,必须指定排序规则。

       构造方法:public TreeSet()

       如果使用TreeSet的无参构造实例化TreeSet集合,则加入到TreeSet集合中的元素所对应的类必须实现java.lang. Comparable<T>接口,复写其中的int compareTo(T o)方法,并在方法中编写排序规则。

       Comparable<T>接口的compareTo(T o)方法中,指定排序规则(以升序为例):

        public int compareTo(Girl girl){

         if(this.xxx>girl.xxx){

                   return 1;

         }else if(this.xxx<girl.xxx){

                   return  -1;

        }else{

                   return 0;

        }

TreeSet比较排序的过程,已经对重复元素去重了。

 

 

 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值