常用工具类(一)

   包装类:

 在Java中,每个基本类型在java.lang包中,都有相应的包装类,把基本数据转换为对象,其中包装类Integer是Number的直接子类。 

    基本数据类型: byte  short   int    long    float  double  char  boolean

    包装类:      Byte  Short  Integer  Long   Float  Double Character  Boolean  
    Number类,从定义可知,它是一个抽象类,主要表示数值。
    子类包括:Byte Short Integer  Long Float  Double Boolean和Character类

    Number 直接父类: Object类

注意:包装类可以定义属性和方法,属于引用数据类型,默认值为null。

自动装箱和自动拆箱:

    在JDK1.5更改为自动完成,自动装箱--基本数据类型转变为包装类的过程--例如:Integer i = 5;

                                           自动拆箱--包装类转变为基本数据类型的过程--例如:Int a = new Integer(5);

 为什么要使用包装类,包装类的作用。

答:因为java语言是面向对象的语言,但是java中的基本数据类型却不是面向对象的,而在实际的使用中经常需要将基本数据转化成对象,便于操作。比如说在集合中存储数据时,只能存储对象
作用:
[1]作为和基本数据类型对应的类型存在,方便涉及到对象的操作
[2]包含每种基本数据类型相关的属性以及相关的操作方法

    String转Int:

包装类Integer的静态方法可以将字符串类型的数字“123”转换成基本整型变量n,它的实现语句是Interger.parseInt(“123”);

注意:1.此方法是静态方法,所以允许类名称直接调用。

         2此方法抛出异常,属于运行时异常。出现异常的情况:实参是字符串,此字符串如果包含非数字型字符,则会出现该异常。

String类型:----是一个表示字符串的类,使用final修饰,不能派生子类。存在很多方法操作字符串。(引用数据类型)

 String s ="a"+”b”+”c” 创建    1       个对象。

注意:String类使用连接符,如果字符串使用连接符+进行连接时,在JVM进行编译时会自动优化,把多个字符串连接成一个字符串,是在内部完成,并不是产生多个对象。

1.trim()方法:

  String类的trim()方法作用是去掉字符串左右两端的空格  

              -----trim()方法,表示只能去掉字符串左右两端的空格,中间部分的空格它无能无力。    

2.subString(int index, int end)方法:截取字符串,包括index不包括end。

实例:"hamburger".substring(4, 8) 返回的结果是“urge”//[0,1]取的是h

3.concat(String)方法:把指定的字符串连接到此字符转的结尾。

    注意:(1)如果字符串长度为0,进行调用此方法,返回的是新字符串。例如:String s =“”;//字符串长度为零--

                 s= s.concat(“abc”); // 连接字符串”abc”,返回的是”abc”

              (2)如果字符串为null,调用此方法,出现空指针异常。例如String s = null;  s= s.concat(“abc”);//出现异空指针常。

4.toUpperCase()方法:toUpperCase()方法,把字符串的字母字符全部变为大写

5.length()方法;求字符串的长度。注意:数组求长度是arr.length,集合求大小是size()方法。

String类中“==”比较和equals()方法比较:

      (1)如果使用比较运算符”==”比较的是引用数据类型,则他们比较的是对象在内存当中的地址值是否相同;如果比较的是基本数据类型,则他们比较的是各自所代表的具体的值,来判断是否相同。

      (2)equals(Object obj) 方法,String类重写了equals()方法,表示两个对象所包含的内容是否相同;不是比较的地址值

      (3)每通过一个new关键字,创建对象,都会重新在堆内存当中开辟空间,所以分配的引用地址值也不同。

      (4)如果字符串出现了一次之后,会在字符串常量池中进行存储,如果再出现,则字符串常量池中不会再开辟空间,而是引用一下即可。内存分析例子如下两图:

 可变字符串序列StringBuffer/StringBuilder:

    在不改变字符串内存地址的情况下,允许改变字符串的内容,java语言中存在这两个类,StringBuffer和StringBuilder。

注意:(1)都被final修饰的类,不能派生子类。

           (2)都可以表示字符串,都属于java.lang包中的类。

            (3)直接父类都是Object。

            (4)StringBuffer线程安全,效率低,StringBuilder线程非安全,效率高。

     String、StringBuffer、StringBuilder区别与联系。

答:联系: (1) 三者之间都可以表示字符串,(2) 三者都使用final修饰,都不能派生子类,同时他们的共同的直接父类:Object(3) StringBuffer和StringBuilder都是可变字符序列,底层数组结构都是char类型的数组,方法功能也很相似。

区别:

 String表示字符序列不可变,StringBuffer和StringBuilder表示字符序列可变。

StringBuffer:jdk1.0版,线程安全,但是效率低

StringBuilder:jdk1.5版,线程不安全,但是效率高

  String str=”bjsxt”;和String str= new String(“bjsxt”);的区别

答:相同点:两者都可以创建对象。

     不同点:String str = “bjsxt”;首先会在字符串常量池中进行查找,如果有,则不再创建, 反之进行创建,同时它没有在堆内存中进行创建,而是直接在字符串常量池中创建;

      String str = new String(“bjsxt”);它会在堆内存中创建对象,在字符串常量池中进行查找,如果存在直接引用即可。

日期类:

 Java.util.Date包含一个和它同名的子类,它就是java.sql.Date类。 父类提供了无参构造方法,子类没有无参构造方法。

DateFormat类:

    日期格式化类,可以实现字符串和日期类型之间的格式转换,其中将日期类型转换为指定字符串格式的方法名是format

  注意:(1)此类是一个抽象类,如果想实例化对象,需要借助子类完成。

     (2)此类只有一个子类,它就是SimpleDateFormat类,根据构造方法,传入日期格式,同时调用format方法,传入Date类型的实参。




Math类:

random()方法:

使用Math.random( )返回带正号的 double值,该值大于等于0.0且小于1.0。使用该函数生成[30,60]之间的随机整数的语句是(int)(Math.random()*31+30);

    随机产生数[a,b]的公式如下: (int)(Math.random()*(b-a+1)+a);注意:random方法的范围[0,1].......

         说明:a b都是整数类型,而且都表示闭区间,也就是包含a和b。

pow(x,y)方法:求x的y次方。

Enum类:

   JDK1.5后提供了enum关键字,用以定义枚举类。枚举类是一种特殊的类,可以有自己的属性、方法和构造方法。

   注意:  (1) 枚举类型是JDK1.5之后出现的新特性

               (2) 对于枚举最大的作用和体现:只能定义全局常量,可以代替接口中定义的常量

               (3) for-each语句中,数据类型可以是枚举类型

                        实例:for(枚举类型   变量名称:枚举名称.values()){

                                           System.out.println(变量名称);

                                   }

                (4)枚举是一种特殊的”类”,继承抽象类Enum,父类中存在很多的方法,允许子类 使用,发现父类的方法都是普通方法且使用final修饰。

                 (5)enum不能使用extends继承其他类,因为它默认继承了java.lang.Enum


猜你喜欢

转载自blog.csdn.net/qq_15273599/article/details/80098209