第一:一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
答:一个java源文件中可以包含多个类,但是只有一个类是public类型的并且类名和源文件名相同。
第二:Java有没有goto?
答:在java中goto是保留字,在java中并不是有这个关键字。
第三:说说&和&&的区别。
答:
<1、相同点:都可以作为逻辑与运算当表达式两端都为true整个表达式为true,否则为false
<2、不同点:
1、&& 具有短路的功能,例如if(str!=null && !str.equeal(""))如果str==null则 !str.equeal(""))就不会被执行也就不会抛出空指针异常
2、& 例如if(str!=null && !str.equeal(""))当str==null 时候!str.equeal(""))也会被执行 会抛出空指针异常 。
3、& 有位运算功能当表达式两端部位boolean 类型的时候 & 表示为运算操作
第四:在JAVA中如何跳出当前的多重嵌套循环?
答:有两种实现方式(还有其他方法)
第一:外面的循环语句前定义一个标号 然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环 例如:
ok:
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
System.out.println(“i=” + i + “,j=” + j);
if(j == 5) break ok;
}
}
第二:使用循环条件标记 例如:
int arr[][] = {{1,2,3},{4,5,6,7},{9}};
boolean found = false;
for(int i=0;i<arr.length && !found;i++)
{
for(int j=0;j<arr[i].length;j++)
{
System.out.println(“i=” + i + “,j=” + j);
if(arr[i][j] == 5)
{
found = true;
break;
}
}
}
第五:switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
答:在java中 byte、short、 char 能隐士的转换成int型所有可以作用在switch上 long、String不能隐士的转换成int 所有不能作用在switch上
第六:short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:<1、首先short 加上一个int的整数会自动向上转型为int类型 然后再赋值给一个short类型此时是向下转型必须强制类型转换否则会有类型转换异常
<2、 += 是java语言规范定义的所有 编译器会作一些特殊的处理不会出现异常
第七:char型变量中能不能存贮一个中文汉字?为什么?
答:在java中采用unicode编码包含了汉字 所有可以储存汉字 如果一些特殊的汉字没有包含在内也就不能储存 在这里java中一个字符有两个字节
第八:用最有效率的方法算出2乘以8等於几?
答:因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接进行二进制运算,效率最高,所以,2乘以8等於几的最效率的方法是2 << 3。
第九:使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
答:final关键字修饰的变量是不能变的,变量指向的对象的值是可以改变的 例如:
final StringBuffer a=new StringBuffer("aaa");
下面的语句编译器会报错
a=new StringBuffer("bbb");
下面的语句正常的编译
a.append("cccc");
第九:"=="和equals方法究竟有什么区别?
答:
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。
equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:
String a=new String("foo");
String b=new String("foo");
两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。
在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input = …;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战的教学视频看看,里面就有大量这样的错误。记住,字符串的比较基本上都是使用equals方法。
如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object类的equals方法的实现代码如下:
boolean equals(Object o){
return this==o;
}
这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。
第十:静态变量和实例变量的区别?
答:在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。
public class VariantTest
{
public static int staticVar = 0;
public int instanceVar = 0;
public VariantTest()
{
staticVar++;
instanceVar++;
System.out.println(“staticVar=” + staticVar + ”,instanceVar=” + instanceVar);
}
}
第十一:是否可以从一个static方法内部发出对非static方法的调用?
答:不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。
第十二:Integer与int的区别(参考)
答:int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以+web层的表单数据的类型。
在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。
另外,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量。
第十三:Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
答:java中Math类提供三个方法:ceil floor round
ceil:(天花板)即向上取整Math.ceil(11.3) 12 Math.ceil(-12.3) -12
floor:(地板)即向下去整Math.floor(11.3) 11 math.floor(-11.2) -12
round:(四舍五入)Math.round(11.5)12 Math.round(-11.5)-11
分享到:
相关推荐
Java面试经典算法 Java 面试经典算法是指在 Java 面试中经常会被问到的算法题目,这些题目涵盖了数据结构、算法设计...猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉。
### Java面试题精析 #### 1. super()与this()的区别? - **super()**:用于调用父类的构造方法或访问父类的成员。在子类构造方法的第一行,通过`super()`可以调用父类的特定构造方法,从而确保父类的初始化在子类...
在Java面试的第60天,我们关注的是三个核心概念:URL重写、过滤器和监听器。这些都是Java Web开发中的重要组成部分,尤其在设计和实现高效、安全的Web应用程序时。 1. **URL重写**: URL重写是一种技术,当web组件...
在Java面试的第10天,我们深入探讨了关于Hibernate框架的相关概念和使用。Hibernate是一个强大的Java持久层框架,它通过ORM(对象关系映射)技术,实现了Java对象与关系数据库之间的无缝对接,简化了数据访问的操作...
在Java面试的第18天,我们关注的是Web开发基础和处理中文乱码的问题,这些知识点对于Java程序员尤其重要,尤其是在进行Web应用开发时。 1. **HTTP协议**: HTTP(超文本传输协议)是互联网上应用最广泛的一种网络...
【Java面试知识点详解】 1. **Socket网络通信流程** - 客户端与服务器通信主要基于Socket。服务器端使用`ServerSocket`监听一个特定端口(通常建议使用大于1024的非保留端口),等待客户端的连接请求。当连接建立...
在Java编程语言中,面试...总结来说,这段代码展示了Java面向对象编程中的继承、构造器、方法重写以及属性和方法的访问控制,这些都是Java面试中常见的知识点。通过理解这些概念,开发者能够更好地设计和维护软件系统。
【知识点详解】 1. Hibernate 级联操作与 `cascade` 属性: Hibernate 提供了级联操作功能,使得对一个实体的保存、更新、删除等操作可以自动影响...理解这些知识点对于进行 Java 企业级开发和面试都是非常重要的。
总结,这个文档包含的内容是JavaScript基础知识,包括全局函数的使用、`arguments` 对象、`document` 对象以及JavaScript代码的解释和分析,这些都是Java开发者在面试过程中可能遇到的问题,尤其是针对前端开发的...
02_互联网Java工程师面试突击训练课程第一季的内容说明 03_关于互联网Java工程师面试突击训练课程的几点说明 04_体验一下面试官对于消息队列的7个连环炮 05_知其然而知其所以然:如何进行消息队列的技术选型? 06_...
0029--MySQL优化之索引实现原理.zip ├─0030--MySQL优化之SQL语句调优.zip ├─0031--MySQL优化之分表分库与读写分离.zip ├─0032--Java培优结业典礼第一天(面试题回顾).zip ├─0033--Java培训就业典礼第二天...
HTML 是构建网页的基础,了解其结构和元素类型是进行网页开发的第一步。行内元素与块级元素的区分有助于理解元素如何布局和交互。此外,掌握表单元素的使用,如输入框、单选按钮以及它们的属性,对于创建功能丰富的...
利用这个规律,我们可以通过递归或循环的方式,从第十天回溯到第一天,计算出第一天猴子摘了多少个桃子。 #### 三、Java实现方案 下面通过两个不同的Java程序来实现这一算法: ##### 3.1 使用递归方法 ```java ...
&&是逻辑与操作符,它是短路操作符,如果第一个操作数为false,则不会计算第二个操作数。 54. final, finally, finalize的区别? final用于声明一个变量、方法或类,表示它是不可变的、最终的;finally是try/catch...
在第三个问题中,要求使用 SQL 语句完成下个月第一天的查询。解决方法是使用 ADD_MONTHS 函数和 TRUNC 函数。 4. 字典表 在第四个问题中,要求使用 SQL 语句完成 test 表中三段的含义解释。解决方法是使用 JOIN ...
这里先获取前三条记录,然后在子查询中再次选择第一条,从而达到获取第三条记录的目的。 4. 数据重组: 展示了一个使用`UNION`操作符合并两个查询结果的例子,用于重新排列表`test`的内容。`LEFT JOIN`用于连接相同...
3. 使用SQL语句完成下个月第一天的查询问题:该问题考察了日期函数的使用,通过使用ADD_MONTHS和TRUNC函数可以获取下个月第一天的日期。 知识点:日期函数、ADD_MONTHS函数、TRUNC函数 4. 使用SQL语句完成数据字典...
如果它第一天吃掉所有桃子,那么第二天就没桃子吃了;如果第一天不吃,第二天又会感到饥饿。因此,猴子必须找到一种方法,在连续的每一天都能吃掉一些桃子,直到吃完为止。问题是,猴子应该按照什么策略吃桃子,才能...