Java 学习(6):java Number & Math & String & 数组...常用类型

时间:2025-04-04 23:33:07

目录

--- Number & Math类

--- Character 类

--- String 类

--- StringBuffer 类

--- 数组

Number & Math类:

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

public class Test{
public static void main(String args[]){
Integer x = ; //当 x 被赋为整型值时,由于 x 是一个对象,所以编译器要对 x 进行 装箱
x = x + ; //然后,为了使 x 能进行加运算,所以要对 x 进行 拆箱
System.out.println(x);
}
} /* 装箱就是自动将基本数据类型转换为包装器类型;
拆箱就是自动将包装器类型转换为基本数据类型。*/

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

public class Test {
public static void main (String []args) {
System.out.println("90 度的正弦值:" + Math.sin(Math.PI/));
System.out.println("0度的余弦值:" + Math.cos());
System.out.println("60度的正切值:" + Math.tan(Math.PI/));
System.out.println("1的反正切值: " + Math.atan());
System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/));
System.out.println(Math.PI);
}
}

Math实例

其他常用的 Number & Math类方法

序号    方法与描述
xxxValue():将 Number 对象转换为xxx数据类型的值并返回。
compareTo():将number对象与参数比较。
equals():判断number对象是否与参数相等。
valueOf():返回一个 Number 对象指定的内置数据类型
toString():以字符串形式返回值。
parseInt(): 将字符串解析为int类型。
abs(): 返回参数的绝对值。
ceil(): 对整形变量向左取整,返回类型为double型。
floor(): 对整型变量向右取整。返回类型为double类型。
rint(): 返回与参数最接近的整数。返回类型为double。
round(): 返回一个最接近的int、long型值。
min(): 返回两个参数中的最小值。
max(): 返回两个参数中的最大值。
exp(): 返回自然数底数e 的参数次方。
log(): 返回参数的自然数底数的对数值。
pow(): 返回第一个参数的第二个参数次方。
sqrt(): 求参数的算术平方根。
sin(): 求指定double类型参数的正弦值。
cos(): 求指定double类型参数的余弦值。
tan(): 求指定double类型参数的正切值。
asin(): 求指定double类型参数的反正弦值。
acos(): 求指定double类型参数的反余弦值。
atan(): 求指定double类型参数的反正切值。
atan2(): 将笛卡尔坐标转换为极坐标,并返回极坐标的角度值。
toDegrees(): 将参数转化为角度。
toRadians(): 将角度转换为弧度。
random(): 返回一个随机数。

常用 Math 类方法

Character 类:Character 类用于对单个字符进行操作

Character 类在对象中包装一个基本类型 char 的值。然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情况。为了解决这个问题,Java语言为内置数据类型char提供了包装类Character类。

  • 将一个char类型的参数传递给需要一个Character类型参数的方法时,那么编译器会自动地将char类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱。
  • 转义序列:前面有反斜杠(\)的字符代表转义字符,它对编译器来说是有特殊含义的
    转义序列    描述
    \t 在文中该处插入一个tab键
    \b 在文中该处插入一个后退键
    \n 在文中该处换行
    \r 在文中该处插入回车
    \f 在文中该处插入换页符
    \' 在文中该处插入单引号
    \" 在文中该处插入双引号
    \\ 在文中该处插入反斜杠

    转义序列

    eg:System.out.println("访问\"教程!\"");  //结果: 访问"教程!"
  • Character 类的方法,常用的如下:
    isLetter(): 是否是一个字母
    isDigit():是否是一个数字字符
    isWhitespace():是否是一个空格
    isUpperCase():是否是大写字母
    isLowerCase():是否是小写字母
    toUpperCase():指定字母的大写形式
    toLowerCase():指定字母的小写形式
    toString():返回字符的字符串形式,字符串的长度仅为1

    Character 类常用方法

    其余可自行查看

