Java字符串与数组的学习笔记

本文深入探讨了Java中字符串的创建、存储机制及String、StringBuffer、StringBuilder的区别,解析了equals与hashCode方法的工作原理,同时对比了StringTokenizer的使用场景。此外,还详细介绍了数组的声明、初始化以及length属性与方法的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串

创建和存储的机制

String 的实现采用了Flyweight 的设计模式
当执行 String = "abc"时,在字符串常量池查找字符是否已经存在,
若不存在则创建这个字符串常量,并返回引用;
若存在则直接返回引用。
在这里插入图片描述

“==”、equals和hashCode有什么区别

  • “==” :比较两个基本类型的数据或两个引用变量(是否指向同一堆内存)是否相同
  • equals是Object类提供的方法,默认方法与"=="效果一致,可重写
  • hashCode()也是Object类的方法,默认方法返回的是对象在内存的地址所转换成的int值(堆内存)
  • equals 与 hashCode方法必须同时重写

String、StringBuffer、StringBuilder和StringTokenizer

  1. String类是不可变类,即每次修改都会创建新的对象,适合存放不频繁修改的变量。
  2. StringBuffer类属于可变类,适合需要频繁修改字符串的场景。
  3. String字符串进行修改操作的原理:
    1. 首先用原来的字符串创建一个StringBuilder对象
    2. 再调用append( )方法
    3. 最后调用toString()方法返回字符串。
  4. StringBuffer是线程安全的,StringBuilder不是线程安全但单线程效率更高。
  5. StringTokenzier是用来分割字符串的工具类。

数组

数组有自己的属性(如length),和方法(如clone),也可以用instanceof来判断,因此从这方面看,数组也是对象。

  • 声明
    type arrayName[ ] 或 type[ ] arrayName
    type既可以是基本类型,也可以是类
  • 初始化长度
    arrayName = new type[arraySize]
    arrayName = new type[ ] { e1, e2, e3 … }
  • 二维数组的声明
    type arrayName[ ][ ];
    type [ ][ ] arrayName;
    type[ ] arrayName[ ];

length属性与length()方法

  • length属性是数组的属性,存放数组的长度
  • length( ) 方法是String的方法,来获取字符串的长度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值