图灵Java开发面试基础笔试题分享:char变量能存储中文汉字吗?为什么呢?“==”和equals的方法有什么区别?静态变量和实例变量的区别?非static方法的调用能从static方法内部发出吗?integer和int的区别。Java开发面试和答案有五个。
第一题:中文汉字能储存在char变量中吗?为什么?
char变量是用来存储unicode编码的字符。unicode编码字符集中包含汉字。因此,当然,汉字可以存储在char变量中。然而,如果一个特殊的汉字不包含在unicode编码字符集中,那么这个特殊的汉字就不能存储在这个char变量中。补充说明:unicode编码占用两个字节,因此char类型的变量也占用两个字节。
第二题:“==”和equals方法有什么区别?
(单独说清楚一件事,然后再说清楚另一件事,这样它们的区别自然就出来了,混在一起说,就很难说清楚了)
==操作符专门用于比较两个变量的值是否相等,即比较变量对应的内存中存储的值是否相同,比较两个基本类型的数据或两个引用变量是否相等,只能使用==操作符。
如果一个变量指向的数据属于对象类型,则此时涉及两个内存。对象本身占用一个内存(堆内存),变量也占用一个内存,如Objetobj=newobject();变量obj是一个内存,newobject()是另一个内存。此时,变量obj对应的内存中存储的值是对象占用的内存的第一个地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一对象,则取决于两个变量对应的内存中的值是否相等。此时,需要使用==操作符进行比较。
equals的方法是比较两个独立对象的内容是否相同,就像比较两个人的外表是否相同一样,比较的两个对象是独立的。例如,对于以下代码:
String
两个new语句创建了两个对象,然后用a和b指向其中一个变量是两个不同的对象。它们的第一个地址不同,即a和b中存储的值不同。因此,表达式a==b将返回。
false,这两个对象的内容是一样的,所以表达式a.equals(b)将返回true。
在实际开发中,我们经常需要比较传输的字符串内容是否等待,比如stringinput=..;input.equals(quit),很多人不注意就用==进行比较,这是错误的。从网上找几个实战项目的教学视频,里面有很多这样的错误。记住,字符串的比较基本上是用equals的。
如果一个类别没有自己定义equals方法,那么它将继承objectequals方法。objectequals方法的实现代码如下:
Objecto{boleanequals
=o;
}
这说明,如果一个类别没有自己定义equals方法,那么它默认的equals方法(从object类继承的)就是使用==操作符,也是比较两个变量指向的对象是否是同一对象。这个时候,使用equals和使用==会得到同样的结果。如果你比较两个独立的对象,你总是会回到false。如果你创建的两个实例对象的内容是否相同,是否相同,那么你必须涵盖equals方法。
第三题:静态变量与实例变量的区别。
语法定义上的区别:静态变量前加static关键字,实例变量前不加。
程序运行中的区别:实例变量属于某一对象的属性,必须创建实例对象,实例变量将被分配空间,以使用该实例变量。静态变量不属于实例对象,而是属于类,因此也称为类变量。只要程序加载了类字节码,就不需要创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用。简而言之,实例变量只有在创建对象后才能使用,静态变量可以直接引用类名。
例如,对于以下程序,无论创建多少例子对象,总是只分配一个staticvar变量,每创建一个例子对象,staticvar将添加1;但是,每创建一个例子对象,就会分配一个instancevar,即可以分配多个instancevar,每个instancevar的值只增加一次。
publiclassvariantest。
{
publicstaticaticvar=0;publicintinstancevar=0;publicvariatictest()
{
staticvar+;
System.out.println(staticvar=+staticvar。
+instancevar=+instancevar);
}
}
第四题:是否可以从static方法内部调用非static方法。
不有。因为非static方法应该与对象联系在一起,所以在调用static方法之前,必须创建一个对象。
不需要创建对象,可以直接调用。也就是说,当static方法被调用时,可能没有创建任何实例对象。如果非static方法从static方法中调用非static方法,非static方法与哪个对象有关?这个逻辑是无法建立的,所以static方法内部调用非static方法。
第五题:Integer和int的区别。
int是java提供的八种原始数据类型之一。Java为每种原始类型提供包装,integer是java为int提供的包装。int的默认值为0,而integer的默认值为null,即integer可以区分未赋值和0,而int则无法表达未赋值。例如,如果你想表达没有参加考试和考试成绩为0的区别,你只能使用它。
Integer。在JSP开发中,Integer的默认值为null,因此当el表达式显示在文本框中时,值为空白字符串,而int默认值为0,
因此,当el表达式显示在文本框中时,结果为0,因此int不适用于web层的表单数据类型。
在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据了。