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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

   ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------
黑马程序员——Java基础测试题

第1题:以下代码哪个是正确的?为什么?
  a. byte b = 1 + 1;     
  b. byte b = 1; b = b + 1;
c. byte b = 1; b = b += 1;   
d. byte b = 1; b = ++b;
答:选项a是对的,定义b为byte型,且值为2。
        选项b是错的,b+1的结果默认转换为int型,int型不能直接转换为byte型,需强制转换。
                        应改为:byte b=1;b=(byte)(b+1);
        选项c是对的,b+=1包含了一个隐藏的类型转换,相当于 b=(byte)(b+1);
        选项d是对的,b=++b也包含了一个隐藏的类型转换。
第2题:创建ArrayList对象,添加5个元素,使用Iterator遍历输出
[java] view plaincopy
<span style="font-size:18px;">import java.util.ArrayList;   
import java.util.Iterator;   
public class Test2     
{   
    public static void main(String[] args)   
    {   
        //创建ArrayList对象   
        ArrayList<String> al = new ArrayList<String>();   
        //对al集合添加5个元素   
        al.add("1");   
        al.add("2");   
        al.add("3");   
        al.add("4");   
        al.add("5");   
        //获取迭代器   
        Iterator<String> it = al.iterator();   
        //循环迭代器   
        while(it.hasNext())  //如果有下一个值,进入循环  
        {   
            //得到迭代器中下一个值  
            String el = it.next();   
            //输出结果  
            System.out.println(el);   
        }   
            
            
    }   
}  </span>  
        第3题:什么情况下适合用UDP协议,什么情况下适合用TCP协议?
          答:UDP: (1)UDP是一个无连接协议,传输数据之前源端和终端不建立连接。
                            (2)由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,
                                    因此一台服务机可同时向多个客户机传输相同的消息。
      
    (3)因无连接,是不可靠的协议。
   
    (4)UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
                            (5)UDP是面向报文的。
         
在有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。
           
主要用于视频会议聊天什么的,一些缺少点数据无关紧要,可靠性要求低,传输经济的应用。
     TCP: (1)建立连接,形成传输数据的通道。
                             (2)在连接中进行大数据传输。
                             (3)通过三次握手完成连接,是可靠协议。
                             (4)因为必须建立连接,所以效率会稍低。
      要用于数据下载,文件传输,可靠性要求高的应用。
  第4题:为什么需要配置path,什么时候需要classpath?
             答:在java中,用path配置,path则是先找当前目录,之后再去path环境变量里面目录去找.
                  
配置path是为了方便在任何目录下都可以执行所要执行的文件, 当我们运行javac.exe,如果我们没有配置话,
                  
我们要执行javac.exe的时候就需要每次输入其所在的目录, 但是如果我们配置了path则不需要再每次都输入其所在的目录,
                   此时便可以再任意一个目录下去执行javac.exe。   如果是java文件则用classPath配置.这样就可以再任意目录下去执行这个java文件.
           虚拟机在查找class文件时如果没有设置classpath会在当前目录查找.临时配置classpath时,如果设置classPath时写";"的情况下,
         
那么就会在当前目录下找该文件,之后再在classPath配置目录找要运行的文件,如果不加";"的话,只会在classPath中找。
         第5题:编程打印所有的3位质数,质数特点:只能被1和其本身整除
[java] view plaincopy
public class Test5  
{  
        public static void main(String[] args)   
        {  
                zhishu();  
        }  
        public static void zhishu()  
        {  
                //判断是否是质数。  
                //三位质数从100开始到1000结束。  
                for(int i = 100; i < 1000; i++ ) {   
                          
                        int factors = 0;   
                          
                        for(int j = 1; j < (i + 2)/2; j++ )   
                        {   
                                // 将 i 依次除以 1 到 [(i + 2)/2]   
                                // 计算其整除的次数   
                                if((i % j) == 0) factors++;                 
                        }   
                        // 如果只有一次整除,那么该数为素数   
                        if(factors < 2)     
                                System.out.println(i+"为质数");   
      }   
        }  
}  
第6题:数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
[java] view plaincopy
<span style="font-size:18px;">import java.util.Arrays;  
public class Test6 {  
        public static void main(String[] args) {  
                int arr[]={4,2,4,6,1,2,4,7,8};  
                System.out.println("原始数组:[4,2,4,6,1,2,4,7,8]");   
                System.out.println("去重复后的数组:"+Arrays.toString(repeat(arr))); //将去重后数组打印出来  
        }  
         
