java面试题(一)

java面试题(一)

1,javac java命令
javac命令是将java源文件转化为.class文件;java命令是执行.class文件。

2,int i=20000000000000;报错吗?为什么?
会报错,定义int类型的i超出了int类型的范围,int类型4个字节,一个字节长度2的8次方,所以是2的32次方-1长度。

3, B(browser)/S(server) 跟C(client)/S(server)架构区别是什么?
B/S是浏览器服务器架构,C/S是客服端服务器架构,前者是直接可以通过浏览器进行访问,后者需要安装相应的客户端软件才能访问。

4,整数有哪几种类型?
整数型有byte,int,short,long 4种类型。

5,float f=3.14 ; 报错吗?为什么?
会报错,float是浮点型,3.14默认是double类型,所以会报错。

6, 3.14是什么类型?
3.14是double类型。

7,java中有哪些基本数据类型?(String不是基本数据类型)
byte,int,short,long,float,double,char,boolean

8,int a = 5 ;
int b = a++ + ++a +3 + a++ ;
System.out.println(a); 8
System.out.println(b); 22


9,short s = 1 ;s = s + 1 ;有错吗?为什么?short s = 1 ;s += 1 ;有错吗?为什么?
s+=1不会报错,相当于s=(short)(s+1); s=s+1会报错,1默认是int类型,与s相加自动转换为int类型,需要强转为short。

10, System.out.println(5>3?9:3.1);结果会打印出什么?9.0
三元表达式,5>3的结果为true,表达式的值取第一个,但是 其中一个值为double类型,所以结果会进行自动转换,int转换为double结果为9.0。

11,final的用法?
当修饰变量的时候表示常量 ;
当修饰方法的时候表示这个方法不能被复写 ;
当修饰类的时候表示不能被继承。

12,long a=1L,switch(a) 结果打印什么?
会报错,switch中的类型不能是long类型,只能是byte,int,char,short类型,jdk1.7中开始支持string类型。

13,给数组排序
冒泡排序:

int  [] arr={123,234,456,56,12};
for(int i=0;i<arr.length;i++){
      for(int j=i;j<arr.length-i-1;j++){
			int sum=0;
			if(arr[j]>arr[j+1]){
				sum=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=sum;
			}
      }
}

14,堆跟栈的区别
   (1)堆栈空间分配区别:
 ①栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
 ②堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
  (2)堆栈缓存方式区别:
 ①栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
 ②堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
   (3)堆栈数据结构区别:
 ①栈(数据结构):一种先进后出的数据结构。
 ②堆(数据结构):堆可以被看成是一棵树,如:堆排序;
  
15,java中可以多继承吗?
java中类不支持多继承,只能单继承,但是可以多实现。

16,重写跟重载的区别?
重载:方法名相同,参数列表不同。
重写:当子类继承父类需要根据情况重写父类方法,参数列表得和父类相同,返回值类型:基本数据类型:要和父类相同,引用数据类型:父类要大于子类

17,常量属性的赋值方式?

18,java的三大特性?
封装,继承,多态

19,说几个访问修饰符的区别?
public修饰符:同一个类中,同包不同类,不同包有继承关系,不同包不继承4种都可以修饰。
protect修饰符:同一个类中,同包不同类,不同包有继承关系3种可以修饰,不同包不继承的不能修饰。
(default)修饰符:同一个类中,同包不同类2种可以修饰;不同包有继承,不同包不继承的不能修饰。
private:同一个类中可以修饰;同包不同类,不同包有继承,不同包不继承的不能修饰。

20,请说出5个运行时异常?

  1. java.lang.NullpointerException(空指针异常)
  2. java.lang.ClassNotFoundException(指定的类不存在)
  3. java.lang.IndexOutOfBoundsException(数组下标越界异常)
  4. java.lang.ArithmeticException(数学运算异常)
  5. java.lang.ClassCastException(数据类型转换异常)

21,父类代码块、父类静态代码块、父类构造方法、子类代码块、子类静态代码块、子类构造方法,执行顺序如何?
父类静态代码块、子类静态代码块、父类代码块、父类构造方法、子类代码块、子类构造方法。

