坤坤背JAVA(基础篇)

目录

1.String、StringBuilder、StringBuffer的区别

2.比较equals和 == 的区别

3.是否可以继承String类? 为什么用final修饰?

4. 什么是面向对象编程

5. 面向对象编程的三大特征

6. JDK、JRE、JVM分别是什么

7. JAVA的基本数据类型(四类八种)

8. 什么是方法签名

9. java中的访问修饰符

10. final有什么用,和finally,finalize有什么区别

11. this和super的区别

12. break ,continue ,return 的区别及作用

13. 抽象类能被final修饰吗

14. static修饰的方法能调用非static修饰的变量和方法吗

15. 局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final

16. 重载(Overload)和重写(Override)的区别

17. 构造器(constructor)是否可被重写(override)

18. Java中创建对象的方式有哪些


1.String、StringBuilder、StringBuffer的区别

1.String是字符串常量,对象一但创建就不会改变,StringBuilder和StringBuffer创建的对象是可以直接被改变的

2.运行速度:StringBuilder>StringBuffer>String

3.线程安全:StringBuffer的许多方法都带有synchronized这个关键字,可以保证线程的安全,StringBuilder没有这个关键字,不能保证线程的安全

2.比较equals和 == 的区别

1. ==可以判断基本类型,也可以判断引用类型,如果是基本类型比较的是值,如果是引用类型,比较的是两个对象的地址值

2.equals判断两个对象是否相等,没有重写Object类的equals方法,比较的还是地址值,重写后的equals方法,比较的是两个对象的内容是否相等

3.是否可以继承String? 为什么用final修饰?

不可以继承,因为String是被final修饰的,被final修饰的类为最终类,是不能被继承的,为了效率和安全

用final修饰的原因:

1. 将方法锁定,防止任意继承关系修改的它的意义和实现

2. 高效,编译器在遇到final修饰的方法时会转入内嵌机制,大大提高了效率

内嵌机制:当代码遇到调用final方法时,会直接展开,而不是用函数调用的形式,从而提高了函数运行效率

4. 什么是面向对象编程

面向对象编程就是用类 方法 封装 继承 多态等概念进行程序设计,从我们的日常生活中存在的事物出发来构造软件系统,尽可能运用人类的自然思想进行程序设计

5. 面向对象编程的三大特征

继承:子类继承父类,子类会有父类所有的行为和属性,以便抽取和调用,还可以追加行为和属性,继承支持单继承,多层继承,不支持多继承

封装:就是把一个类的行为和属性抽取出来封装起来,提高了代码的复用性

多态:父类引用指向子类实现,实现多态有三个条件:继承、重写、向上转型

6. JDK、JRE、JVM分别是什么

JDK:开发者工具包,包含了JRE和JVM

JRE:运行环境,包含了JVM和核心类库

JVM:虚拟机

7. JAVA的基本数据类型(四类八种)

整型:byte short int long

浮点型:float double

布尔型:boolean

字符型:char

8. 什么是方法签名

方法签名是一个方法的唯一标识符,有方法名和参数列表组成

9. java中的访问修饰符

public:可以被类的内部,子类,同一包下的其他类以及其他包下的类访问

protected:可以被类的内部,子类,同一包下的其他类访问,不同包下的类要通过子类的对象才能访问

default(默认):可以被类的内部和同一包下的其他类访问,不同包下的类不可以访问   

private:只能被类的内部访问,其他类都不可以访问,包括子类

10. final有什么用,和finally,finalize有什么区别

final是最终的意思,被final修饰的类为最终类,不能被继承,被final修饰的方法不能被重写,被final修饰的变量为常量,不可以重新赋值

finally一般用于try-catch结构中,表示不管是否出现异常,finally的方法都会被执行

finalize是Object类的方法,一般用于垃圾回收器中

11. thissuper的区别

1. this指向的是自身的一个对象,代表对象本身;super指向的是自己的一个超类对象,这个超类对象是最近的一个父类对象

2. this()调用的是本类的其他构造方法;super()调用的是父类的构造方法

12. break ,continue ,return 的区别及作用

break:跳出当前循环或switch语句的执行;在循环中,当满足某个条件时,使用break语句可以强制退出当前循环;在switch语句中,当匹配当某个case后,可以用break语句强制退出switch语句,避免执行其他case

continue:结束当前循环并进行下一次循环;在循环中,当满足某个条件时,可以使用continue语句直接跳过当前循环中的其他语句,直接进入下一轮循环

return:可以将执行的结果返回给调用者,并结束方法的执行

13. 抽象类能被final修饰吗

不能。

被final修饰的类为最终类,是不能被继承的,而抽象类本身是要实现继承的,两者相互冲突,所以不能被final修饰的

14. static修饰的方法能调用非static修饰的变量和方法吗

不能

因为静态方法创建出来的时候,非静态资源还没有创建出来,所以只能访问静态方法和变量

15. 局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final

因为生命周期不一致,局部变量保存在栈中,方法结束后,非final修饰的变量就会销毁,但局部内部类对局部变量的引用仍然存在,调用局部变量的时候就会出错

16. 重载(Overload)和重写(Override)的区别

重载:在同一个类中,有多个方法的方法名相同,但参数列表(参数个数、参数类型、参数顺序)不同,构成了方法重载

重写:在继承的条件下,在子类中重新定义了一个父类中已有的方法,方法名和参数列表必须相同,使用@Override注解来规范方法重写

17. 构造器(constructor)是否可被重写(override

不能

构造器不可以被继承,所以不能被重写,但是构造器可以被重载

18. Java中创建对象的方式有哪些

1. 使用关键词:new

2. 使用Class类的newInstance方法

3. 使用Constructor的newInstance方法

4. 使用clone方法

5. 使用反序列化

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值