javaEE每日一考(基础汇总)

day01

1.JDK,JRE,JVM三者之间的关系

​ JDK就是java开发工具包,jre就是java运行环境,jre下面有两个目录bin目录就是jvm,lib目录就是jvm工作所需要的类库。Jdk包含jre,jre又包含jvm

2.为什么要配置环境变量,如何配置

​ 配置环境变量是为了可以直接在dos命令窗口就可以编译运行java程序,而不需要在jre的bin目录上去运行dos命令窗口再进行编译和运行java程序。

3.常用的命令行有哪些(至少写出4个)

​ Md:创建目录 rd:删除目录 cls:清屏 dir:显示当前目录下的文件以及文件夹

4.请描述基于记事本编写程序的步骤

​ 先下载jdk,配置环境变量(非必须),然后创建一个txt文本文档,将其后缀名改为.java文件,然后在里面编写java代码。再打开dos命令窗口,javac编译.java的文件,会生成一个class后缀的字节码文件,然后java运行这个文件。

5.请描述程序的执行过程

​ 先是javac编译成字节码文件,然后java运行字节码文件执行这个程序。

6.请描述你理解的注释

​ 注释就类似与一个说明书,描述了你下面那段代码实现的功能和作用。

7.请描述你理解的标识符

​ 所有可以自己命名的都是标识符,由26个英文字母 数字,下划线美元符号组成,不能由数字开头不可以使用关键字和保留字(例如goto,因为java底层是c语言代码,有些c语言用到的,java没用到,但是做了保留,以后可能会用到。),但是可以包含。不能存在空格

8.请描述你理解的变量

​ 在java中利用声明的方式将某个数据保存下来供程序使用,并且这个数据是可以根据自己需求发生改变的。

9.请描述常用的数据类型有哪些

​ Byte,short,int,long,float,double,boolean,char,String

10.请描述int类型做"/"运算时有哪些注意事项

​ 如果结果为小数的话就只取整数部分。当操作数有一个是小数时,结果应为小数。都为整数时结果一定为整数。

11.请描述"%"做取余运算时有哪些注意事情

​ 当操作数有一个为小数时,结果为小数。

12.请描述"++"的作用及前置++和后置++的区别

​ 前置++是先加1在运算,后置++是先运算再加1

13.请描述数据类型存在的意义

​ 因为数据是有明确的类型划分的,为了确保变量保留的数据其类型的唯一性,要使用数据类型进行变量的修饰。

14.请描述在使用变量时的注意事项

​ 变量定义在那个大括号内,它就在这个大括号内有效。并且,在同一个大括号内不能同时定义同名的变量。没有初始化值得变量不能直接使用。只要在使用前给值就行,不一定要在定义是给值。

15.请描述/n、/t的作用

​ /n换行符,/t制表符

16.请描述赋值运算符+=和=的区别

​ +=是先相加在赋值,=是直接赋值

17.请描述三目运算符的使用场景

当是二选一时,则就可以直接使用三目运算符

18.请描述实现从键盘输入的步骤

​ 导入Java.util.Scanner包,然后创建Scanner对象,定义一个对应的变量来接收键盘的输入。

19.源文件名是否必须与类名相同?如果不是,那么什么情况下,必须相同?

​ 不是,只有前面有public的时候才必须与类名相同。

20.程序中若只有一个public修饰的类,且此类含main方法。那么类名与源文件名可否不一致?

​ 可以

21.为什么要设置path(或者说,设置path的目的是什么)?

​ 方便直接从dos命令窗口进行java的编译和运行。

22.问题:System.out.println()和System.out.print()什么区别呢?

​ 输出换行和输出不换行。

day02

1.请描述你理解的循环

​ 就是按一定的次序去重复执行一件事。

2.请描述嵌套for循环执行的过程

​ 外层循环执行一次,内层循环执行一圈。

3.请描述你理解的数据类型

​ 数据类型分为基本数据类型和引用数据类型。基本数据类型有8种,byte short int long float double boolean char。引用类型主要有字符串,数组,枚举等

