数组和字符串(笔记)

目录

#数组

1.数组的基本概念

2.数组的声明、创建与初始化

3.数组的使用 

4.数组的遍历方式

5.数组常见问题

6.数组工具

#Java字符串

一、String类

二、StringBuffer类

三、StringBuilder类

四、String、StringBuffer、StringBuilder之间的差异与适用场


#数组

1.数组的基本概念

数组是一组类型相同的数据的集合;也就是说,数组中可以存储多个数据,但是这些数据的类型必须相同

2.数组的声明、创建与初始化

 

3.数组的使用 

 注意:

1)数组的索引是int类型,从0开始,索引最大值和数组长度始终差1;      

2)数组的长度是属性,String的长度是length();      

3)创建数组的时候必须指定数组的长度,而且一经定义则不允许改变;      

4)数组的长度虽然是5,但是在内存中实际给6个位置,另外一个存储的是长度5。

4.数组的遍历方式

很多时候我们需要对数组中的元素一个一个取出来使用,这个过程叫遍历;先简单理解数组遍历的循环语句,包括传统的for循环和增强for循环两种;

5.数组常见问题

6.数组工具

1)Java API中有一个类 Arrays,定义大量的sort方法,可以对数组中元素进行排序;

2)Java API中有一个类 Arrays,定义大量的binarySearch方法,可以对数组中元素进行查找;

 

注意:binarySearch利用二分查找法,所以数组必须是有序的 

#Java字符串

一、String类

java类库是Java语言提供的已经实现的标准类的集合,是Java语言的API,利用这些类库可以方便地实现各种功能

Java包分为二大类:包名是java开头的核心包            包名是javax开头的扩展包

java.lang包中,程序不需要引入此包,就可以使用包中的类         此包常用类:

这三个类的特点:都被final修饰,它们是不能被其他类继承的 

1.创建字符串的三种方式

1)String 变量名 = "值";

2)String 变量名 = new String("值");

3)char[] ch = new char[]{'字符1','字符2'};

     String 变量名 = new String(ch);

示例:

public class demo {
    public static void main(String[] args) {
        char[] ch = new char[]{'a','b','c'};
        String str = new String(ch);
        System.out.println(str);
        System.out.println(str.charAt(1));
    }
}


运行结果:
abc
b

2.String字符串特点

        字符串可以用两种方式赋值,且有一个非常重要的特征,即不可变性(immutable);

        不可变的意思是:一旦一个字符串被创建后,它的值就不能被修改

示例:

public class demo {
    public static void main(String[] args) {
        String s1="Hello";
        s1="World";
        System.out.println(s1);
    }
}

运行结果:
World

上述代码的执行过程如下:

注意:

        并不是把Hello改为了World,而是重新分配空间存储World;

        s1的值发生了改变,指向了新的空间; 

3.equals方法

equals方法 :比较内存地址(虚地址)

注意: String类 重写了equals方法比较属性值

            比较两个对象内容是否相等,需要重写equals方法。

注意:== 和 equals区别?                == 针对引用类型比较地址  

  • object中equals方法仍然比较的是地址  
  • String类中equals比较的是

二、StringBuffer类

Java语言中的有一个StringBuffer类,称为字符串缓冲区。

        StringBuffer类用于处理可变的字符串,StringBuffer对象的内容是可以扩充和个修改的,当生

成一个StringBuffer对象后,也可通过toString()方法将其转换为String对象。


StringBuffer类特点:

  • 长度是可变的
  • 接收不同类型数据,最终要转成字符串进行使用
  • 可以对字符串过进行修改

StringBuffer类之所以能进行多种修改字符的操作,原因就是它使用了缓冲区。

public class demo {
    public static void main(String[] args) {
        //构建一个StringBuffer的对象,初始容量为16个字符
        StringBuffer buffer = new StringBuffer("abc");
        System.out.println(buffer);
        //获取buffer对象的容量
        System.out.println(buffer.capacity());
        //将指定字符串追加到该字符串的末尾
        buffer.append("pp");
        System.out.println(buffer);
        //将字符串插入到字符串指定的下标位置
        buffer.insert(3,"好的");
        System.out.println(buffer);
    }
}


运行结果:
abc
19
abcpp
abc好的pp

证明:StringBuffer是一个可变的字符串类

三、StringBuilder类

java语言中的有StringBuilder类也代表可变字符串对象。

实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法也基本相同。

* StringBuilder 和 StringBuffer的区别:

* StringBuffer 线程安全,效率相比较低,StringBuilder 不安全,效率相对较高.

四、String、StringBuffer、StringBuilder之间的差异与适用场景

        Java语言中的还有一个StringBuilder类,与StringBuffer兼容,但是不保证线程同步;

三个类的区别:

  • String类是不可变的,对象一旦被创建,就不能被修改;可以使用=直接赋值,此时使用常量池;也可以使用new创建,不使用常量池;
  • StringBuffer是可变的,对象创建后,可以修改;必须使用new关键字;
  • StringBuilder是不同步的,在单线程情况下使用比StringBuffer高效;必须使用new关键字;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值