Java面试题集锦(一)

1.表单标签中method提交方式post和get的区别?

     (1) get方式提交:

           1)将用户的信息展示到了地址栏中(不安全)
           2)get方式提交,提交的文件大小有限制,不超过64kb
           
    (2) post提交方式:
           1)post提交方式不会将用户的信息显示到地址栏中
           2)该提交方式提交文件大小无限制!


2.  byte b1=3,b2=4,b;
     b=b1+b2;
     b=3+4;
     哪句是编译失败的呢?为什么呢?
  
 分析:
          b=b1+b2;编译失败:  byte,short,char之间相互不转换,一旦进行运算的,默认提升为一个int类型
         变量相加,是先看数据类型,最终相加后的结果是否在当前这个类型范围之内
          b=3+4; 编译正确:   常量相加,是运算,看当前结果是否在范围之内!

3.  short s=1;
     s = s+1;
 
    short s=1;
    s+=1;
  
 上面两个代码有没有问题,如果有,哪里有问题。
分析:
      第一个:默认类型提升,提升为int类型,不能用short去接收int类型的数据 ,
                 解决方案:强制类型转换: s = (short) (s + 1);
      第二个:正确.对于扩展的赋值运算符  s+=1 
                不等价于 :s = s +1 ;
                 等价于: s = (s)(s+1) ;
         即: 扩展的赋值运算符隐藏了强制类型转换!

4. 逻辑双与&& 和逻辑单与&的区别?

   (1)共同点:效果是一样的

   (2)逻辑双与&& ,如果左边的表达式如果是false,那么右边不执行(具有短路效果)
      逻辑双或|| :如果左边的表达式是true,那么右边不执行(具有短路效果)
      (实际开发中:逻辑双与&& 用的是最多的!)

5.  byte可以用在switch语句的表达式?
     long可以作为switch语句的表达式?
     String可以作为switch语句的表达式?
分析:
        switch语句后面的表达式:能跟的类型:byte,short,int,char
        jdk5以后,可以跟枚举
        jdk7以后,可以String类型

6.break和continue的区别?
 break:(1)表示中断,结束的意思,结束语句; (2)不能单独使用,一般在switch语句,或者循环语句中使用;(3)break执行之后,循环就结               束了
continue:(1)继续的意思,跳出当前循环,直接进入一次循环;(2)单独是不能使用的,在循环语句中使用多;(3)执行continue,立即进入               下一次循环

7.笔试题:
   for(int x=1; x<=10; x++) {
   if(x%3==0) {
    //在此处填写代码
   }
   System.out.println(“Java基础班”);
  }
  

  我想在控制台输出2次:“Java基础班“

   //break;

  我想在控制台输出7次:“Java基础班“

   //continue

 我想在控制台输出13次:“Java基础班“ 

  // System.out.println(“Java基础班”);


8. 成员变量和局部变量的区别

(1)在类中位置不同
   成员变量:类中,方法外
   局部变量:方法声明上,或者再方法定义中
(2)在内存中的位置不同:
    成员变量:堆内存
    局部变量:栈内存
(3)生命周期不同:
    成员变量:成员变量是随着类的加载而加载,随着类的消失而消失
    局部变量:随着方法的调用而存在,随着方法调用完毕而消失
(4)初始化值不同
    成员变量:初始化由系统默认初始化,
       对于成员变量,可以不给初始化值,由系统给,然后显示初始化;
    局部变量:定义一个局部变量,必须进行初始化,如果不初始化,无法使用(在使用之前进行初始化)

9.有一个学生类:Student  里面有一些属性,在测试类中创建学生类对象,经历了哪些过程?
Student s = new Student() ;
(1)通过测试类里面的main主程序进行加载,加载Student类(Student.class)
(2)Student s 先在栈内存开辟内存空间,创建一个学生对象,需要在堆内存申请堆内存空间
(3)通过无参构造方法给学生类的对象进行默认初始化
(4)通过给成员变量赋值的形式,给对象进行显示初始化
(5)显示初始化完毕,整个对象创建完毕之后,给对象进行内存空间地址值的分配
(6)通过地址值找对应的对象


猜你喜欢

转载自blog.csdn.net/xing_ran_ran/article/details/79808810