牛客网刷题之JAVA_2017.3.21

1.java语言中的几种数组复制方法效率排列顺序:System.arraycoppy>clone>copyof>for循环逐一复制。


2.如果希望监听TCP端口9000,应该怎样创建socket?

A.new Socket("localhost",9000);

B.new ServerSocket(9000);

C.new Socket(9000);

D.new ServerSocket("localhost",9000);

答案:选择B 因为监听端口是服务器端 所以排除AC 根据构造方法ServerSocket(int port)选择B


3.选择输出结果:

package algorithms.com.guan.javajicu; 
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.test okandabc
B.test okandgbc
C.goodandabc
D.goodandgbc

正确答案:D
解释:
java 中String是 immutable的,也就是不可变,一旦初始化,其引用指向的内容是不可变的。

也就是说,String str = “aa”;str=“bb”;第二句不是改变“aa”所存储地址的内容,而是另外开辟了一个空间用来存储“bb”;同时由str指向

原来的“aa”,现在已经不可达,GC时会自动回收。

因此String作为参数传进来时候,str= "test ok"; 实际给副本引用str指向了新分配的地址,该地址存储“test ok”。

因此,原先的str仍然指向“good”
区分基本数据类型和引用数据类型
基本数据类型:值传递
引用数据类型:引用传递  数组,类和接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值