4.5 字符串与数组

4.5 字符串与数组
4.5.1 new String(“abc”) 创建一个或者两个 常量区及堆区 要看原先常量区是否有原先有“abc”字符串
4.5.2
  • == 判断两个变量值是否相等 不适合判断对象  适合判断基本类型或引用
  • equals object对象提供的方法判断内容是否相等
  • hashCode 将地址转换成int
    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;
            int i=0;
            while(n--!=0){
                if(v1[i]!=v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}
4.5.3 
  • Character 用于单个字符串
  • String
    • 值不可变
    • 可以直接赋值初始化也可以构造函数初始化
    • 修改值时会调用StringBuffer方法
    • 由于值不可变(常量)所以线程安全
  • StringBuffer (字符串缓存区)
    • 值可变
    • 只能构造函数初始化
    • 线程安全 (使用synchronized同步)
  • StringBuilder
    • 与StringBuffer相似
    • 但线程不安全 
4.5.4 数组是对象 有属性(length)及方法(clone)可调用
4.5.5数组声明及初始化
  • 声明 type[] arrayName 或 type arrayName[] (不推荐)
  • 数组创建后会有初始值
  • 声明之后不会分配内存
  • arrayName = new type[arraySize] 分配内存的方法
  • 初始化方法 int[] a = new int[5] 或者 int[] a = {1,2,3,4,5}
  • 也可以分开写 
    • int[] a; a = new int[5];
    • int[] a ; a = new int[]{1,2,3,4,5};
  • 二维数组
    • 可以 int[][] a = new int[2][];  数组内可变长度
    • a[0] = new int[]{1,2,3};
    • a[1] = new int[]{1};
4.5.6
  • StringName.length() 获取字符串的长度
  • arrayName.length 获取数组长度
  • size 计算对象大小 

猜你喜欢

转载自www.cnblogs.com/Sungc/p/9258679.html
4.5