String 类:在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串

  • 创建字符串最简单的方式如下:String greeting = "欢迎来到 String!";
  • 和其它对象一样,可以使用关键字和构造方法来创建 String 对象。String 类有 11 种构造方法,这些方法提供不同的参数来初始化字符串,比如提供一个字符数组参数:
    public class StringDemo{
    public static void main(String args[]){
    char[] helloArray = { 'w', 'e', 'l', 'c', 'o', 'm', 'e'};
    String helloString = new String(helloArray);
    System.out.println( helloString );
    }
    }

    StringDemo.java 字符数组参数

  • 注意:String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了.eg:
    String s = "Google";
    System.out.println("s = " + s); // 输出 Google s = "Glossary";
    System.out.println("s = " + s); // 输出 Glossary /*从结果上看是改变了,但为什么门说String对象是不可变的呢?
    原因在于实例中的 s 只是一个 String 对象的引用,并不是对象本身,当执行 s = "Runoob"; 创建了一个新的对象 "Runoob",而原来的 "Google" 还存在于内存中。*/
    Java 学习(6):java Number & Math & String & 数组...常用类型
  • String 类常用的方法:
    • 字符创长度 length(), eg: String str = "welc";  int len = str.length();
    • 连接字符串:string1.concat(string2); 或  string1 + shring2;
    • 创建格式化字符串:我们知道输出格式化数字可以使用 printf() 和 format() 方法。String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。eg:
      System.out.printf("浮点型变量的的值为 " +
      "%f, 整型变量的值为 " +
      " %d, 字符串变量的值为 " +
      "is %s", floatVar, intVar, stringVar); /*你也可以这样写:*/
      String fs;
      fs = String.format("浮点型变量的的值为 " +
      "%f, 整型变量的值为 " +
      " %d, 字符串变量的值为 " +
      " %s", floatVar, intVar, stringVar);
    •     char charAt(int index):返回指定索引处的 char 值。
      int compareTo(Object o):把这个字符串和另一个对象比较。
      int compareTo(String anotherString):按字典顺序比较两个字符串。
      int compareToIgnoreCase(String str):按字典顺序比较两个字符串,不考虑大小写。
      String concat(String str):将指定字符串连接到此字符串的结尾。
      boolean contentEquals(StringBuffer sb):当且仅当字符串与指定的StringButter有相同顺序的字符时候返回真。
      static String copyValueOf(char[] data):返回指定数组中表示该字符序列的 String。
      static String copyValueOf(char[] data, int offset, int count):返回指定数组中表示该字符序列的 String。
      boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束。
      boolean equals(Object anObject):将此字符串与指定的对象比较。
      boolean equalsIgnoreCase(String anotherString):将此 String 与另一个 String 比较,不考虑大小写。
      byte[] getBytes():使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
      byte[] getBytes(String charsetName):使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
      void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):将字符从此字符串复制到目标字符数组。
      int hashCode():返回此字符串的哈希码。
      int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
      int indexOf(int ch, int fromIndex):返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
      int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引。
      int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
      String intern():返回字符串对象的规范化表示形式。
      int lastIndexOf(int ch): 返回指定字符在此字符串中最后一次出现处的索引。
      int lastIndexOf(int ch, int fromIndex):返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
      int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引。
      int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
      int length():返回此字符串的长度。
      boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
      boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len):测试两个字符串区域是否相等。
      boolean regionMatches(int toffset, String other, int ooffset, int len):测试两个字符串区域是否相等。
      String replace(char oldChar, char newChar):返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
      String replaceAll(String regex, String replacement:使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
      String replaceFirst(String regex, String replacement): 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
      String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
      String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串。
      boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始。
      boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
      CharSequence subSequence(int beginIndex, int endIndex):返回一个新的字符序列,它是此序列的一个子序列。
      String substring(int beginIndex):返回一个新的字符串,它是此字符串的一个子字符串。
      String substring(int beginIndex, int endIndex):返回一个新字符串,它是此字符串的一个子字符串。
      char[] toCharArray():将此字符串转换为一个新的字符数组。
      String toLowerCase():使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
      String toLowerCase(Locale locale)
      :使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。
      String toString(): 返回此对象本身(它已经是一个字符串!)。
      String toUpperCase():使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
      String toUpperCase(Locale locale):使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。
      String trim():返回字符串的副本,忽略前导空白和尾部空白。
      static String valueOf(primitive data type x):返回给定data type类型x参数的字符串表示形式。

      常见 String 类方法

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("菜鸟教程官网:");
    sBuffer.append("www");
    sBuffer.append(".runoob");
    sBuffer.append(".com");
    System.out.println(sBuffer);
    }
    }

    StringBuffer 实例 Tese.java

  • Java 中 StringBuffer 和 String 是有一定的区别的:首先,String 是被 final 修饰的,他的长度是不可变的,就算调用 String 的 concat 方法,那也是把字符串拼接起来并重新创建一个对象,把拼接后的 String 的值赋给新创建的对象,而 StringBuffer 的长度是可变的,调用 StringBuffer 的 append 方法,来改变 StringBuffer 的长度,并且,相比较于 StringBuffer,String 一旦发生长度变化,是非常耗费内存的!
  • 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 中的字符替换此序列的子字符串中的字符。

    StringBuffer 类支持的主要方法

        int capacity():返回当前容量。
    char charAt(int index):返回此序列中指定索引处的 char 值。
    void ensureCapacity(int minimumCapacity):确保容量至少等于指定的最小值。
    void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):将字符从此序列复制到目标字符数组 dst。
    int indexOf(String str):返回第一次出现的指定子字符串在该字符串中的索引。
    int indexOf(String str, int fromIndex):从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
    int lastIndexOf(String str):返回最右边出现的指定子字符串在此字符串中的索引。
    int lastIndexOf(String str, int fromIndex):返回最后一次出现的指定子字符串在此字符串中的索引。
    int length():返回长度(字符数)。
    void setCharAt(int index, char ch):将给定索引处的字符设置为 ch。
    void setLength(int newLength):设置字符序列的长度。
    CharSequence subSequence(int start, int end):返回一个新的字符序列,该字符序列是此序列的子序列。
    String substring(int start):返回一个新的 String,它包含此字符序列当前所包含的字符子序列。
    String substring(int start, int end):返回一个新的 String,它包含此序列当前所包含的字符子序列。
    String toString():返回此序列中数据的字符串表示形式。

    以下方法和 String 类的方法类似

