1、一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?
答:可以有多个类。但只能有一个public类。并且public类名必须与文件名相一致。
 
2、Java有没有goto?
答:Java中的保留字,现在没有在Java中使用。
 
3、&和&&的区别
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则有一方为false,则结果就为false。
&&还具有短路的功能,即如果第一个表达式为false,则不计算第二个表达式,如if(str != null && !str.equls(""))表达式,当str为null时,后面的表达式就不会执行,所以不会出现NullPointerException,如果将&&改为&,则会抛出NullPointerException异常。
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果是0x01.
 
4、在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;
}
}
}

  

5、switch语句中的变量类型有哪些?
答:byte、short、int或char。在jdk1.7以上的版本中支持Sring类型。也可以是枚举类型。
long类型不可以。

6、super()和this()的区别

答:1)super(参数):调用基类中中的某一个构造函数(应该为构造函数中的第一条语句)。
2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)。
3)super:引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数)
4)this:代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数形参与类中的成员数据同名,这时需用this来指明成员变量名)
5)调用super( )必须写在子类构造方法的第一行,否则编译不通过,每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
6)super()和this()类似区别是:前者从子类调用父类的构造方法,猴子是在同一类内调用其他方法。
7)两个都要放在构造方法内第一行。
8)尽管可以使用this调用一个构造器,但不能调用两个。
9)this和super不能不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其他的构造函数必然会有super语句的存在,所以在同一个构造函数里面会有相同的语句,就失去了语句的意义,编译器也不会通过。
10)两个都指的是对象,所以,均不可以在static环境中使用,包括:static变量、static方法以及static语句块。
11)从本质上,this是一个指向本对象的指针,然而super是一个Java关键字。
 
7、成员变量和局部变量
答:如
class A
{
int a; //成员变量
public static void main(String[ ] args)
{
int b = 1; // 局部变量
}
}
1)局部变量必须初始化;成员变量可以不用初始化,系统自动初始化(被final修饰且没有static的必须显式赋值)。
2)成员变量在类中,局部变量在方法中。
3)成员变量可以被public、protect、private、static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型的。
4)成员变量存储在堆中,局部变量存储在栈中。
5)存在时间不同。
6)类变量是类中独立于方法之外的变量,用static修饰;实例变量也是类中独立于方法之外的变量,不过没有static修饰;局部变量是类的方法中的变量。
 
8、Java中长度为0的数组与null的区别
int[ ] zero = new int[0];
int[ ] nil = null;

  

1)zero是一个长度为0的数组,我们称之为”空数组“,空数组也是一个对象,只是包含元素个数为0.
2)nil是一个数组类型的空引用。
3)假设一个方法返回一个数组,如果它返回null,则调用方法必须先判断是否返回null,才能对返回数组进一步处理,而如果返回空数组,则无须null应用检查。鉴于此,返回数组的方法在没有结果时我们通常返回空数组,而不是null,这样对于函数调用者的处理比较方便。(省去调用API的客户端进行不必要的非null判断。)
 
9、非静态方法(不带static)可以访问静态方法(带static),但反过来不可以,为什么?
答:
1)当new一个对象的时候,并不是先在堆中为对象开辟内存空间,而是先将类中的静态方法(带有static修饰的静态函数)的代码加载到一个叫做方法区的地方,然后再在堆内存中创建对象,所以说敬爱方法会随着类的加载而被加载。
2)当new一个对象时,该对象存在于堆内存中,this关键字一般指该对象,但是如果没有new对象,而是通过类名调用该类的静态方法也可以。
3)程序最终都是在内存中执行,变量只有在内存中占有一席之地时才会被访问,类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以直接用类名去访问,非静态成员(变量和方法)属于类的对象,所以只有在类的对象阐释(创建实例)的时候才会分配内存,然后通过类的对象去访问。
4)在一个类的静态成员中访问非静态成员之所以会出错是因为在类的非静态成员不存在的时候静态成员就已经存在了,访问一个内存总不存在的东西就会出错。
5)类是在需要调用的时候才被加载。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

