Java中的Math类和String、StringBuffer、StringBuilder类

文章详细介绍了Java中的Math类,包括其提供的静态方法如绝对值、最大值、随机数生成等,并展示了相关代码示例。此外,文章还讨论了String类的基本概念、创建方法以及常用方法,如长度、比较、转换大小写和字符串连接。同时提到了在处理大量字符串操作时更高效的StringBuffer和StringBuilder类,并给出了它们的使用示例和特点。
摘要由CSDN通过智能技术生成

1、Math类

(1)java.lang.Math类提供了一些基本数学运算和几何运算的方法;

(2)此类中的所有方法都是静态的。这个类是final类,因此没有子类;

(3)Math类常见方法如下:

        1)static double abs(double a):返回double值的绝对值。例如,Math.abs(-3.5)返回3.5;

        2)static double max(double a,double b):返回两个double值中较大的一个。例如,Math.max(2.5,90.5);返回90.5;

        3)static double random():返回一个随机的double值,该值大于等于0.0且小于1.0。

(4)随机获取一个[num1,num2)之间的整数(num2>num1)公式:
                int num = (int)(Math.random()*(num2-num1)+num1);

Math类相关代码如下所示:

public class MathTest {

    public static void main(String[] args) {

        //Math类中的两个静态常量值
        System.out.println(Math.E);
        System.out.println(Math.PI);

        //Math类中常用的方法
        System.out.println(Math.abs(10));//10
        System.out.println(Math.abs(-10));//10

        //近似数相关方法
        //ceil(double a):返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。
        System.out.println(Math.ceil(3.3));//4.0
        System.out.println(Math.ceil(3.5));//4.0
        System.out.println(Math.ceil(3.9));//4.0

        //floor(double a)返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。
        System.out.println(Math.floor(3.1));//3.0
        System.out.println(Math.floor(3.5));//3.0
        System.out.println(Math.floor(3.9));//3.0

        //round(double a)返回最接近参数的 long。
        System.out.println(Math.round(9.1));//9
        System.out.println(Math.round(9.4));//9
        System.out.println(Math.round(9.5));//10
        System.out.println(Math.round(9.6));//10
        System.out.println(Math.round(9.9));//10

        //pow(double a, double b) 返回第一个参数的第二个参数次幂的值。
        System.out.println(Math.pow(3,4));

        //sqrt(double a) 返回正确舍入的 double 值的正平方根。
        System.out.println(Math.sqrt(4));//2.0

        //random() 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
        System.out.println(Math.random());
        //随机获取一个[0,10)之间随机整数
        int num =(int)(Math.random()*10);
        System.out.println(num);
        //总结:随机获取一个[nunm1,numn2)之间的整数(num2>num1):(int)(Math.random()*(num2-num1)+num1)

        //求最大值和最小值
        System.out.println(Math.max(25,10));
        System.out.println(Math.min(25,10));

    }
}

2、 String类概述

(1)在Java中,字符串被作为String类型的对象来处理。

(2)String类位于java.lang包中,默认情况下,该包被自动导入所有的程序。

(3)创建String对象的方法如下代码所示

                String s = "Hello World";

                String s = new String("Hello World");

(4)String类提供了许多有用的方法来操作字符串,比如获取字符串长度、对两个字符串进行比较、连接两个字符串以及提取一个字符串中的某一部分。

(5)字符串是一个字符序列,每一个字符都有自己的位置,字符串事实上也是一个字符数组,因此它的索引位置从0开始到(字符串长度-1)结束。

3、String类常用方法

(1)求字符串长度:length();

(2)字符串比较:equals(字符串2);

(3)忽略带小写的字符串比较:equalsIgnoreCase(字符串2);

(4)转换字符串中的英文字符为小写:toLowerCase();

(5)转换字符串中的英文字符为大写:toUpperCase();

(6)字符串的连接:concat(字符串2);

(7)字符串拆分:split(separator,limit);其中separator是可选项,表示根据匹配指定的正则表达式来拆分此字符串;如果匹配不上,则结果数组只有一个元素,即此字符串;limit可选项,该值用来限制返回数组中的元素个数。

关于String类的相关代码如下:

public class StringTest {

