java常用类

常用类

Object

equals方法:

源码分析:

/**
 * 判断两个对象是否相等
 * @param obj
 * @return
 */
public boolean equals(Object obj) {
    //返回(this:当前对象  ==  obj:参数对象)
    return (this == obj);
}

练习:

@Test
public void test(){
    //创建Object对象
    Object object = new Object();
    //创建Object对象
    Object object1 = new Object();

    //通过对象调用Object方法;
    // object与object1对象地址不同
    System.out.println(object.equals(object1));
  

}

hashCode方法:

源码分析

/**
 * 返回该对象的hash码值
 * @return
 */
public native int hashCode();

练习:

@Test
public void test(){
    //创建Object对象
    Object object = new Object();
    //创建Object对象
    Object object1 = new Object();

    //通过对象调用Object方法;
    // object与object1对象地址不同
    /**
     * equals:两个对象之间做判断
     *      底层使用 == ,比较两个对象的hash码值
     */
    System.out.println(object.equals(object1));


    //返回object对象的hash码值:1323468230
    System.out.println(object.hashCode());

    //返回object1对象的hash码值:1645995473
    System.out.println(object1.hashCode());

}

toString方法

源码分析

/**
 * 输出对象的具体信息
 * @return
 */
public String toString() {
    /**
     * getClass().getName():获取该对象的包.类名称
     * Integer.toHexString(hashCode()):输出对象的hash
     */
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

练习:

@Test
public void test(){
    //创建Object对象
    Object object = new Object();

    System.out.println(object.toString());

    //java.lang.Object@4ee285c6
    //java.lang.Object
    System.out.println(Integer.toHexString(hashCode()));

}

String,StringBuffer,StringBuilder

String:字符串常量(不可变的字符串),每次操作String对象都会创建出一个新的字符串对象,为了改变值的目的,消耗内存,效率不高;安全,

StringBuffer:字符串变量(可变字符串),

StringBuilder:字符串变量(可变字符串);

String

String是一个类,被final修饰的最终类,不能被继承

public final class String

String(字符串)的值存储到char类的数组中。

/**
* 被final修饰成为常量数组,值一旦定义好之后不能被修改
* private : 其他类无法访问该数组
* private final:保证数据的安全性
*/
private final char value[];

toString方法

/**
 * String重写父类中的toString方法
 * @return 返回当前对象数据
 */
public String toString() {
    return this;
}

charAt方法

源码分析:

/**
 * 返回索引处的char元素
 * @param index 索引
 * @return 数组对于的索引值
 */
public char charAt(int index) {
    //(index < 0):索引不能为负数
    //(index >= value.length):索引不能超过自身长度
    if ((index < 0) || (index >= value.length)) {
        //抛出异常(StringIndexOutOfBoundsException)
        throw new StringIndexOutOfBoundsException(index);
    }

    return value[index];
}

练习

@Test
public void test(){
    String string = "zhangsan";

    System.out.println(string.charAt(4));

}

concat方法

源码分析:

/**
 * 字符串拼接
 * @param str 为字符串
 * @return
 */
public String concat(String str) {
    //将参数字符串长度赋值给一个变量otherLen
    int otherLen = str.length();
    //判断长度等于0返回该对象
    if (otherLen == 0) {
        return this;
    }

    //将value数组的长度赋值给变量len
    int len = value.length;
    //将原来的数据以及长度赋值给一个新char数组buf[]
    char buf[] = Arrays.copyOf(value, len + otherLen);
    //将char数组的值转换为字符串
    str.getChars(buf, len);
    //创建新对象返回拼接字符串结果
    return new String(buf, true);
}

练习:

@Test
public void test(){
    String string = "zhangsan";

    System.out.println(string.concat("zhangsan"));

}

equals方法

源码分析:

/**
     * equals方法重写父类Object类的equals方法
     * 字符串与对象做比较
     * @param anObject 对象
     * @return
     */
    public boolean equals(Object anObject) {
        //this:当前对象 ==  anObject:参数中的对象,比较是是对象hash码值
        if (this == anObject) {
            return true;
        }

        //判断anObject是不是String的实例化对象
        if (anObject instanceof String) {
            //将anObject进行强转为String类型,交给anotherString
            String anotherString = (String)anObject;
            //字符串数组的长度赋值给变量n
            int n = value.length;
//            当前对象与参数中的值的长度作比较
            if (n == anotherString.value.length) {
                //将原数据复制给v1[]
                char v1[] = value;
                //将参数中的数据复制给v2[]
                char v2[] = anotherString.value;

                int i = 0;
                while (n-- != 0) {
                    //循环判断两个数组之间的每一个元素是否相等
                    if (v1[i] != v2[i])
                        return false;//如果不相等返回false
                    i++;
                }
                //循环结束没有问题返回true
                return true;
            }
        }
        return false;
    }

练习:

@Test
public void test(){
    String string = "zhangsan";

    System.out.println(string.equals("zhangsan"));


}

subString方法

源码分析

/**
 * 从字符串中截取一个子字符串
 * @param beginIndex 开始索引
 * @param endIndex 结束索引
 * @return
 */
public String substring(int beginIndex, int endIndex) {
    if (beginIndex < 0) { // 开始索引不能小于0,不能为负数
        throw new StringIndexOutOfBoundsException(beginIndex);
    }
    if (endIndex > value.length) { // 结束索引不能大于数组的长度
        throw new StringIndexOutOfBoundsException(endIndex);
    }

    //结束索引 - 开始索引 结果交给一个变量sublen
    int subLen = endIndex - beginIndex;
    if (subLen < 0) {//索引差不能为负数
        throw new StringIndexOutOfBoundsException(subLen);
    }

    /**
     * 核心
     */
    return ((beginIndex == 0) && (endIndex == value.length)) ? this
            : new String(value, beginIndex, subLen);

    /**
     * 三目运算符相当于if语句
     */
    if ((beginIndex == 0) && (endIndex == value.length)){//开始索引等于0 并且 结束索引等于最大长度,返回当前对象
        this;
    }else {
        new String(value, beginIndex, subLen);//返回新创建的String对象
    }
}

练习:

@Test
public void test(){
    String string = "zhagnsan";

    //substring:从字符串中截取一个子字符串
    System.out.println(string.substring(2, 6));
}
@Test
public void test(){
    String string = "zhagnsan";
    //toCharArray:将字符串转换为一个数组
    char[] a = string.toCharArray();

    System.out.println(Arrays.toString(a));
    //将字符串中字母转换为大写
    System.out.println(string.toUpperCase());
}
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值