11-17 学习笔记

String

常见面试题

1.使用

package com.aiyou.constructor.demo3;

public class stringdemo2 {
    public static void main(String[] args) {
        //1.获取字符串的长度
        String s="黑马java";
        System.out.println(s.length());
//2.提取字符串中某个索引位置处的字符
        char c =s.charAt(1);
        System.out.println(c);
    //字符串的遍历
        for (int i = 0; i <s.length() ; i++) {
            char ch = s.charAt(i);
            System.out.println(ch);
        }
            //3.把字符串转换成字符数组,再进行遍历
            char[] chars = s.toCharArray();
            for (int j = 0; j <chars.length ; j++) {
                System.out.println(chars[j]);
            }
//4.判断字符串内容,内容一样就返回true
        String s1 =new String("黑马");
        String s2 =new String("黑马");
        System.out.println(s1 ==s2);//地址俩肯定不一样
        System.out.println(s1.equals(s2));
        //5.忽略大小写比较字符串内容
        String c1 ="34AeFG";
        String c2 ="34aEfg";
        System.out.println(c1.equals(c2));
        System.out.println(c1.equalsIgnoreCase(c2));
//6.截取字符串内(包前不包后的)
        String s3="Java是最好的编程语言之一";
        String rs =s3.substring(0,7);
        System.out.println(rs);
            //7.从当前索引位置一直截取到字符串的末尾
        String rs2= s3.substring(5);
        System.out.println(rs2);
        //8.把字符串的某个内容替换成新内容,并返回新的字符串对象给我们
        String y = "你真次";
        String rs3 =y.replace("次","*");
        System.out.println(rs3);
        //9.判断字符串中是否包括某个关键字
        String y1 = "java是最好的";
        System.out.println(y1.startsWith("java"));
        System.out.println(y1.startsWith("编程"));
        //10.判断字符串中是否以某个字符串开头。
        String rs4 ="段佳优";
        System.out.println(rs4.startsWith("段"));
        System.out.println(rs4.startsWith("段佳"));
        //11.把字符串按照某个指定内容分割成多个字符串,放到一个字符串数组中返回给我们
        String rs5 ="张无忌,周芷若,殷素素,赵敏";
        String[] names =  rs5.split(",");
        for (int i = 0; i < names.length ; i++) {
            System.out.println(names[i]);

        }
        


        }

    }

2.注意事项

第一条:string的对象是不可变字符串对象

每次试图改变字符串对象实际上是产生了新的字符串对象,变量每次都是指向了新
的字符串对象,之前字符串对象的内容确实是没有改变的,因此说String的对象是不可变的

第二条:只要是以“....”方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份;但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。

3.字符串的比较最好使用equal(),对于==,比较的不仅有内容,还有地址的比较,容易出bug。而基本数据类型的变量或者值应该用==比较。

Arraylist集合                  <所需数据类型>

构建ArrayList list=new ArrayList();


import java.util.ArrayList;

public class arraylistdemo1 {
    public static void main(String[] args){
       ArrayList<String> list = new ArrayList<>();
        list.add("黑马");
        list.add("鲁瑞怡");
        System.out.println(list);
        //2.在集合中的某个索引位置处添加一个数据
        list.add(1,"fighting");
        System.out.println(list);
        //3.根据索引获取集合中某个索引位置处的值
        String rs =list.get(1);
        System.out.println(rs);
        //4.获取集合的大小(返回集合中存储的元素个数
        System.out.println(list.size());
        //5.根据索引删除集合中的某个元素值,会返回被删除的元素值给我们
        System.out.println(list.remove(1));
        System.out.println(list);
        //6.直接删除某个元素值,删除成功会返回ture,反之
        System.out.println(list.remove("黑马"));
        System.out.println(list);
        list.add(1,"aiya");
        System.out.println(list);
        //,若有好几个相同的值,默认删除的是第一次出现的这个数据
        //7.修改某个索引位置处的数据,修改后会返回原来的值给我们
        System.out.println(list.set(1,"黑马程序员"));
        System.out.println(list);




    }
}

arraylist案例中

删除

1.错误,这样会出bug(从前往后边遍历边删除存在问题:可能会存在漏掉元素)

2.方法一(删除元素后,马上i--就可以了)

public class arraylistdemo2 {
    public static void main(String[] arys){
        ArrayList<String> list =new ArrayList<>();
        list.add("java");
        list.add("宁夏枸杞");
        list.add("黑枸杞");
        list.add("人字拖");
        list.add("特级枸杞");
        list.add("枸杞子");
        //1.方法一:每次删除一个数据后,就让i往左边退一步
        for(int i=0;i<list.size();i++) {
            String ele = list.get(i);
            if(ele.contains("枸杞")){
                list.remove(ele);
                i--;
            }
        }
        System.out.println(list);
    }

}

方法二(从后往前遍历,边遍历边删除)

public class arraylistdemo2 {
    public static void main(String[] arys){
        ArrayList<String> list =new ArrayList<>();
        list.add("java");
        list.add("宁夏枸杞");
        list.add("黑枸杞");
        list.add("人字拖");
        list.add("特级枸杞");
        list.add("枸杞子");
        //2.从集合的后面倒着遍历并删除
        for(int i=list.size()-1;i>=0;i--){
            String ele=list.get(i);
            if(ele.contains("枸杞")){
                list.remove(ele);
            }
        }
        System.out.println(list);
    }

}

注:判断含有的关键字方法 contains

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值