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. 在Xcode中使用Clang Format

    Xcode中的Re-Indent,顾名思义,只是一个调整缩进的功能,完全依赖它来进行代码格式化显然不够用.我们使用了一个叫做ClangFormat-Xcode的插件,配合Re-Indent一起来做代码 ...

  2. 在Ant Build文件中使用正则表达式替换文件内容

    这需要在build文件中使用<replaceregexp>标签, 这个标签的使用大概是这个样子的: <replaceregexp file="${src}/build.pr ...

  3. [YUM]Public key for *.rpm is not installed

    解决办法: 此时要导入rpm的签名信息即可 以root登录,执行下面命令 # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

  4. windows调用ubuntu下的sublimeText2环境搭建

    部署需求: windows: windows 7 32 sp1 32位: linux :ubuntu 12.04 LTS 64位: 环境: windows安装:xmanager 4 linux安装:g ...

  5. DEDECMS5.7 首页和栏目页调用文章按权重排序

    dedecms 5.7版本已增加按权重排序功能: [arclist]标签增加按权重排序,在后台管理DEDE里找到以下目录\include\taglib中的arclist.lib.php文件并打开 大约 ...

  6. sdut-2725-The Urge to Merge-状压DP

    把数组竖起来,从上往下走. 如果当前位置是竖着乘的,那么第一个点标记为1.否则标记为0. 样例最终的状态为: 0 0 1 0 1 0 1 0 0 0 0 0 #include<iostream& ...

  7. cocoapods_第二篇

    一.什么是CocoaPods CocoaPods是iOS项目的依赖管理工具,该项目源码在Github上管理.开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和第 ...

  8. mysql 主从同步配置

    1  环境 mac air 主机做 主库,使用的是XAMPP自带的mysql 版本为 5.6.21, for osx10.6 (x86_64) 虚拟机mysql 做从库  版本为 5.5.38, fo ...

  9. 6 Java学习之 枚举

    1. 概念    枚举是一种规范,它规范了参数的形式,这样就可以不用考虑类型的不匹配,并且显示的替代了int型参数可能带来的模糊概念.   常用来定义一个final类型的变量(常量),保证输入安全.如 ...

  10. 如何vs升级后10和12都能同时兼容

    如图: 项目2008解决方案sln文件升级2012后,都能同时使用. 升级办法:先复制vs2008版本的解决方案文件.升级2012后,再将文件复制到目录里面即可.注意升级过程中产生的升级文件(Upgr ...