A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 大蓝鲸小蟀锅 于 2018-8-27 10:29 编辑

        1.截取字符串返回的地址值一样吗?
        
                返回的是一个新的字符串,所以和之前的字符串的地址值是不一样的.
               
        2.StringBuilder 适合在什么时候用?
        
                StringBuilder的作用:对字符串的操作,字符串的一个缓冲.
               
                在操作字符串的时候,比如反转,我们用字符串操作:1.会产生很多垃圾(提供效率,对代码优化),
               
                如果说我想把很多个字符串对象,拼接成一个字符串,这个时候会使用StringBuilder
        
        
        
        3.StringBuilder操作完字符串后一定要转回String类型吗?
        
                一般都需要,因为我们最终是为了操作字符串.虽然说StringBuilder也是用来操作字符串的但是它和String并不是一个对象
               
                我们在使用的时候,一般都是对String操作.使用StringBuilder最要是为了简化操作(提高效率).在使用完成之后,还需要转换
               
                String类型的字符串.
               
        
        4. String作为泛型的集合ArrayList里面的年龄可以存储int类型吗?
        
                不可以,因为泛型的类型是不支持的.
               
        
        5.ArrayList 容器有上限么?
        
                没有,可以添加任意的元素个数.
               
        6.ArrayList 中有理论值?
                默认是 16;
               
                ArrayList集合的底层是用数组实现的.最终我们把元素是添加到数组中.数组的长度是固定的.
               
               
        7.String类 有时候它类型的对象都是同一个内容,视频中刘易老师却常说内容一样
                           就好像他们都是同一个对象一样,有点不理解他的意思 有的对象在堆内存有的在方法区,
                           虽然最后都指向方法区里的
                        
               
                 String str1 = new String("abc");执行的是堆内存,"abc"其实是存储在方法区的常量池中的.
                        
                 String str = "abc";执行的是方法区中的常量池
                 
        8.现在:ArrayList<String>-元素
                        String--对象 即表示个体---(并列元素姓名,年龄)
                        如果表示国家-----省-----市-----县-----个体(姓名,年龄...)如何写集合类?(即ArrayList有类似三维至n维数组的吗?)
                                 
                                         
        9.怎样才能让String形式参数的改变直接影响实际参数。               

                定义一个有返回值类型的方法,返回的结果,直接复制给原有字符串.
               
                虽然String是一个引用数据类型,但是他是一个常量,在作为参数传递的时候和基本数据类型是一样的.
               
        10.如何遍历集合长度固定的字符串(长度为5的字符串)
        
                如果变量集合: 通过 集合中size(),get(int index);
               
                ArrayList<String> list = new ArrayList<String>();
               
                list.add("heima");
               
                //1.变量集合
                //2.做判断找到想要找到元素
                String str = get(0);
                //if(str.equals("heima")){
                if(str.length == 5){
                        char[] arr = str.toCharArray();
                        for(int i = 0; i < arr.length();i++){
                                
                        }
                        
                }
               
        11. String s1="a";  // 在定义常量池中的
                String s2=s1+"b"; //因为在里面有变量s1.
                //在堆中操作的:
                        //会在堆中创建一个StringBuilder对象        
                        //第一步: append(s1);
                        //第二步: append("b")
                        //第三步:将到的StringBuilder对象通过 toString()方法转换成String对象.赋值给 s2;
                        
                String s3="a"+"b";//常量优化机制
                System.out.println(s2=="ab");
                System.out.println(s3=="ab");
                第一个打印为什么为false,第二个打印为true?
                                         
                 
        12.ArrayList<String> array  用System.out.println( array);打印的时候为啥结果直接是值,而不是地址值?可
                是ArrayList<Student> student 直接打印的则是地址值。是因为前者有系统默认的toString方法,后者没有么?
               
               
                如果你打印的是一个对象,而且该对象打印出来并不是一个地址值,而是一个带有属性值的字符串.那么该类定然是重写了Object类中的toString()方法.
               
                因为在打印的过程中,会自动调用该方法.
               
               
               
        13.能否创建一个集合,可以容纳不同数据类型的元素
        
                可以,在定义泛型的时候,可以定义Object类
               
                或者可以把泛型给省略.

        14.有一类数据
                        例{heima,shanghai,wuhan}
                        如何把字符串中的带h的取出然后去除h(或者在h后面添加某些字符),再重新放回数组中        
               
                String[] arr = {heima,shanghai,wuhan};
                //1.对数组进遍历
               
                for(int i = 0; i < arr.length; i++){
                        String str = arr;
                        int index = -1;
                        index = str.indexOf("h");
                        arr = str.substring(index + 1);
                }
               
        15.为什么创建一个对象先键盘录入整数无法再录入字符串?
        
                a.创建一个Scanner对象
                        Scanner sc = new Scanner(System.in);
                        //如果我们想录入一个字符串
                        String line = sc.nextLine();
                        //再录入一个int类型
                        
                        int i = sc.nextInt();
                        
                        //无论是你录入的那种数据类型,结束标志是什么? 我们会点击回车键.点了回车键电脑做了哪些动作, 它输入了一个命令
                        
                        //这个命令让 键盘录入认为此行已经结束了:  \r\n
                        
                        // \r\n 只是一个命令,不用来输出到控制台,但是如果是字符串会将这个命令吸收.
                        
                        //但是如果是一个int类型,只能用来操作int类型,如果去把\r\n吸收,会留着录入行中.
                        
                        //如果下一个录入是 nextLine, 会把之前int留下来的\r\n给吸收,nextLine遇到\r\n就证明该行已经结束.
                        
                        
        16."=="和equals有什么相同点和不同点(面试)
        
                ==:是关系运算符,可以用来做比较.
                        
                        如果是基本数据类型,比较的是值
                        
                        如果是引用数据类型,比较的是地址值.
                        
                equals:是String类中的方法,只有对象才能够调用该方法.
               
                                是用来比较两个字符串的内容是否相同.
                                
                                
                        String str = new String("abc");

                        Stirng str1 = "abc";
                        
                        用str == str1比较返回的肯定是false;
                        
                        str.equals(str1): 只要内容相同返回的就是true;
                                
                       
               
        
        

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马