java字符串比较和jdkequals源码分析

Wesley13
• 阅读 589
 package com.cnse.demo;
/**
 * 比较两个字符串相等
 */
public class StringTest {
 public static void main(String[] args) {
  int checkLength = 0;
  String str="好人";
  String in="好人";
  if(str.equals(in)){
   System.out.println("equals比较::"+Boolean.valueOf(str.equals(in)));
  }
  char[] strarray=str.toCharArray();
  char[]inarray=in.toCharArray();
  for (int i = 0; i < inarray.length; i++) {
   for (int j = 0; j < strarray.length; j++) {
    if (inarray[i] == strarray[j]) {
     System.out.println("charArray比较::"+Boolean.valueOf(inarray[i] == strarray[j]));
     System.out.println("两个字符串相等");
     System.out.println(inarray[i] +":::::in::::测试字符串::"+strarray[j]);
     checkLength++;
     break;
    }
   }
  }
 }
}

//java的equeals源码分析     //考虑的比较全面  
public boolean equals(Object anObject) {
 //先考虑的是否是同一个对象
 if (this == anObject) {
        return true;
    }
 //不同的对象
    if (anObject instanceof String) {
        String anotherString = (String) anObject;
        //长度相同时
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            //使用的是i-- 把字符倒着比较
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                        return false;
                i++;
            }
            return true;
        }
    }
    return false;
}
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java判断字符串是否为数字或中文或字母
1.判断字符串是否仅为数字:1用JAVA自带的函数public static boolean isNumeric(String str){  for (int i  str.length();i0;){      if (!Character.isDigit(str.charAt(i))){
Wesley13 Wesley13
3年前
java8之lambda表达式(变量作用域)
通常,我们希望能够在lambda表达式的闭合方法或类中访问其他的变量,例如:package java8test;public class T1 {    public static void main(String args) {        repeatMessage("Hello", 20);
Wesley13 Wesley13
3年前
java递归算法+遍历磁盘文件
package com.cnse.io.ioDemo;import java.io.File;//java遍历磁盘下所有的文件 递归 recursionpublic class FlList {    public static void main(String args) {
Wesley13 Wesley13
3年前
Java程序设计总复习题50题
Java程序设计总复习题1、编写一个Java程序在屏幕上输出“你好!”。(p13,例11)    //programme name Helloworld.java  public class Helloworld {     public static void main(
Wesley13 Wesley13
3年前
JAVA 线程基本知识汇总--ThreadLocal 和 InheritableThreadLoc
package org.test;public class ThreadLocalTest {public static void main(String args) {User user  new User(new ThreadLocal<String());Book book 
Stella981 Stella981
3年前
BlockingQueue队列的使用
import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;public class BlockingQueueTest { public static void main(String args) 
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
CountDownLatch 计数栓
import java.util.concurrent.CountDownLatch;/  Created by zyBourn on 15/12/25. /public class Entity {    public static void main(String args)