4.请描述你理解的数据类型的转换

​ 按取值范围的大小,大的从小的转换会损失精度属于强制类型转换,小的从大的转换属于自动类型转换。

5.请简述你对程序流程控制结构的理解

​ 依据需求的不同会产生不同的程序结构,从而导致程序的执行流程是也不同的。我们把这一现象称之为程序的流程控制结构。

6.请简述选择结构的分类及每一种分类的使用场景

​ 选择结构有两种,if和switch。如果判断的具体数值不多,而且符合byte、short 、char、int、String、枚举等几种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。

​ 其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。

day03

1.看图说话

1.没有输出。

2.b,能通过,c

2.哪个选项和show()方法重载

class Demo{

​ void show(int a,int b,float c){}

}

A.void show(int a,float c,int b){}//yes

B,void show(int a,int b,float c){}//一模一样。不可以出现在同一个类中。

C.int show(int a,float c,int b){return a;}//yes。

D.int show(int a,float c){return a;}//yes

3.方法重载(overload)必须满足C E

A. 在不同class中定义的方法 B.在同一类型中定义的方法

C. 方法名必须相同 D.返回类型必须相同

E. 参数一定不同 F.参数可以相同

4.写出输出结果

class Demo{

public static void main(String[] args){

int x = 1;

for(show('a'); show('b') && x<3; show('c')){

show('d');

x++;

}

}

public static boolean show(char ch){

System.out.print(ch);

return true;

}

}

//答案:abdcbdcb(考for循环执行顺序。)

day04

1.请简述你对面向对象的理解

​ 面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者

2.请简述你对类和对象的理解

​ 类是事物相关属性和行为的集合,可以看成是一类事物的模板,使用事物的属性特征来描述该类事物。对象是一类事物的具体体现,对象就是类的一个具体实例,对象具备该类事物的属性和行为。

3.类由什么组成?

​ 属性,方法

4.什么是类?什么是对象?类与对象的关系是什么?

​ 类是对一类事物的描述,是抽象的。对象是一类事物的实例,是具体的。类是对对象的抽象表示,对象是对类的一个实例而已。

5.请简述对象的内存分配过程

​ 在类加载完成后,需要为对象分配内存空间。Java中的对象存储在堆(Heap)中。当执行new关键字创建对象时,会在堆中为对象分配连续的内存空间。

day05

1.请简述你对static关键字的理解?

​ static表示静态的

​ 可以修饰属性、方法、代码块、内部类以及实现静态导入

2.请简述静态块和非静态块的区别?

​ 静态代码块:用static修饰的代码块

​ 1.可以有输出语句

​ 2.可以对类的属性,类的声明进行初始化操作。

​ 3.不可以对非静态的属性初始化。即:不可以调用非静态的属性和方法

​ 4.静态代码块的执行要先于非静态代码块

​ 5.若有多个静态的代码块,那么按照从上到下的顺序依次执行。

​ 6.静态代码块随着类的加载而加载,且只执行一次。

​ 非静态代码块:没有static修饰的代码块

​ 1.可以有输出语句

​ 2.可以对类的属性,类的声明进行初始化操作。

​ 3.除了调用非静态的代码块,那么按照从上到下的顺序依次执行。

​ 4.若有多个非静态的代码块,那么按照从上到下的顺序依次执行。

​ 5.每次创建对象的时候,都会执行一次。且先于构造器执行。

3.请简述你对单例设计模式的理解?

​ 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。

4.请谈谈你对引用数据类型的理解

​ 除了基本数据类型之外 ,凡是能合法存在数据类型位置的,都是引用数据类型

5.请谈谈你对参数传递过程的理解

​ 当是基本数据类型时,在内存中存放的是真正的值

​ 当是基本数据类型作为参数进行传递时,实参传递给形参的是真正的值,也就是:相当于复制一份。

​ 当另一个方法中局部变量的值发生改变,不会对原来方法中局部变量的值更改,因为它们都是独立的,没有影响

​ 当是引用数据类型时间在内存中存放的是地址

