①Java基础部分面试题(1-10)

本文详细介绍了Java的跨平台特性,JVM的运行原理,以及Java中没有全局变量的原因。讨论了main方法中各关键字的作用,并阐述了内存管理和内存泄漏的概念。此外,对比了'=='与'equals'的区别,探讨了Java流的分类,并提供了列举目录下文件的代码示例。最后,讲解了构造器不可重写但可重载的规则。
摘要由CSDN通过智能技术生成

1.Java的“一次编写,处处运行”如何实现?

答:JAVA之所以能实现一次编译,到处运行,是因为JAVA在每个系统平台上都有JAVA虚拟机(JVM),JAVA编译的中间文件class是由JAVA虚拟机在运行时动态转换为对应平台的机器代码

2.描述JVM运行原理

Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是进入这个平台的通道。用Java语言编写并编译的程序可以运行在这个平台上。这个平台的结构如图所示:

运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码文件(.class文件),再然后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择地转换成机器码执行

3.为什么Java没有全局变量?

1.全局变量破坏了引用的透明性。

2.全局变量破环了命名空间冲突。

可以使用properties类将想要的全局有效的变量值写在properties文件中,那么在何处用时都从此properties文件中读取这个变量的值就可以了,此值在任何时候都可以修改的。

说明:我们平时在类中声明的只是相对类而言是全局变量,不是真正意义的全局变量。

4.说明一下

public static void main(String args[])

这段声明里每个关键字的作用。

public        是一个访问权限修饰符(访问修饰符)公共。

static        修饰的成员称为类成员或者静态成员

void        当方法定义时用void来修饰,表示没有返回值

String        类来创建和操作字符串

5.Java是否存在内存泄露?

java中内存泄露的发生场景,通俗地说,就是程序员可能创建了一个对象,以后一直不再使用这个对象,这个对象却一直被引用,即这个对象无用但是却无法被垃圾回收期回收的,这就是java中的内存泄露,一定要让程序将各种分支情况都完整执行到程序结束,然后看某个对象是否被使用过,如果没有,则才能判定这个对象属于内存泄露。

6.==和equals的区别

“==”除了比较基本数据之外都是比较的内存地址

“equals”除了没有重写equals方法的类之外都是比较的内容

7.Java中有几种类型的流?

Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream、OutputStream、Reader、Writer。

8.如何用Java代码列出一个目录下所有的文件(夹)。

public class TestListFile {
 
	public static void main(String[] args) {
		System.out.println("=========指定目录下的所有文件夹==========");
		File fileDirectory = new File("E:\\");
		for (File temp : fileDirectory.listFiles()) {
			if (temp.isDirectory()) {
				System.out.println(temp.toString());
			}
		}
		System.out.println("=========指定目录下的所有文件==========");
		File file = new File("E:\\TestListFile\\a");
		File[] aa = file.listFiles();
		for (int i = 0; i < aa.length; i++) {
			if (aa[i].isFile()) {
				System.out.println(aa[i]);
			}
		}
	}
}

9.&和&&的区别。

①、&和&&都可以用作逻辑的运算符,当两边的结果都为true时,运算结果才为true,否则只要有一方运算结果是false,运算结果就为false。

②、&&在开发过程中用到的概率比&&大,因为&&具有短路的功能,只要第一个表达式为false,就不会再进行判断。例如if(str!=null&&!str.equals("")){}

        当str==null时,后面的表达式就不会继续执行,但是

        if(str!=null&!str.equals("")){} 当str==null时,程序会报空指针异常,因为&不具有短路的功能。

③、&同时也是运算符,就是我们通常所说的按位与运算,当&的左右两边都是Boolean型表达式时或Boolean值时,就执行按位与运算。

补充:&的两边(将平时用的十进制数转化为二进制数字才能比较)同时为1,结果才为1,否则只要两把有一个为0结果就为0。

10.构造器(constructor)是否可被重写(override),其规范是什么?

构造器(构造方法)Constructor不能被继承,因此不能重写Override,但可以被重载(Overrload)(不同参数即可)

每一个类必须有自己的构造函数,在创建对象时自己调用,如果添加有参构造函数后,默认无参的构造函数则被覆盖。子类不会覆盖父类的构造函数,但是在创建子类对象的时候,会自动调用父类构造函数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值