当前位置: 首页 > news >正文

java字符串

字符串构造

1.使用常量串构造

 String h1 = "hello";
        System.out.println(h1);

2.new对象

  String h2 = new String("hello");
        System.out.println(h2);

3.使用字符数组构造

  char[] array = {'h','e','l','l','o'};
        String h3 = new String(array);
        System.out.println(h3);

我们发现Sting类被final修饰并且不能继承,并且返现变量value被private修饰这表明,修改字符串并不能实现,而String是引用类型,表面上的修改字符串实际只是修改引用对象,真正不能修改的是String类。 

 String对象的比较

1.==比较

对于内置类型一般比较变量中的值,如果是引用类型则比较的是地址。

2.equals方法

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
//1.首先比较两者是否为同一个对象
        if (anObject instanceof String)

 {  //2.比较参数是否为Sting的子类
            String anotherString = (String)anObject;
            int n = value.length;
//3.比较两者长度大小
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
//4.根据asm来比较首个不同字符的大小
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

我们发现Sting类重写了父类的equal方法 

​​ String s6 = new String("Hello");
        String s7 = new String("world");
        String s8 = new String("Hello");
        String s9 = s6;
        System.out.println(s6==s7);
        System.out.println(s7==s8);
        System.out.println(s6==s9);
        System.out.println(s6.equals(s8));
        System.out.println(s6.equals(s7));

在equals中我们发现s6和s8返回true,我们发现两者的防止内容相同但对象却不同。

而s7和s6却是对象不同,内容也不同,返回false。

3.comparetoignorecase方法

我们通过控制台发现该方法返回值是整数,我们回到方法代码

该方法忽略大小写存在,大小写不受影响。

4.compareto方法

我们发现与上个方法输出值不同,该方法因为不忽略大小写的区别所以根据长度和asm表大小比较并返回差值,回到方法内部。

我们发现只返回不同的首字符差值,如果完全相同则返回大小差值。

字符串查找

 String s6 = new String("Hello");
        String s7 = new String("world");
        String s8 = new String("Hello");

1.charAt方法

该方法是返回改位置对应的字符。

2.indexOf方法

该方法返回该字符第一次出现的位置

3.lastIndex方法

该方法从后往前查找并返回该字符第一次出现的位置。

相关文章:

  • 【Linux】线程同步与互斥
  • 如何在PHP爬虫中处理异常情况的详细指南
  • unsigned类型与signed类型的区别介绍
  • NAS和网盘可以同步吗?
  • requestAnimationFrame 和定时器的含义,使用场景及区别
  • Unity AI 技术浅析(二)
  • C#程序加密与解密Demo程序示例
  • 计算机毕业设计SpringBoot+Vue.js智能家居系统(源码+文档+PPT+讲解)
  • 如何对数据库进行备份
  • 链表双指针经典习题
  • 为什么要开源?
  • lsblk命令linux查询设备信息
  • 深度学习入门指南
  • while-经典面试题实战
  • c++ 类成员指针及其与`std::bind`交互使用的简单说明
  • 使用 Docker 部署 BaGet 并推送 NuGet 包
  • 前端小食堂 | Day10 - 前端路由の时空裂隙
  • Java是值传递还是引用传递
  • 特征选择之特征重要性排序(基于树模型)
  • 如何用Kimi生成PPT?秒出PPT更高效!
  • 大宗商品交易平台招商/浙江seo公司
  • 做新闻类网站/拓客最有效方案
  • 哈尔滨高端品牌网站建设/百度推广客服电话24小时
  • 专做英文类网站/seo引擎搜索网站
  • 网站免费大全/搜索引擎优化百度
  • php可以做视频网站/营销策划公司 品牌策划公司