​ 当引用数据类型作为参数进行传递时,实参传递给形参的是地址,也就是:实参与形参存放同一个地址,指向同一个对象,也就是说:当另一个方法中对象的属性值发生改变,对原来方法中对象的属性值有影响

6.请描述你对变量分类的划分

​ 变量分为局部变量和成员变量。局部变量在方法中声明,成员变量在方法外面声明也就是类中声明。

7.请简述你对封装的理解?

​ 封装就是隐藏类的内部信息(属性和方法),不允许外部程序直接访问,而是通过公有的方法才能完成访问(赋值方法set()和取值方法get())

8.请简述你对构造方法的理解?

​ 构造方法是一个特殊的方法,主要特殊点如下

​ 1.构造方法的名字与类的名字一致

​ 2.它不声明返回值类型。(与声明为void不同)

​ 3.不能被static、final、synchronized、abstract、native修饰,

​ 4.不能有return语句返回值

9.请简述你对构造方法重载的理解?

​ 在同一个类中至少出现2个或者2个以上的参数列表必须不同的构造方法,这里的参数列表包括参数的个数、参数类型、参数类型顺序三要素,三要素若仅有一要素不同,那么就构成方法的重载。

10.请谈谈你对this关键字的理解

​ this在Java中代表的是当前对象,也就是说:当前谁调用这个方法则这个对象就是谁

​ this关键字可以访问本类中的实例变量、实例方法以及本类中的构造方法

​ 可以在类的构造器中使用"this(形参列表)"的方式,调用本类中重载的其 它的构造器!

​ 明确:构造器中不能通过"this(形参列表)"的方式调用自身构造器

​ 如果一个类中声明了n个构造器,则最多有 n - 1个构造器中使用了 "this(形参列表)" "this(形参列表)"必须声明在类的构造器的首行!

​ 在类的一个构造器中,最多只能声明一个"this(形参列表)

11.请谈谈你对static关键字的理解

​ static表示静态的

​ 可以修饰属性、方法、代码块、内部类以及实现静态导入

​ 没有对象的实例时,可以用类名.方法名()的形式访问由static修饰的类方法

​ 在static方法内部只能访问类的static修饰的属性或方法,不能访问类的非static的结构。

​ 实例方法中可以访问:静态变量和静态方法,也可以访问实例变量和实例方法。因为不需要实例就可以访问static方法,因此static方法内部不能有this。

12.什么是局部变量和全局变量?

​ 全局变量是编程术语中的一种,源自于变量之分。全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。

​ 局部变量(Local variables):在方法内部(包括main()方法)定义的变量是局部变量。所有局部变量都是在方法被调用时在栈中分配空间,系统不会自动对他们进行赋值,所以必须先给局部变量赋初值之后才能使用

13、下列关于变量的叙述哪个是错的(C)

​ A、实例变量是类的成员变量

​ B、在方法中定义的局部变量在该方法执行时被创建

​ C、实例变量用关键字static声明

​ D、局部变量在使用前必须进行初始化

14、阅读程序给出答案

public class Test1 {

​ public static void main(String[] args) {

​ new A(new B());

​ }

}

class A{

​ public A(){

​ System.out.println("A");

​ }

​ public A(B b){

​ this();

​ System.out.println("AB");

​ }

}

class B{

​ public B(){

​ System.out.println("B");

​ }

}

答案:B A AB

day06

1.Java类是否可以多继承,怎么实现多继承?

不能,子类继承父类,然后父类再继承父类。

2.写出重载与重写的区别?

重载,是用统一的方法处理不同的数据类型,是多态的集中体现。

重写,是建立在子类继承父类的基础上,对父类原有的方法进行扩展。

3.读程序给出结果

class Demo{

int show(int a,int b){return 0;}

}

下面那些函数可以存在于Demo的子类中。B   

A.public int show(int a,int b){return 0;}

B.private int show(int a,int b){return 0;}

C.private int show(int a,long b){return 0;}

D.public short show(int a,int b){return 0;}

E.static int show(int a,int b){return 0;}

4.为什么要重写toString()方法?