                public static int[] repeat(int [] arr){  
                boolean flag[] = new boolean[arr.length];/*定义一个和目标数组长度一样的boolean类型,此数组用作标示,用于获取不重复元素的个数的标志位</span><span style="font-size:18px; font-family: Arial, Helvetica, sans-serif;">*/</span>  
[java] view plaincopy
<span style="font-size:18px;">  
                for (int i = 0; i < flag.length; i++) {/*遍历数组,查找重复的元素。循环结束后,重复的元素对应的标志位置都为true。</span><span style="font-family: Arial, Helvetica, sans-serif;font-size:18px;">*/</span><span style="font-size:18px;">  
</span><span style="font-size:18px;">  
                   </span><span style="font-size:18px;font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-size:18px; font-family: Arial, Helvetica, sans-serif;">    if (flag[i]) //如果这个元素对应的标志位已被置为true,则返回循环继续检查下一个元素。</span>  
[java] view plaincopy
<span style="font-size:18px;">                                        continue;  
                        for (int j = i+1; j < flag.length; j++) {    //后边元素和此位置上的元素比较,  
                                if (arr[j]==arr[i]) {     //如果后边元素和前边元素相同,  
                                        flag [j]=true;   //则此重复元素对应的标志位置为true  
                                }  
                        }  
                }  
                  
                int count=0;    //计数器,记录不重复元素的个数  
                for (int i = 0; i < flag.length; i++) {    //算出不重复元素的个数,记为count,  
                        if (!flag[i]) {      //标志位依然为false的对应元素即为不重复的元素  
                                count++;  
                        }  
                }  
                  
                int index=0;  
                int [] arrNew = new int [count];        //定义新数组,元素个数为count。  
                for (int i = 0; i < arr.length; i++) {        //将所有不重复的元素存入新数组中  
                        if (!flag[i]) {  
                                arrNew[index++]=arr[i];  
                        }  
                }  
                  
                return arrNew;     //返回数组  
        }  
}</span>  
     第7题:用控制台程序倒着输出九九乘法表;输出结果按下图所示:
             1*9=9    2*9=18    3*9=27    4*9=36    5*9=45    6*9=54    7*9=63    8*9=72    9*9=81
              ……
             1*3=3   2*3=6   3*3=9
             1*2=2   2*2=4
             1*1=1
[java] view plaincopy
<span style="font-size:18px;">public class Test7   
{  
  
    public static void main(String[] args)  
    {            
        print99();//调用打印乘法表函数  
    }  
              
    public static void print99()//定义一个函数打印乘法表  
    {  
        for(int x=9;x>0;x--) //控制输出的行数   
        {  
            for(int y=1;y<=x;y++)//控制输出的列数  
            {  
                System.out.print(y+"*"+x+"="+x*y+"\t");  
            }  
            System.out.println();//打印完一行后换行  
        }  
    }  
}</span>  

7 个回复

倒序浏览
很有用,,火钳刘明
回复 使用道具 举报
学习ing........
回复 使用道具 举报
确定这是面试题不- -
回复 使用道具 举报
火钳留名啊
回复 使用道具 举报
很好!!!!!!!!!!!!!!!!!
回复 使用道具 举报
都是些基础的题啊。。。我只关心你说的获取黑马币的好机会。。是说水一下吗。。
回复 使用道具 举报
很好,感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马