字符串的比较和Math.random() 和Math.sqrt()方法

一、字符串的比较

在 Java 中,比较字符串的常用方法有 3 个:equals() 方法、equalsIgnoreCase() 方法、 compareTo() 方法。下面详细介绍这 3 个方法的使用。

1.equals() 方法

equals() 方法将逐个地比较两个字符串的每个字符是否相同。如果两个字符串具有相同的字符和长度,它返回 true,否则返回 false。对于字符的大小写,也在检查的范围之内。equals() 方法的语法格式如下:

str1.equals(str2);

str1 和 str2 可以是字符串变量, 也可以是字符串字面量。 例如, 下列表达式是合法的:

"Hello".equals(greeting)

下面的代码说明了 equals() 方法的使用

 String str1 = "abc";

 String str2 = new String("abc");

 String str3 = "ABC";

 System.out.println(str1.equals(str2)); // 输出 true

 System.out.println(str1.equals(str3)); // 输出 false

equals()与==的比较

理解 equals() 方法和==运算符执行的是两个不同的操作是重要的。equals() 方法比较字符串对象中的字符。而==运算符比较两个对象引用看它们是否引用相同的实例。

下面的程序说明了两个不同的字符串(String)对象是如何能够包含相同字符的,但同时这些对象引用是不相等的: 

String s1 = "Hello"; 

String s2 = new String(s1); 

System.out.println(s1.equals(s2)); // 输出true 

System.out.println(s1 == s2); // 输出false

变量 s1 指向由“Hello”创建的字符串实例。s2 所指的的对象是以 s1 作为初始化而创建的。因此这两个字符串对象的内容是一样的。但它们是不同的对象,这就意味着 s1 和 s2 没有指向同一的对象,因此它们是不==的。

2.equalsIgnoreCase() 方法

equalsIgnoreCase() 方法的作用和语法与 equals() 方法完全相同,唯一不同的是 equalsIgnoreCase() 比较时不区分大小写。当比较两个字符串时,它会认为 A-Z 和 a-z 是一样的。

下面的代码说明了 equalsIgnoreCase() 的使用:

 String str1 = "abc";

 String str2 = "ABC";

 System.out.println(str1.equalsIgnoreCase(str2)); // 输出 true

3.compareTo() 方法

通常,仅仅知道两个字符串是否相同是不够的。对于排序应用来说,必须知道一个字符串是大于、等于还是小于另一个。一个字符串小于另一个指的是它在字典中先出现。而一个字符串大于另一个指的是它在字典中后出现。字符串(String)的 compareTo() 方法实现了这种功能。

compareTo() 方法用于按字典顺序比较两个字符串的大小,该比较是基于字符串各个字符的 Unicode 值。compareTo() 方法的语法格式如下:

str.compareTo(String otherstr);

它会按字典顺序将 str 表示的字符序列与 otherstr 参数表示的字符序列进行比较。如果按字典顺序 str 位于 otherster 参数之前,比较结果为一个负整数;如果 str 位于 otherstr 之后,比较结果为一个正整数;如果两个字符串相等,则结果为 0。

提示:如果两个字符串调用 equals() 方法返回 true,那么调用 compareTo() 方法会返回 0。

 public static void main(String[] args) {

 String str = "A";

 String str1 = "a";

 System.out.println("str=" + str);

 System.out.println("str1=" + str1);

 System.out.println("str.compareTo(str1)的结果是:" + str.compareTo(str1));

 System.out.println("str1.compareTo(str)的结果是:" + str1.compareTo(str));

 System.out.println("str1.compareTo('a')的结果是:" + str1.compareTo("a");

结果:

str = A
str1 = a
str.compareTo(str1)的结果是:-32
str1.compareTo(str)的结果是:32
str1.compareTo('a')的结果是:0

二、Math.random() 和Math.sqrt()方法

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

1.Math.random()方法

Math.random()随机返回一个大于等于0.0,小于1.0的double类型的数据。

        double num1 =Math.random();
        System.out.println(num1);
        
        //我们通过一些转换,随机获取一个大于等于0.0,小于10.0的double类型数据
        double num2 =Math.random()*10;
        System.out.println(num2);
        
        //我们再通过一些转换,随机获取一个大于等于0,小于10的int类型的数据,也就是随机获取0-9之间的int类型的数据
        int num3 =(int)(Math.random()*10);
        System.out.println(num3);
        
        //我们再通过一些转换,随机获取一个大于等于19,小于31的int类型的数据
        int num4 =(int)(Math.random()*(31-19)+19);
        System.out.println(num4);
        
总结:随机获取一个[num1,num2)(num2>num1)之间的int类型的数据

     int result = (int)(Math.random()*(num2-num1)+num1);

2.Math.sqrt()方法

Math.sqrt()方法返回正确舍入的 double 值的正平方根。

练习15:求ax^2+bx+c=0方程的根。 a,b,c分别为函数的参数
 如果:b^2-4ac>0,则有两个解;b2-4ac=0,则有一个解;b2-4ac<0,则无解; 
 已知:
        x1=(-b+Math.sqrt(b2-4ac))/2a
        x2=(-b-Math.sqrt(b2-4ac))/2a
     
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入a的值:");
        double a=sc.nextDouble();
        System.out.println("请输入b的值:");
        double b=sc.nextDouble();
        System.out.println("请输入c的值:");
        double c=sc.nextDouble();
        double x1=(-b+Math.sqrt(b*b-4*a*c))/(2*a);
        double x2=(-b-Math.sqrt(b*b-4*a*c))/(2*a);
        if((b*b-4*a*c)>0){
            System.out.println("方程有两个解,x1="+x1+",x2="+x2);
        }else if((b*b-4*a*c)==0){
            System.out.println("方程有一个解,x1=x2="+x1);
        }else if((b*b-4*a*c)<0){
            System.out.println("方程无解"); 
        }
    }

}

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豪仔思密达

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值