重写toString方法的目的就是为了方便输出,比如System.out.println(com),括号里面的com是一个对象名,如果不是String类型的话,就自动调用com的toString()方法。

简而言之就是为了方便输出。

5.Overload的方法是否可以改变返回值的类型?

可以改变,因为重载和返回值的类型无关

6.this与super的区别

7.在静态方法中是否可用this来调用本类的类方法?

不能,因为this是调用这个类的实例变量,而静态方法中只能调用外面的静态属性。

8.谈你对代码块的理解

代码块是一种常见的代码形式。它用大括号“{}”将多行代码封装在一起,形成一个独立的代码区,这就构成了代码块。

9.请再谈谈你对变量的理解

变量是一种用于存储数据值的占位符。变量是 Java 编程中基本的数据类型,程序中几乎所有的操作都需要用到变量。程序运行的时候,变量中存储的数据可以发生改变。Java 变量分为 基本类型  引用类型 两种

10.请写出空指针异常的名字(英文),并描述其产生的原因

NullPointerException,当一个对象不存在,又调用其方法时候就会产生空指针异常。

11.基本数据类型和引用数据类型有什么区别?

基本数据类型

在内存中存放的是真正的值  值传递

引用数据类型

在内存中存放的是地址(引用) 址传递

 

 day07

1.请描述你对多态的理解

在Java中,多态是面向对象编程的重要概念,它允许使用基类的引用来引用不同类型的对象,以实现灵活性和可扩展性。

多态性通过继承和方法重写来实现。下面是对Java中多态的简要说明:

1. 继承关系:多态是建立在类与类之间的继承关系基础上的。一个类可以继承另一个类,从而获得父类的属性和方法。

2. 覆盖(重写)方法:子类可以重写父类的方法,以改变方法的实现逻辑。子类中的重写方法必须具有与父类方法相同的名称、参数列表和返回类型。

3. 多态性的体现:多态性是通过父类引用指向子类对象来实现的。即可以使用父类的引用变量来引用子类的对象。这允许在编译时不确定对象的具体类型,而是在运行时根据对象的实际类型来调用方法。

4. 动态绑定:在运行时,Java根据对象的实际类型来决定调用哪个类的方法。这种动态绑定使得同一个方法可以根据不同对象的实际类型表现出不同的行为。

多态性的好处包括代码的灵活性、可扩展性和代码重用性。通过多态性,可以编写通用的代码,减少代码的重复编写,并在运行时根据实际情况选择合适的方法实现。这样可以使代码更加灵活、可维护和易于扩展。

2.类似:两个对象a和b,请问a==b和a.equals(b)有什么区别?

对于引用数据类型==比较的是地址。

Equals如果没有重写比较的也是地址,重写之后比较的是内容。

3.以下代码如何优化

if(username.equals(“admin”){

  ....

}

答案

if ("admin".equals(username)) {

    // ...}

day08

1.请描述abstract class 和interface的区别?

相同点

  • 都不能创建对象,其实:抽象类和接口都是多态的一种形式
  • 抽象类和接口中都可以编写抽象方法
  • 子类或实现类都必须要重写抽象类或接口中的所有的抽象方法,否则子类或实现类就是抽象类

不同点

  • 抽象类
    1. 使用abstract关键字
    2. 抽象类中包含:普通类中包含的所有内容,也可以包含抽象方法
    3. 子类继承抽象类,并且是单继承
  • 抽象类的出现就是为了统一标准,但是有单继承局限
  • 接口
    1. 使用interface关键字
    2. 在JDK8.0中,接口包含:抽象方法(默认有public abstract)、公有静态常量(默认有public static final)、public static修饰的方法、public default修饰的方法
    3. 实现类实现接口,并且是多实现

        接口的出现是为了统-标准,同时没有单继承局限

        接口也弥补了Java单一继承的弱点,也就是类可以实现多个接口。

2.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

接口可以继承接口,抽象类可以实现接口,抽象类可以继承实体类。

3.请描述你理解的模板方法设计模式?

模板方法设计模式就是,当功能内部一部分实现是确定的,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值