首页 > 代码库 > Android面试题
Android面试题
1.Java问题
public class CharTest { String str=new String("good"); char[] ch={‘a‘,‘b‘,‘c‘}; public static void main(String args[]) { InterContents info=new InterContents(); CharTest ex=new CharTest(); ex.change(ex.str,ex.ch); System.out.println(ex.str+"and"); System.out.println(ex.ch); } public void change(String str,char ch[]) { str="test ok"; ch[0]=‘g‘;; } }
输出结果为:
goodand
gbc
注释:JAVA不同于C++,Java只有按值传递(基本类型就是通常说的按值传递,对象是传对象引用副本的值,所以也叫按值传递),ch之所以改变是因为它根据ch对象的引用制作了一个引用的副本传给函数,而数组里的元素的改变会引起ch这个数组对象的改变。另外你要是给函数不传数组,只传单个char,那么就和str一样不会改变了
2.实现单链表的反转
public class Node { Node next; int value; public Node(int value) { this.value =http://www.mamicode.com/ value; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } public int getValue() { return value; } public void setValue(int value) { this.value =http://www.mamicode.com/ value; } }
/** * * 实现单链表的反转 */ public static void main(String args[]) { CharTest charTest=new CharTest(); Node head=new Node(0); Node node1=new Node(1); Node node2=new Node(2); Node node3=new Node(3); Node node4=new Node(4); Node node5=new Node(5); head.setNext(node1); node1.setNext(node2); node2.setNext(node3); node3.setNext(node4); node4.setNext(node5); node5.setNext(null); Node head1=charTest.Reverse1(head); charTest.display(head1); } /** * * @param n 头结点 * 方法:输出链表的所有的value值 */ public void display(Node n){ if(n!=null){ System.out.println("输出的value:"+n.getValue()); display(n.next); } else{ System.out.println("输出的value为NULL"); } } public static Node Reverse1(Node head) { if (head == null || head.getNext() == null) { return head; } Node reHead = Reverse1(head.getNext()); head.getNext().setNext(head); head.setNext(null); return reHead; }
注释:递归反转的方法是copy来的
Android面试题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。