Java 数组:Java 语言中提供的数组是用来存储 固定大小 的 同类型元素

  • 声明数组,语法:dataType[] arrayRefVar; ,eg:
    double[] myList;   //首选的方法,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言
    /* 或 */
    double myList[]; //效果相同,但不是首选方法,该风格是来自 C/C++ 语言
  • 创建数组,语法:arrayRefVar = new dataType[arraySize]; //创建并赋值给变量 ,综合有以下方式:
    创建数组:arrayRefVar = new dataType[arraySize];
    声明和创建数组一句完成:dataType[] arrayRefVar = new dataType[arraySize];
    创建并初始化数组:dataType[] arrayRefVar = {value0, value1, ..., valuek};
    public class TestArray {
    public static void main(String[] args) {
    // 数组大小
    int size = ;
    // 定义数组
    double[] myList = new double[size];
    myList[] = 5.6;
    myList[] = 4.5;
    myList[] = 3.3;
    myList[] = 13.2;
    myList[] = 4.0;
    myList[] = 34.33;
    myList[] = 34.0;
    myList[] = 45.45;
    myList[] = 99.993;
    myList[] = ;
    // 计算所有元素的总和
    double total = ;
    for (int i = ; i < size; i++) {
    total += myList[i];
    }
    System.out.println("总和为: " + total);
    }
    }

    数组实例 TestArray.java

  • 处理数组,数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 foreach 循环。
    public class TestArray {
    public static void main(String[] args) {
    double[] myList = {1.9, 2.9, 3.4, 3.5}; // 打印所有数组元素
    for (int i = ; i < myList.length; i++) {
    System.out.println(myList[i] + " ");
    } // 计算所有元素的总和
    double total = ;
    for (int i = ; i < myList.length; i++) {
    total += myList[i];
    }
    System.out.println("Total is " + total); // 查找最大元素
    double max = myList[];
    for (int i = ; i < myList.length; i++) {
    if (myList[i] > max) max = myList[i];
    }
    System.out.println("Max is " + max);
    }
    }

    基本循环 for 实例--算总和,找最大值

    JDK 1.5 引进了一种新的循环类型,被称为 foreach 循环或者加强型循环,它能在不使用下标的情况下遍历数组。

    public class TestArray {
    public static void main(String[] args) {
    double[] myList = {1.9, 2.9, 3.4, 3.5}; // 打印所有数组元素:使用加强循环
    for (double element: myList) {
    System.out.println(element);
    }
    }
    }
  • 数组作为函数参数:
    public static void printArray(int[] array) {
    for (int i = ; i < array.length; i++) {
    System.out.print(array[i] + " ");
    }
    } printArray(new int[]{, , , , , }); //调用上述方法,写入 main() 函数中

    数组作为参数传递给方法

    public static int[] reverse(int[] list) {
    int[] result = new int[list.length]; for (int i = , j = result.length - ; i < list.length; i++, j--) {
    result[j] = list[i];
    }
    return result;
    }

    数组作为函数的返回值-数组倒序

  • 多维数组,创建:
    /* 1 直接为每一维分配空间,格式如下:*/
    type arrayName = new typ[arraylenght1][arraylenght2]; //type 可以为基本数据类型和复合数据类型,arraylenght1 和 arraylenght2 必须为正整数,arraylenght1 为行数,arraylenght2 为列数。
    eg: int a[][] = new int[2][3] /* 2 从最高维开始,分别为每一维分配空间,例如:*/
    String s[][] = new String[][];
    s[] = new String[];//为最高维分配引用空间,即最高维限制其能保存数据的最长的长度
    s[] = new String[]; //为最高维分配引用空间,即最高维限制其能保存数据的最长的长度
    s[][] = new String("Good"); //然后为其每个数组元素单独分配空间 
    s[][] = new String("Luck");
    s[][] = new String("to");
    s[][] = new String("you");
    s[][] = new String("!");
  • Arrays 类:java.util.Arrays 类 能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:
    • 给数组赋值:通过 fill 方法。
    • 对数组排序:通过 sort 方法,按升序。
    • 比较数组:通过 equals 方法比较数组中元素值是否相等。
    • 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
序号 方法和说明
1 public static int binarySearch(Object[] a, Object key)
用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。
2 public static boolean equals(long[] a, long[] a2)
如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
3 public static void fill(int[] a, int val)
将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
4 public static void sort(Object[] a)
对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。

Pre-article:Java 学习(5):修饰符 运算符

Next:java 日期时间 & 正则表达式