Common(基本语法和公共类)面试题

 基本语法和公共类
1、请写出Java中的数据类型划分及默认值。 基本数据类型 
Java的数据类型可以划分为4大类:整数,浮点数,字符型,布尔型。其中整数可以划分为:byte,short,int,long.浮点数可以划分为float,double. 
数据类型分为|:
? 基本数据类型:
|- 数值型:byte(1个字节8位)、、short(2个字节16位)、 、int(4个字节32位)、、long(4个字节32位)、,默认是0
|- 浮点型:float(8个字节64位)、double(8个字节64位),默认是0.0
|- 字符:char,默认是“\n0000” (2个字节16位)、
|- 布尔:boolean,默认是false  (1个字节8位)、、
? 引用数据类型:默认值是null
|- 数组:
|- 类:
|- 接口:
2: break只能跳出当前循环,如果想跳出多重循环,可以设置一个标号。

3、面向对象的特征有哪些方面
1).抽象:
 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2).继承:
 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3).封装:
 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4.) 多态性:
 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
4 、作用域public,private,protected,以及不写时的区别
答:区别如下:
作用域           当前类       同一package  子孙类       其他package
public            √              √                  √             √
protected        √              √                  √             ×
friendly          √              √                   ×            ×
private           √              ×                   ×            ×
不写时默认为friendly

5、Java有没有goto?
java中的保留字,现在没有在java中使用。

6、静态变量和实例变量的区别?
static i = 10; //常量
   class A a;  a.i =10;//可变

7、String是最基本的数据类型吗?
 基本数据类型包括byte、int、char、long、float、double、boolean和short。
 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类

8、float型float f=3.4是否正确?
答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4

9、int 和 Integer 有什么区别
 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。
原始类型   封装类
boolean  Boolean
char  Character
byte  Byte
short  Short
int  Integer
long  Long
float  Float
double  Double
 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。

10、String 和StringBuffer的区别
 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers来动态构造字符数据。
答:STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法

11、&和&&的区别。 
    &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。

12、简述 条件操作 ( &,|,^)与逻辑操作(&&,||)的区别。
 区别主要答两点:
a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
b.逻辑操作不会产生短路
 

13、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 
     short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
     short s1 = 1; s1 += 1;(可以正确编译)

14、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 
     Math.round(11.5)==12
    Math.round(-11.5)==-11
    round方法返回与参数最接近的长整数,参数加1/2后求其floor.

15、String s = new String("xyz");创建了几个String Object? 
    两个  一个是“xyx”,一个是指向“xyz”的引用对象s。

16、数组有没有length()这个方法? String有没有length()这个方法?
 数组没有length()这个方法,有length的属性。String有有length()这个方法。

17、是否可以继承String类?   String类是final类故不可以继承。

18、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
 switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

19、编程题: 用最有效率的方法算出2乘以8等於几?     2 << 3

20、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
     不对,有相同的hash code。

21、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 
 是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。

22、char型变量中能不能存贮一个中文汉字?为什么? 
 能够定义成为一个中文的,因为java中以unicode编码,一个char占2位16个字节,所以放一个中文是没问题的

23、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以。必须只有一个类名与文件名相同。

24、是否可以从一个static方法内部发出对非static方法的调用?
不可以,如果其中包含对象的method();不能保证对象初始化.

25、写clone()方法时,通常都有一行代码,是什么?
Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。

26、在JAVA中,如何跳出当前的多重嵌套循环? 用break; return 方法。

27:  exit, continue,break,return的区别

1): break  :强行退出循环。如:for(i=1;i<=10;i++){
          if(i=6)break;
          printf("%d ",i);}
打印结果为:1 2 3 4 5 。

2): continue:终止该语句后面的语句,继续该循环。
如:for(i=1;i<=10ii++){
                     if(i=6)continue;
                     printf("%d ",i);}
打印结果为:1 2 3 4 5  7 8 9 10。

3)exit(0)表示整个程序正常退出, exit(1)/exit(-1)表示整个程序异常退出
4)return是当前函数返回,那就是退回到上一层调用处继续运行下面的代码,当然如果是在主函数main, 自然也就结束当前进程了。
return也可以用于void无返回值的函数中,就是结束这个函数运行,从调用处开始执行下一段代码。
return 表达式或值 ;一般用于带参数的函数,将表达式或值返回到调用处并退出这个函数的执行。从汇编语言的角度来说就是传送一个值到预定的寄存器或内存空间,并将CPU运行的相关寄存器内容出栈,返回调用处开始执行下一条指令
5)break跳出此循环   (CPU直接结束这一个循环,运行下面的代码)
6)continue 跳出本次循环,进入下一次循环.(CPU行还在执行这个循环)

28、说出一些常用的类,包,接口,请各举5个
常用的类:BufferedReader  BufferedWriter  FileReader  FileWirter  String  Integer
常用的包:java.lang  java.awt  java.io  java.util  java.sql
常用的接口:Remote  List  set  Map  Document  NodeList 

29 : public class Test2{
    public static void main(String[] args) {
        Float a = new Float(3.4);
        System.out.println(a.SIZE);
        a = new Float(34000);
        System.out.println(a.SIZE);   //  32
    }
}
让我们来看看此程序会输出什么呢?
我们先来看看JDK的解释吧.
public static final int SIZE
The number of bits used to represent a float value.
意思是说:通常去描述一个float值的位数.
这个是一个常量,来看看源码吧:
 public static final int SIZE = 32;
final int 变量一旦被定义就不能被改变~

30:   写出下面代码的结果
 public class TestString{
    public static void link(String a){
        a += "World";
    }
    public static void main(String[] args){
        String a = "Hello";
        link(a);
        System.out.println(a);  //  Hello
    }
 }
答: 这道题考两个方面:
1). String对象的内容是不能改变的,a+="World"并不是把a所指对象改变
 而是先生成一个临时String对象,其值为a+"World",然后在把这个临时对象赋给a.
2). Java中函数参数传递方式为Call by value,link方法中会生产a的一个拷贝,同样指向a所指的对象,综合以上两点,得出结果为 Hello

31:  
   System.out.println("ja"+"va" == "java");
答:"=="用来比较对象的引用,而equals()用来比较对象的内容,但是如果是字符串常量,用"=="也可以比较内容
    是否相等,"ja"+"va"和"java"都是字符串常量,因此结果为true
    同理,下面代码结果也是true
final String str = "java";
System.out.println(str=="java")
 
32: 请详细解释String类的特点?StringBuffer类的特点?并列举出十个String的相关操作方法。 
String类特点:  一个字符串就是一个String的匿名对象
有两种赋值方式,一种是直接赋值,另外一种是采用关键字new完成的,第一种方式性能高,只会开辟一个堆空间,而第二种会开辟两个堆空间
String的地址比较使用==,内容比较使用equals()
String的内容一旦声明则不可改变,改变的是其内存地址的指向
StringBuffer:内容可以改变           方法:split()、matches()、replaceAll()、charAt()、getBytes()、substring()、indexof()、toLowerCase()、toUpperCase()、startsWith()、endsWith().
效率: StringBuilder(线程不安全)>StringBuffer(线程安全)>String

33 :数组:

创建对象数组时,实际创建的是一个句柄数组。而且每个句柄都会自动初始化成一个特殊值,并带有自己的关键字:null(空)。一旦java看到null,就知道句柄并未指向一个对象。正式使用前,必须为每个句柄都分配一个对象。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值