Java基础面试题(一)

本文介绍了Java编程的基础知识,包括面向对象特性(抽象、封装、继承、多态)、JDK与JRE的区别、基本数据类型、常量与变量、==与equals的区别、访问修饰符、i++与++i的区别、逻辑运算符&&与&以及Java中的值传递和static关键字的作用。
摘要由CSDN通过智能技术生成

Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

1、Java面向对象的特征

抽象(Abstract):指对同一个目标(对象)的共同属性(特征)和方法(功能、行为)进行抽取、归纳和总结。抽象的意义是选择公共的部分,忽略一个主题中与当前目标无关的方面。

封装(Encapsulation):指隐藏对象的属性和实现等细节,控制成员属性的访问和修改权限,通过特定的公共方法暴露给外部访问。

如下代码,name属性为private权限,外部需要通过对象的getName()方法才能访问。

private String name = "你好,Java";

public String getName() {
	return name;
}

继承(Inheritance):指子类继承父类的的成员和方法,使得子类具备父类相同的行为。

注意:Java类之间只能单继承,而接口之间允许多继承。

多态(Polymorphism):指同一个行为具有多个不同的表现形式或形态,如一个类的方法在不同的情况会有不同的表现形式。

比如方法重写:子类可以重写(覆盖)父类的方法,通过父类引用变量调用该方法时,根据实际对象的类型,会调用子类中的方法。

2、JDK与JRE的区别

JDK

JDK全称:Java Development Kit,是整个Java的核心,包含了Java运行环境(JRE)和一系列Java开发工具完整的包。

JRE

JRE全称:Java Runtime Environment,是Java程序的运行环境,包含JVM、Java核心类库等。

区别

1)JDK用于编译开发。

2)JRE用于运行Java程序。

3)JRE是JDK的子集。

JDK与JRE的关系图

3、Java基本数据类型

整型:byte、short、int、long。

浮点型:double、float。

字符型:char。

布尔型:boolean。

4、Java常量和变量的区别

常量:是一个固定的值,赋值后不能被改变。

常量的三种类型:静态常量(在类中)、成员常量(在类中)、局部常量(类方法中)。

变量:是一个不固定的值,赋值后可以随意改变。

5、== 和 equals的区别

==

1)如果是基本数据类型,则比较的是值是否相等。

2)如果是引用数据类型,则比较的是对象的地址是否相等。

equals

equals是Object类提供的方法,接收的是Object参数类型。它是用来比较两个对象是否相等,默认比较的是对象的地址,可以比较包装类型,不能用于比较基本数据类型。

如果要比较两个对象的值是否相等,一般需要重写equals和hashCode方法,Java常用的String、Date、Integer等类都重写了equals和hashCode方法,它们比较的是对象的内容是否相等,而不是比较对象堆内存地址相等。

6、访问修饰符

7、i++ 和 ++i的区别

i++是先取值再自增。

++i是先自增再取值。

public static void main(String[] args) {
    int i = 1;
    i = i++ + 1;
    System.out.println("i: " + i);

    int j = 1;
    j = ++j + 1;
    System.out.println("j: " + j);
}

F:\Tools\Jdk1.8\Jdk\bin\java.exe...
i: 2
j: 3

Process finished with exit code 0

8、& 和 &&的区别

&和&&两者都是运算符,都可以用作逻辑与(and)的运算符,表示逻辑与(and),逻辑判断推荐使用&&,位运算则使用&。

&和&&的共同点:当运算符两边的表达式结果都为 true,整个运算结果才为 true,否则,只要有一方为false,则结果为false。

&&具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。

&可以用作位运算符,当&两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用OxOf来与一个整数进行&运算,来获取该整数的最低4个 bit 位,例如,Ox31 & OxOf 的结果为OxO1。

9、Java值传递

值传递:传递的是基本类型参数值的拷贝,方法对参数的修改不会影响之前参数的值。

引用传递:传递的是该引用对象在堆内存中地址值的拷贝,而不是拷贝整个对象本身,方法对参数的修改会直接影响参数之前的值。

Java只有值传递

1)对于基本数据类型,传递的是它们的实际值的副本。

2)对于引用类型,传递的是对象引用值的副本,即对象的内存地址,而不是对象本身。

3)值传递是数据的拷贝,而不是数据本身,引用类型的传递虽然可以修改引用对象的内容,但不能修改引用本身(引用类型和内存地址),因此,引用传递是值传递的一种形式。

10、static关键字的作用

static字面意思是静态,它的作用是用来修饰

1)修饰静态内部类,静态内部类可以不依赖外部类实例对象而被实例化,而内部类需要在外部类实例化后才能被实例化。

2)修饰静态方法,静态方法属于类方法,不需要实例化对象就能调用。

3)修饰静态变量,静态变量属于类,不需要实例化对象就能调用。

4)修饰静态代码块,静态代码块只会在类被加载时执行且执行一次。

第一篇基础面试题到此结束。

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值