java字符串操作性能比较,Java 字符串比较

本文目录一览:

java 字符串数组 字符串 比较

比较的规则和数据库中的order by效果一致

实现代码如下

/**

* Name: 比较两个字符串大小

* null自动转为空,空字符串最大;

*

* @param first 要比较的第一个字符串;

* second 要比较的第二个字符串;

* @return first大于second返回正数;

* first等于second返回0;

* first小于second返回负数;

* 内部异常默认返回0;

* 返回值非固定值;

*/

public static int compareString(String first,String second){

int result = 0;

try{

//null转空

first = first==null?””:first;

second = second==null?””:second;

//预先记录字符串长度,避免反复读取

int firstLength=first.length();

int secondLength=second.length();

//处理含有空串的特殊情况

if(“”.equals(first) || “”.equals(second)){

//谁长谁小

result = secondLength-firstLength;

}else{

//临时空间,用来存放ascii码总和

int firstCount = 0;

int secondCount = 0;

//用纯运算得出两个数中较小的数,实在是bt

int minLength = (secondLength*(firstLength/secondLength) +

firstLength*(secondLength/firstLength))/(firstLength/secondLength +

secondLength/firstLength);

//按两个字符串中较短的位数去逐位截取,防止越界

for(int i=0;iminLength;i++){

//求ascii码和

firstCount+=first.substring(i,i+1).getBytes()[0];

secondCount+=second.substring(i,i+1).getBytes()[0];

//和不相等,说明已经比较出了大小

if(firstCount!=secondCount){

break;

}

}

if(firstCount==secondCount){

//长度长的大

result = firstLength-secondLength;

}else{

//总和大的大

result = firstCount-secondCount;

}

}

}catch (Exception e) {}

return result;

}

java如何比较字符串

“==”和equals方法究竟有什么区别?(这是我的个人总结,很详细)

答:==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。

如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。

equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:

String a=new String(“foo”);

String b=new String(“foo”);

两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。

在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input = …;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战的教学视频看看,里面就有大量这样的错误。记住,字符串的比较基本上都是使用equals方法。

如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object类的equals方法的实现代码如下:

boolean equals(Object o){

return this==o;

}

这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。

例:

public class compared {

public static void main(String[] args) {

String a = new String(“info”);

String b = new String(“info”);

//a和b是两个不同的变量,而info是这两个变量所只对象内存中所存放的值

String c = “info”; //这里的info是变量c内存中存储的值

String d = “info”;

int e = 1;

int f = 1;

System.out.println(a.equals(b)); //true 比较的是a和b两个对象中的内容是否一样

System.out.println(a == b); //false

System.out.println(“—————–“);

System.out.println(c.equals(d)); //true

System.out.println(c == d); //true

System.out.println(“—————–“);

System.out.println(e == f); //true

System.out.println(“—————–“);

T t1 = new T(3,”aaa”);

T t2 = new T(3,”bbb”);

T t3 = new T(3,”aaa”);

System.out.println(t1.equals(t2)); //false

System.out.println(t1.equals(t3)); //false

//为什么都是false,因为我们没有自定义equals方法,所以默认使用了Object的equals方法,而Object方法内部是使用==来比较的,因此此时你比较的永远都是两个变量是否指向同一对象,而这时都为新对象,所以为false。

}

}

疑问:String str = “…”;啥意思?

Java中比较字符串的内容是否相等内部是如何比较的?还有比较字符串与比较它的哈希值哪个快?

java中判断字符串是否相等有两种方法:1、用“==”运算符,该运算符表示指向字符串的引用是否相同,比如: String a=”abc”;String b=”abc”,那么a==b将返回true。这是因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存一份,所以a和b指向的是同一个对象;再比如:String a=new String(“abc”); String b=new String(“abc”);那么a==b将返回false,因为a和b指向不同的对象。2、用equals方法,该方法比较的是字符串的内容是否相同,比如:String a=new String(“abc”); String b=new String(“abc”); a.equals(b);将返回true。所以通常情况下,为了避免出现上述问题,判断字符串是否相等使用equals方法。

java中两个字符串如何比较大小

有三种方法实现

第一种直接用字符串类的compareTo方法:

  String t1=”20131011″;

  String t2=”20131030″;

  int result = t1.compareTo(t2);

第二种是把这个日期字符串转换成long:

  SimpleDateFormat sdf = new SimpleDateFormat(“yyyyMMdd”);

  Date d1 = sdf.parse(t1);

  Date d2 = sdf.parse(t2);

  long result = d1.getTime()-d2.getTime();

第三种是把日期字符串转换成整形int:

  int int1 = Integer.parseInt(t1);

  int int2 = Integer.parseInt(t2);

  int result = int1-int2;

注:result大于0,则t1t2;

result等于0,则t1=t2;

result小于0,则t1t2;

java几种切割字符串方法的性能比较

String[] 就是字符串数组的意思。

newstr是字符串数组的引用,newstr.length就是这个字符串数组的长度。

这个其实看API最好,

limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n – 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。

原创文章,作者:XOJN,如若转载,请注明出处:https://www.506064.com/n/142473.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
XOJNXOJN
上一篇 2024-10-11 11:43
下一篇 2024-10-12 09:43

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Python字符串宽度不限制怎么打代码

    本文将为大家详细介绍Python字符串宽度不限制时如何打代码的几个方面。 一、保持代码风格的统一 在Python字符串宽度不限制的情况下,我们可以写出很长很长的一行代码。但是,为了…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Python栈操作用法介绍

    如果你是一位Python开发工程师,那么你必须掌握Python中的栈操作。在Python中,栈是一个容器,提供后进先出(LIFO)的原则。这篇文章将通过多个方面详细地阐述Pytho…

    编程 2025-04-29
  • Python中将字符串转化为浮点数

    本文将介绍在Python中将字符串转化为浮点数的常用方法。在介绍方法之前,我们先来思考一下这个问题应该如何解决。 一、eval函数 在Python中,最简单、最常用的将字符串转化为…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29

发表回复

登录后才能评论