• Java基础(四):Java Number & Math 类、Character 类、String 类、StringBuffer & StringBuilder 类


    一、Java Number & Math 类:

    1、Number类:

      一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double 等。然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。

      这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。Number 类属于 java.lang 包。

      Integer x = 5;  当 x 被赋为整型值时,由于x是一个对象,所以编译器要对x进行装箱。

      x = x + 10;  然后,为了使x能进行加运算,所以要对x进行拆箱。

      java中的自动装箱与拆箱:

    /**
    * java中的自动装箱与拆箱
    * 简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型*/
    public class Number {
        public static void main(String[] args) {
            /**
            Integer i1 = 128;  // 装箱,相当于 Integer.valueOf(128);
            int t = i1; //相当于 i1.intValue() 拆箱
            System.out.println(t);
            */
            /**
            对于–128到127(默认是127)之间的值,被装箱后,会被放在内存里进行重用
            但是如果超出了这个值,系统会重新new 一个对象
            */
            Integer i1 = 200;
            Integer i2 = 200;
            /**
            注意 == 与 equals的区别
            == 它比较的是对象的地址
           equlas 比较的是对象的内容
            */
            if(i1==i2) {
                System.out.println("true");
            } else {
                System.out.println("false");
            }
        }
    }

    2、Math类:

      Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。

    3、Number & Math 类方法:

      xxxValue():将 Number 对象转换为 xxx 数据类型的值并返回。比如:floatValue():以 float 形式返回指定的数值

      compareTo():将number对象与参数比较

      equals():判断number对象是否与参数相等

      valueOf():返回一个 Number 对象指定的内置数据类型

      toString():以字符串形式返回值

      parseInt():将字符串解析为int类型

      abs():返回参数的绝对值

      ceil()/floor():对整形变量向左/右取整,返回类型为double型

      rint()/round():返回与参数最接近的整数,返回类型为double/返回一个最接近的int、long型值

      min()/max():返回两个参数中的最小值/最大值

      exp()/log():返回自然数底数e的参数次方/返回参数的自然数底数的对数值

      pow()/sqrt():返回第一个参数的第二个参数次方/求参数的平方根

      sin()/cos()/tan()/asin()/acos()/atan():求指定double类型参数的正弦值/余弦值/正切值

      toDegrees()/toRadians():返回角度/弧度

      random():返回随机数

    、Character 类:

      Character 类用于对单个字符进行操作,Character 类在对象中包装一个基本类型 char 的值:

    char ch = 'a';
    // Unicode 字符表示形式
    char uniChar = 'u039A'; 
    // 字符数组
    char[] charArray ={ 'a', 'b', 'c', 'd', 'e' };

      为内置数据类型char提供了包装类Character类。Character类提供了一系列方法来操纵字符。你可以使用Character的构造方法创建一个Character类对象,例如:Character ch = new Character('a');

      在某些情况下,Java编译器会自动创建一个Character对象。例如,将一个char类型的参数传递给需要一个Character类型参数的方法时,那么编译器会自动地将char类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱。

    // 原始字符 'a' 装箱到 Character 对象 ch 中
    Character ch = 'a';
    // 原始字符 'x' 用 test 方法装箱,然后返回拆箱的值到 'c'
    char c = test('x');

      Character类的方法:

      isLetter():是否是一个字母

      isDigits():是否是一个数字字符

      isWhiteSpace():是否是空格

      toString():返回字符的字符串形式,字符串的长度仅为1

    三、String 类:

       字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。

    1、创建字符串:

      和其它对象一样,可以使用关键字和构造方法来创建 String 对象。

      String 类有 11 种构造方法,这些方法提供不同的参数来初始化字符串,比如提供一个字符数组参数:

    public class StringDemo{
       public static void main(String args[]){
          char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'};
          String helloString = new String(helloArray);  
          System.out.println( helloString );//runoob
       }
    }
    //最简答的创建方式:
    String myName = "MyName";

      注意:String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。

    String s = "Google";
    System.out.println("s = " + s);
    s = "Runoob";
    System.out.println("s = " + s);
    //Google
    //Runoob

      从结果上看是改变了,但为什么说String对象是不可变的呢?原因在于实例中的 s 只是一个 String 对象的引用,并不是对象本身,当执行 s = "Runoob"; 创建了一个新的对象 "Runoob",而原来的 "Google" 还存在于内存中。

    2、字符串长度:

      用于获取有关对象的信息的方法称为访问器方法。String 类的一个访问器方法是 length() 方法,它返回字符串对象包含的字符数。

    3、连接字符串:

      String 类提供了连接两个字符串的方法:

      (1)concat() 方法

      (2)使用  "+"  操作符来连接字符串

    4、创建格式化字符串:

      我们知道输出格式化数字可以使用 printf() 和 format() 方法。String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。

    5、常用方法:equals()、equalsIgnoreCase()等

    四、StringBuffer 和 StringBuilder 类:

    1、  当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

      StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

    public class Test{
      public static void main(String args[]){
        StringBuffer sBuffer = new StringBuffer("My Name:");
        sBuffer.append("Guan");
        sBuffer.append(" Wen");
        sBuffer.append("feng");
        System.out.println(sBuffer);  
      }
    }//My Name:Guan Wenfeng

    2、StringBuffer 方法:

      public StringBuffer append(String s):将指定的字符串追加到此字符序列。

      public StringBuffer reverse():将此字符序列用其反转形式取代。

      public delete(int start, int end):移除此序列的子字符串中的字符。

      public insert(int offset, int i):将 int 参数的字符串表示形式插入此序列中。

      replace(int start, int end, String str):使用给定 String 中的字符替换此序列的子字符串中的字符。

      其他方法与String类的方法类似。

    3、 Java 中 StringBuffer 和 String 是有一定的区别的:

      String 是被 final 修饰的,他的长度是不可变的,就算调用 String 的concat 方法,那也是把字符串拼接起来并重新创建一个对象,把拼接后的 String 的值赋给新创建的对象,而 StringBuffer 的长度是可变的,调用StringBuffer 的 append 方法,来改变 StringBuffer 的长度,并且,相比较于 StringBuffer,String 一旦发生长度变化,是非常耗费内存的!

      String 长度大小不可变,StringBuffer 和 StringBuilder 长度可变;StringBuffer 线程安全 StringBuilder 线程不安全;StringBuilder 速度快。

  • 相关阅读:
    LeetCode-62. Unique Paths
    南大算法设计与分析课程课后习题(3)
    linux-2.6.18源码分析笔记---信号
    南大算法设计与分析课程复习笔记(4)L4
    南大算法设计与分析课程复习笔记(3)L3
    南大算法设计与分析课程复习笔记(2)L2
    南大算法设计与分析课程OJ答案代码(2)最大子序列和问题、所有的逆序对
    【zz】史上最全设计模式导学目录(完整版)
    gtest学习
    全文检索及ElasticSearch框架学习
  • 原文地址:https://www.cnblogs.com/goloving/p/7350589.html
Copyright © 2020-2023  润新知