    public static void main(String[] args) {

        String str1 = new String("sdfhsdfhsdkjhfskdjhfhwuehfzskdjhfksjdhf");

        //length():获取字符串的长度,字符串中字符的下标从0开始,所以最后一个字符的下标是字符串长度-1
        //数组长度获取:数组名.length;        集合长度获取:集合名.size()           字符串长度获取:字符串对象名.length()
       int length =  str1.length();
       System.out.println("str1字符串长度:"+length);

        //equals():比较两个字符串的内容是否相同,这个equals()方法是String类重写了Object类中的equals()方法
       boolean result = str1.equals("sdfhsdfhsdkjhfskdjhfhwuehfzskdjhfksjdhf");
        System.out.println("两个字符串内容相同:"+result);

        System.out.println("----------------------------------------");

        //将字符串转换为大写或者小写
        String str2 = "abc";
        String str3 = "QWERT";
        System.out.println("str2:"+str2);
        System.out.println("str3:"+str3);
        //将字符串str2转换为大写
        String newStr2 = str2.toUpperCase();
        //将字符串str3转换为小写
        String newStr3 = str3.toLowerCase();
        //输出转换后的两个字符串
        System.out.println("newStr2:"+newStr2);
        System.out.println("newStr3:"+newStr3);
    }
}

4、使用StringBuffer类处理字符串

(1)StringBuffer类也是Java提供的用于处理字符串的一个类,而且它是比String类更高效的存储字符串的一种引用数据类型;

(2)StringBuffer类对字符串进行连接操作时,使用StringBuffer类可以大大提高程序的执行效率;

(3)如何使用StringBuffer类

  StringBuffer类位于java.util包中,是String类的增强类。StringBuffer类提供了很多方法可供使用。

                   StringBuffer 对象名 = new StringBuffer("字符串内容");

(4)常用的StringBuffer类方法

        1)toString()方法:将StringBuffer类型的字符串转换为String类型的对象;

        2)append(参数)方法:将参数连接到字符串后,可以将任何类型的值追加到字符串后;

        3)insert(位置,参数)方法:将参数插入到字符串指定位置后并返回。参数值可以是包括String的任何类型。

5、使用StringBuilder类处理字符串

(1)java.lang.StringBuilder是JDK 5.0版本新增的类,它是一个可变的字符序列;

(2)此类提供一个与StringBuffer类兼容的API,被设计用作StringBuffer类的一个简易替换,在大多数实现中,它比StringBuffer执行要快;

(3)使用StringBuilder类处理字符串的方法与StringBuffer类基本一样。

StringBuilder类相关代码如下:


public class StringBufferTest{

    public static void main(String[] args) {

        StringBuffer sb1 = new StringBuffer("qwertyuiop");
        System.out.println("sb1:"+sb1);

        StringBuffer sb2 =  sb1.append("asdfg");
        System.out.println("sb1:"+sb1);
        System.out.println("sb2:"+sb2);

        sb1.append(true);
        sb1.append(100);
        char[] chs = {'b','m','q'};
        sb1.append(chs);
        System.out.println("sb1:"+sb1);

        //int capacity()返回当前容量。
        int capacity = sb1.capacity();
        System.out.println("当前容量:"+capacity);

        //StringBuffer delete(int start, int end) 移除此序列的子字符串中的字符。包含开始索引不包含结束索引
        sb1.delete(3,6);
        System.out.println("sb1:"+sb1);

//        StringBuffer insert(int offset, String str)将字符串插入此字符序列中。
        sb1.insert(3,"hello");
        System.out.println("sb1:"+sb1);

        //StringBuffer reverse() 将此字符序列用其反转形式取代。
        sb1.reverse();
        System.out.println("sb1:"+sb1);

        //String toString()返回此序列中数据的字符串表示形式。
        String string = sb1.toString();
        System.out.println(string);

    }
}

6、String类、StringBuffer类及StringBuilder类对比

String、StringBuffer、StringBuilder这3个类在处理字符串时有各自的特点和实用场合,具体如下:

(1)String:字符串常量

        String是不可变的对象,在每次对String类型进行改变时其实都等同于生成了一个新的String对象,然后指向新的String对象,所以经常改变内容的字符串最好不要用String类型,因为每次生成对象都会对系统性能产生影响。

(2)StringBuffer:字符串变量

        StringBuffer是可变的字符串,在每次对StringBuffer对象进行改变时,会对StringBuffer对象本身进行操作,而不是生成新的对象,再改变对象引用。所以,在字符串对象经常改变的情况下,推荐使用StringBuffer类。

(3)StringBuilder:字符串变量

        JDK 5.0版本以后提供了StringBuilder类,它和StringBuffer类等价,区别在于StringBuffer类是线程安全的,StringBuilder类是单线程的,不提供同步,理论上效率更高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值