21,请说出5个常见的类?说出5个常见的包?
类:1.java.util.HashSet 2.java.util.Scanner 3.java.util.ArrayList 4.java.util.Random 5.java.util.HashMap
包:1.java.lang包 2.java.util包 3. java.io 包 4.java.sql 包 5.java.net包

22,final、finally、finalize区别?
final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。
finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码放在finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。
finalize是一个方法,属于Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调用,当我们调用System的gc()方法的时候,由垃圾回收器调用finalize(),回收垃圾。

23,==跟equals的区别?
==用在基本数据类型上比较的是值,用在引用数据类型上比较的是地址;
equals不能比较基本数据类型,用在引用数据类型上默认比较的是地址,一般会将方法重写,用于比较值。

24,ArrayList元素用循环全部删除。

//从最后一位开始删
for(int i = list.size()-1;i>=0;i--) {
			list.remove(i) ;
}
//从第一位开始删
for(int i=0;i<size;i++){
			 list.remove(0) ;
}
//迭代删除
Iterator iterator = list.iterator();
   while (iterator.hasNext()){
          String str = (String) iterator.next();
           iterator.remove();
 }

25, 浅谈一下String, StringBuffer,StringBuilder的区别?
String:定义字符串常量,字符串长度不可变。
StringBuffer:定义字符串变量,是线程安全的,执行速度慢。
StringBuilder:定义字符串变量,线程不安全,但执行速度块。

26、下面的代码将创建几个字符串对象?2或3
String s1 = new String(“Hello”);
String s2 = new String(“Hello”);

27、在java中,String s=new String(“xyz”);创建了几个对象?(B
A 1个 B 1个或2个 C 2个 D 以上都不对

28、下面的代码输出什么?
String s1 = new String(“abc”);
String s2 = new String(“abc”);
System.out.println(s1 == s2); false
System.out.println(s1.equals(s2)); true

29、下面的代码输入什么?
String s1 = “abc”;
String s2 = new String(“abc”);
s2.intern();
System.out.println(s1 ==s2); false

30、下面的代码输出什么?
String s1= “abc”;
String s2= “abc”;
String s3 = new String(“abc”);
String s4 = new String(“abc”);
System.out.println("s3 == s4 : "+(s3 == s4)); false
System.out.println("s3.equals(s4) : "+(s3.equals(s4))); true
System.out.println("s1 == s3 : "+(s1 == s3)); false
System.out.println("s1.equals(s3) : "+(s1.equals(s3))); true
System.out.println(s1==s2); true

31、下面的代码输出什么?
String str1 = “ab” + “cd”;
String str11 = “abcd”;
System.out.println("str1 = str11 : "+ (str1 == str11)); true

32、下面的代码输出什么?
String str2 = “ab”;
String str3 = “cd”;
String str4 = str2+str3;
String str5 = “abcd”;
System.out.println("str4 = str5 : " + (str4==str5)); false

33、下面的代码输出什么?
final String str2 = “ab”;
final String str3 = “cd”;
String str4 = str2+str3;
String str5 = “abcd”;
System.out.println("str4 = str5 : " + (str4==str5)); true

34、下面的代码输入什么?
String str6 = “b”;
String str7 = “a” + str6;
String str67 = “ab”;
System.out.println("str7 = str67 : "+ (str7 == str67)); false

35、下面的代码输入什么?
final String str8 = “b”;
String str9 = “a” + str8;
String str89 = “ab”;
System.out.println("str9 = str89 : "+ (str9 == str89)); true

36、String s1=”Hello”;
String s2=”hello”;
String s3=s1.toLowerCase();
String s4=s2.toLowerCase();
下面选项结果为true的是:C
A.s1 == s3
B.s2 == s3
C.s2 == s4
D.s3 == s4

37、Math.round(5.5)、Math.round(-5.5)分别输出多少?
6,-5 ,四舍五入的算法
38、
Integer i1 = 1 ;
Integer i2 = 1 ;
Integer i3 = 128 ;
Integer i4 = 128 ;
System.out.println(i1 == i2); true
System.out.println(i3 == i4); false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值