1:
public class Example { String str=new String("good"); char[] ch={'a','b','c'}; public static void main(String args[]) { Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.print(ex.str+"and"); System.out.print(ex.ch); } public void change(String str.char ch[]) { str="test ok"; ch[0]='g'; } } A good and abc B good and gbc C test ok and abc D test ok and gbc
选B:
str是引用数据类型,而字符数组是基本数据类型,二者存放在内存中的机制是不一样的!
public void change(String str.char ch[])
{
str="test ok";
ch[0]='g';
}
传入str,虽然把"test ok"强行赋给str,但是这里的str存放在新的栈内存中,和原来的str存放的地址不一样,所以你System.out.print(ex.str+"and");这里的输出还是调用原来内存中的str;
字符数组不一样,你声明一个字符数组之后,那个数组的位置就定死了,你调用change()之后,把原来的字符数组的第1个元素改为了g.这就是引用数据类型和基本数据类型的区别.
2:
String s = new String("xyz");创建了几个String Object?
常量池有xyz就创建一个句柄地址,否则创建两个一个句柄一个常量
3
如何启用service,如何停用service
启用service有两种方式:
Start方式,bind方式
Intent i = new Intent(getApplicationContext(),Server.class);
stopServer(i);
4
注册广播有几种方式,这些方式有何优缺点?Android引入广播机制的用意
roadcastReceiver用于监听被广播的事件 必须被注册,有两种方法:
1、在应用程序的代码中注册 注册BroadcastReceiver: registerReceiver(receiver,filter);
取消注册BroadcastReceiver: unregisterReceiver(receiver);
当BroadcastReceiver更新UI,通常会使用这样的方法注册。启动Activity时候注册BroadcastReceiver,Activity不可见时候,取消注册。
2、在androidmanifest.xml当中注册 <receiver>
<intent-filter> <
action android:name = "android.intent.action.PICK"/>
</intent-filter> </receiver>
使用这样的方法注册弊端:它会始终处于活动状态,毕竟是手机开发,cpu和电源资源比较少,一直处于活动耗费大,不利。
浙公网安备 33010602011771号