java问题整理的更多相关文章

  1. Java validator整理

    Java validator整理 因为想对方法的入参和出参作简单的非空或者非空字符做校验,所以找了下相关的@NotNull注解 类 | 说明 --- | --- javax.validation.co ...

  2. java笔记整理

    Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...

  3. Java资料整理

    Java资料整理 原创 2017年08月25日 17:20:44 14211  1.LocalThread的应用场景,数据传输适合用LocalThread么 2.linux的基本命令    软链接.更 ...

  4. JAVA基础整理-集合篇(一)

    集合作为JAVA的基础知识,本来感觉自己理解的很清楚了,但是在最近的一次面试中还是答得不尽如人意!再次做一下整理,以便加深理解以及随时查阅. 首先,java.util包中三个重要的接口及特点:List ...

  5. Java数据结构整理(一)

    ava数据结构内容整理关键字: 数据结构 Collection:List.SetMap:HashMap.HashTable如何在它们之间选择一.Array , ArraysJava所有“存储及随机访问 ...

  6. 面试之Java知识整理

    1.面向对象都有哪些特性 继承.封装.多态性.抽象 2.Java中实现多态的机制是什么? 继承与接口 3.Java中异常分为哪些种类 3.1按照异常需要处理的时机分为编译时异常(CheckedExce ...

  7. Java细节整理——数组与内存控制

    重点:使用Java数组之前,必须对数组对象进行初始化. 当数组的所有元素都被分配了合适的内存空间,并指定了初始值时,数组的初始化完成.程序以后将不能重新改变数组对象在内存中的位置和大小. 知识点整理: ...

  8. java面试整理(会持续更新..)

    本人出道至今,经历了大大小小百余场战斗,,,下面整理的面试题有些有答案,有些没答案,那个谁说过:"要抱着怀疑的态度去编程,所以,即便有答案,也不一定正确,即便我本地正确,但是由于屏幕前的你和 ...

  9. Java基础整理

    一.Java中的遍历 1.在java开发中会碰到遍历List删除其中多个元素的情况,如果使用一般的for循环以及增强的for循环,代码会抛出异常ConcurrentModificationExcept ...

  10. java知识整理

    整理一下Java知识点. 一.final finally finalize区别 1.final 修饰符(关键字).被final修饰的类,不能再派生出新的子类,不能作为父类而被子类继承.因此一个类不能既 ...

随机推荐

  1. :: error: 无法打开文件“d:\Qt\2010.05\qt\lib\qtmaind.lib”

    新建一个工程马上编译也会出现这个错误:: error: 无法打开文件“d:\Qt\2010.05\qt\lib\qtmaind.lib” vc的编译器, 而你安装的是mingw版本的qt. 工具-选项 ...

  2. 直接拿来用!最火的android开源项目(一)

    不好意思尊重一下作者咯.详情见:csdn:http://www.csdn.net/article/2013-05-03/2815127-Android-open-source-projects

  3. 创建一个基本的Windows应用程序

    以下是包含的头文件 #define WIN32_LEAN_AND_MEAN // 指示编译器不要包含我们并不需要的MFC内容 #include <windows.h> // 包含所有的Wi ...

  4. vijosP1285 佳佳的魔法药水

    vijosP1285 佳佳的魔法药水 链接:https://vijos.org/p/1285 [思路] 图论思想. 很巧妙. 如A+B=C,将AB之间连边,边权为C,用以找相连物品与合成物. 用Dij ...

  5. JavaScript高级程序设计5.pdf

    队列方法访问规则是FIFO(First-In-First-Out,先进先出),数组方法shift()能够移除数组中第一个项并返回该项,同时将数组长度减1,结合使用shift()和push(),可以像队 ...

  6. 0ull 是什么意思?

    unsigned long long 类型的0 同理:#define     DEV_IIC1             ( (u64)1 <<  7ULL)    这个作用是64位中的第7 ...

  7. ReactiveCocoa Tutorial

    ReactiveCocoa Tutorial – The Definitive Introduction: Part 1/2 ReactiveCocoa教程——明确的介绍:第一部分(共两部分) As ...

  8. Django路由系统

    django路由系统 简而言之,django的路由系统作用就是使views里面处理数据的函数与请求的url建立映射关系.使请求到来之后,根据urls.py里的关系条目,去查找到与请求对应的处理方法,从 ...

  9. Python切割nginx日志_小组_ThinkSAAS

    Python切割nginx日志_小组_ThinkSAAS Python切割nginx日志

  10. Java程序员必知的8大排序算法

    8种排序之间的关系 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 也是排好顺序的.如 ...