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. once

    var once = function(obj, evtType, handler) { var f = function() { //console.log(arguments) handler.a ...

  2. lemon OA 下阶段工作安排

    lemon OA 下阶段工作安排 经验总结 lemon OA系统作为一个中型的java web系统,在架构上还是有着很好地可学习的地方.但是由于经验不足,过程比较迂回.如果真的有经验的话,应该可以做到 ...

  3. Matlab中常用操作

    (1)换行操作: 末尾加上“...”,然后加enter:有时候多条语句重起一行,这时shift+enter >> 4*sin(0.3)*...8 (2)一些快捷键: Ctrl+R 可多行同 ...

  4. Quartus中例化工程

    一般的例化工程,需要将要例化的对象的硬件语言放入到当前工程中,比如A要例化B,需要将B的编程文件加入当前工程进来. 还有一种方法不用这么麻烦,A工程用要例化B时,在library添加B的工程路径,就可 ...

  5. 简单登陆UI设计

    简单UI设计 作品效果图: 关键技术:      用到了本地化控件:SharedPreferences,简单的说就是本地配置. 四大组件:Intent 基本思路请看代码: Java代码: import ...

  6. hdu 4293 dp求最大权值不重合区间

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4293 #include<cstdio> #include<cstring> # ...

  7. 数据库的发展现状与前景——NewSQL界的佼佼者,如Couchbase、Aerospike、Marklogic和 SequoiaDB,NewSQL的许多厂商,如:MemSQL、VoltDB、ScaleDB和CitusDB

    转自:http://news.sequoiadb.com/cn/Detail-id-42 2015-03-20   Strata+Hadoop World(SHW)大会是全世界最大的大数据大会之一. ...

  8. 【protobuf进阶】通过.proto文件导出C#支持的.cs类文件

    protobuf是一个跨平台的消息交互协议,类似xml.json等. protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台.google 提供了多 ...

  9. GWT中实现跳转及不同entrypoint怎么互相访问

    怎么跳转? 跳转这个概念这里指的是从一个web页面跳转到另一个web页面,如果我们使用gwt来开发web,很自然的我们会想到怎么从一个gwt做的页面跳转到另一个gwt做的页面. 但从网上的gwt例子来 ...

  10. uva 10916 Factstone Benchmark(对数函数的活用)

    Factstone Benchmark Amtel has announced that it will release a 128-bit computer chip by 2010, a 256- ...