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

ゞ 浴缸里的玫瑰 2023-09-25 19:46 152阅读 0赞

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类相关代码如下所示:

  1. public class MathTest {
  2. public static void main(String[] args) {
  3. //Math类中的两个静态常量值
  4. System.out.println(Math.E);
  5. System.out.println(Math.PI);
  6. //Math类中常用的方法
  7. System.out.println(Math.abs(10));//10
  8. System.out.println(Math.abs(-10));//10
  9. //近似数相关方法
  10. //ceil(double a):返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。
  11. System.out.println(Math.ceil(3.3));//4.0
  12. System.out.println(Math.ceil(3.5));//4.0
  13. System.out.println(Math.ceil(3.9));//4.0
  14. //floor(double a)返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。
  15. System.out.println(Math.floor(3.1));//3.0
  16. System.out.println(Math.floor(3.5));//3.0
  17. System.out.println(Math.floor(3.9));//3.0
  18. //round(double a)返回最接近参数的 long。
  19. System.out.println(Math.round(9.1));//9
  20. System.out.println(Math.round(9.4));//9
  21. System.out.println(Math.round(9.5));//10
  22. System.out.println(Math.round(9.6));//10
  23. System.out.println(Math.round(9.9));//10
  24. //pow(double a, double b) 返回第一个参数的第二个参数次幂的值。
  25. System.out.println(Math.pow(3,4));
  26. //sqrt(double a) 返回正确舍入的 double 值的正平方根。
  27. System.out.println(Math.sqrt(4));//2.0
  28. //random() 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
  29. System.out.println(Math.random());
  30. //随机获取一个[0,10)之间随机整数
  31. int num =(int)(Math.random()*10);
  32. System.out.println(num);
  33. //总结:随机获取一个[nunm1,numn2)之间的整数(num2>num1):(int)(Math.random()*(num2-num1)+num1)
  34. //求最大值和最小值
  35. System.out.println(Math.max(25,10));
  36. System.out.println(Math.min(25,10));
  37. }
  38. }

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类的相关代码如下:

  1. public class StringTest {
  2. public static void main(String[] args) {
  3. String str1 = new String("sdfhsdfhsdkjhfskdjhfhwuehfzskdjhfksjdhf");
  4. //length():获取字符串的长度,字符串中字符的下标从0开始,所以最后一个字符的下标是字符串长度-1
  5. //数组长度获取:数组名.length; 集合长度获取:集合名.size() 字符串长度获取:字符串对象名.length()
  6. int length = str1.length();
  7. System.out.println("str1字符串长度:"+length);
  8. //equals():比较两个字符串的内容是否相同,这个equals()方法是String类重写了Object类中的equals()方法
  9. boolean result = str1.equals("sdfhsdfhsdkjhfskdjhfhwuehfzskdjhfksjdhf");
  10. System.out.println("两个字符串内容相同:"+result);
  11. System.out.println("----------------------------------------");
  12. //将字符串转换为大写或者小写
  13. String str2 = "abc";
  14. String str3 = "QWERT";
  15. System.out.println("str2:"+str2);
  16. System.out.println("str3:"+str3);
  17. //将字符串str2转换为大写
  18. String newStr2 = str2.toUpperCase();
  19. //将字符串str3转换为小写
  20. String newStr3 = str3.toLowerCase();
  21. //输出转换后的两个字符串
  22. System.out.println("newStr2:"+newStr2);
  23. System.out.println("newStr3:"+newStr3);
  24. }
  25. }

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类相关代码如下:

  1. public class StringBufferTest{
  2. public static void main(String[] args) {
  3. StringBuffer sb1 = new StringBuffer("qwertyuiop");
  4. System.out.println("sb1:"+sb1);
  5. StringBuffer sb2 = sb1.append("asdfg");
  6. System.out.println("sb1:"+sb1);
  7. System.out.println("sb2:"+sb2);
  8. sb1.append(true);
  9. sb1.append(100);
  10. char[] chs = {'b','m','q'};
  11. sb1.append(chs);
  12. System.out.println("sb1:"+sb1);
  13. //int capacity()返回当前容量。
  14. int capacity = sb1.capacity();
  15. System.out.println("当前容量:"+capacity);
  16. //StringBuffer delete(int start, int end) 移除此序列的子字符串中的字符。包含开始索引不包含结束索引
  17. sb1.delete(3,6);
  18. System.out.println("sb1:"+sb1);
  19. // StringBuffer insert(int offset, String str)将字符串插入此字符序列中。
  20. sb1.insert(3,"hello");
  21. System.out.println("sb1:"+sb1);
  22. //StringBuffer reverse() 将此字符序列用其反转形式取代。
  23. sb1.reverse();
  24. System.out.println("sb1:"+sb1);
  25. //String toString()返回此序列中数据的字符串表示形式。
  26. String string = sb1.toString();
  27. System.out.println(string);
  28. }
  29. }

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类是单线程的,不提供同步,理论上效率更高。

发表评论

表情:
评论列表 (有 0 条评论,152人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java--Math

    Math类   该类包用于基本数学运算,而且它是位于java.lang包下的,因此不需要导包,而且它没有构造方法,因为它的成员全部都是静态的。 常用方法 ![在这

    相关 java Math

    Math类中有三个与取整有关的方法:ceil、floor、round。ceil方法表示向上取整,Math.ceil(12.4)的结果为13,Math.ceil(-12.4)的结