Arrays / Array / String

最近刷算法题常用到数组列表字符串,发现有一些方法真的真的很好用,下面系统的整理一下。

Arrays

  1. copyOf(原数组,副本指定长度);复制指定数组,使副本具有指定长度,长度比原数组短时,截取,长则用0/null/false填充。

  2. copyOfRange(原数组,int from,int to);将数组指定范围赋值到新的数组。

  3. deepEquals(数组1,数组2);比较两个数组是否深层相等。
    equals(数组1,数组2);比较两个数组。

    equals和deepEquals区别:
    equals判断两个数组相等,若两个数组以相同顺序包含相同元素,则返回true否则返回false;deepEquals适用于任意深层次的嵌套数组。一维数组两者比较结果相同,二(多)维数组则只能用deepEquals来比较。

    equals和区别:
    先介绍
    :对于基本数据类型(byte,int,long,char,Boolean,double,short,float)双等号比较的是他们的值。当==用来比较类时,比较的是内存中的存放地址。
    equals:Java中所有的类都继承Object,Object中定义了equals方法,查看equals源代码:public boolean equals(Object obj) { return (this == obj); }故equals比较的也是内存地址。此外要注意的是,在String,Integer,Date这些类中equals有自身的实现方式,以String为例:查看源代码:
    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;
    }

		Student stu = new Student();
		Student student = new Student();
		System.out.println(stu.equals(student));//false
		String s1 = "ww";
		String s2 = "ww";
		System.out.println(s1.equals(s2));//true
		String s = new String("ww");
		String str = new String("ww");
		System.out.println(stu.equals(str));//false

字符串的缓冲池:String s1 = “ww”;当创建字符串时,程序会在String缓冲池中寻找相同值的对象若存在,则s1引用该对象(不再创建新的对象)。当用new创建字符串时,无论缓冲池是否有相同值的对象,系统都会在内存中创建新的对象。

  1. fill(数组,元素);将指定元素分配到给定数组中;
    fill(数组,int fromindex,int toindex,元素);将指定元素分配到给定数组的指定范围。
  2. sort(数组);排序
    sort(数组,int fromindex,int toindex);对数组指定范围进行排序。
  3. toString(数组);打印数组(一维)
    deeptoString(数组);打印二维数组
  4. asList();返回受指定数组支持的固定大小的列表
String[] str = {"a","b","c","d","e"};
ArrayList<String> list = new ArrayList<String>(Arrays.asList(str));

Array(不常用)

  1. get(数组,int index);返回指定数组中索引组件的值
  2. getLength(数组);数组长度;
  3. set(数组,int index,Object value);将给定数组索引处的值设置为value;

String

  1. charAt(int index);index处的char

  2. concat(String anotherstring);指定字符串连接到该字符串后面

  3. contains(CharSequence s);判断字符串中是否包含s

  4. indexOf(字符/字符串);字符或字符串第一次在此字符串中出现的索引
    indexOf(字符/字符串,int fromindex);从fromindex处开始搜寻
    lastIndexOf();最后一次出现

  5. isEmpty();

  6. replace(原字符/字符串,新字符/字符串);

  7. subString(int beginindex,int endindex);返回子字符串;

  8. toCharArray();字符数组;

  9. valueOf(给定类型数据);将其他类型的数据转换成String类型 ;

    int和String类型转换:
    ①int–>String :
    String str = String.valueOf(n);
    str = Integer.toString(n);
    str = “”+n;
    ②String–>int:(最好try…catch,字符串中可能不全是数字)
    int n = Integer,parseInt(str);
    n = Integer.valueOf(str).intValue();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值