• 几道不错的面试题目,遇到一个写一个吧。


    1、先来一个关于值传递和引用传递的例题吧。

    public class MyClass { 
        static void aMethod(StringBuffer sf1, StringBuffer sf2) { 
            sf1.append(sf2); 
            sf2 = sf1; 
        } 
    
        public static void main(String[] args){ 
            StringBuffer sf1 = new StringBuffer("A"); 
            StringBuffer sf2 = new StringBuffer("B"); 
            aMethod(sf1,sf2); 
            System.out .println(sf1+ ":"+sf2); 
        } 
    } 
      

    不了解这块的可以自己先做一下在去看答案。


    解答:AB:B 

    聊一下这个值传递和应用传递吧。

    值传递:也就是说形参类型是基本数据类型。这些在传递的过程中传递的是那个变量的值。比如

    addNum(int a){

      a++;

    }

    如果在main函数中定义一个变量 

    main(){

      int a = 0;

      addNum(a);

      sysout(a);

    }输出结果会是1.

    引用传递:无非说的就是形参的数据类型是引用型。其实传递的是变量对应的内存地址。

    上述编程题目中使用的是stringBuffer就是引用传递。将是sf1和sf2传到aMethod中。在函数中sf1.append(sf2).其实内存地址中的数据已经改变了。而sf2 = sf1,只是将sf2指向了sf1指向的地址。然后函数结束,回到main中。

    这里要注意的是形参中的sf1和sf2与main中的sf1与sf2不是一个,这里是一个陷阱。如果不想被迷惑可以改变一下那个函数的写法,会更加清晰。

    static void aMethod(StringBuffer para1, StringBuffer para2) { 
            para1.append(para2); 
            para2= para1; 
    } 

    这个时候回到main中sf1指向的地址是变化后的也就是ab

    sf2指向的地址仍然是b。无变化。

    2、写一程序将”张三”, “李四”, “王五” 按汉字拼音首字母排序

    public class InterviewThree {
        public static void main(String[] args) {
            String [] strs = {"张三","李四","王五"};
            
            Comparator c = Collator.getInstance(Locale.CHINA);
            
            //升序
            Arrays.sort(strs,c);
            
            for(int i=0;i<strs.length;i++){
                System.out.println(strs[i]);
            }
        }
    }
  • 相关阅读:
    泛型
    内部类 及 匿名内部类
    BigDecimal
    JodaTime简介
    Java中IO流
    Spring的ApplicationEvent的使用
    swagger文档使用(springboot项目)
    http连接过程遇到的各种性能瓶颈
    http网络连接过程
    python中的TypeError: 'NavigableString' object is not callable错误
  • 原文地址:https://www.cnblogs.com/wangxiangstudy/p/5177239.html
Copyright © 2020-2023  润新知