首页 > 编程语言 >面试题-java

面试题-java

时间:2023-02-05 20:44:37浏览次数:41  
标签:面试题 java String 接口 字符串 抽象类 方法 final

目录


基础概念

什么是java?

Java是一门面向对象编程语言

什么是面向对象?

在面向对象这个概念之前,编程是面向过程的

面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。

面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现。

举个最简单点的例子来区分面向过程和面向对象,有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择

  1. 自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。
  2. 去饭店,张开嘴:老板!来一份鱼香肉丝!

1是面向过程,2是面向对象。

java三大特性

封装、继承、多态

封装就是把对象的属性和操作结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。常见的set、get就是封装这个思想在开发时的应用。

继承就是子类继承父类的属性和方法,当然,如果在父类中拥有私有属性(private修饰),则子类是不能被继承的。

多态(重写,重载)

多态是同一个行为具有多个不同表现形式或形态的能力。

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。

重载指在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

this,super关键字

  1. super()关键字的用法
    子类的成员方法中,访问父类的成员变量。
    子类的成员方法中,访问父类的成员方法。
    子类的构造方法中,访问父类的构造方法。

  2. this关键字用法:
    本类成员方法中,访问本类的成员变量。
    本类成员方法中,访问本类的另一个成员方法。
    本类的构造方法中,访问本类的另一个构造方法。

注意:

  1. this关键字同super一样,必须在构造方法的第一个语句,且是唯一的。
  2. this与super不能同时存在。

抽象类、接口

抽象类abstract

[public] abstract class ClassName {
    abstract void fun();
}

接口

[public] interface InterfaceName {
    void fun();
}

共同点

  1. 都不能被实例化
  2. 接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。

区别

  1. 接口只有定义,不能有方法的实现
  2. 实现接口的关键字为implements,继承抽象类的关键字为extends。
  3. 一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。
  4. 接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;
  5. 抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。

多个接口之间是继承关系。多个父接口当中默认方法如果重复,那么子接口必须进行默认方法的覆盖重写。

抽象类能使用 final 修饰吗?

不能,定义抽象类就是让其他类继承的,如果定义为 final 该类就不能被继承,这样彼此就会产生矛盾,所以 final 不能修饰抽象类,如下图所示,编辑器也会提示错误信息:

==和equals

==比较引用对象,如果双方指向同一个引用对象,则为true。
equals比较值。

equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。

final关键字

final 修饰的类叫最终类,该类不能被继承。

final 修饰的方法不能被重写。

final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。

数据类型

基础类型有 8 种:byte、boolean、char、short、int、float、long、double。

字符串

String str="i"与 String str=new String("i")一样吗?

不一样,因为内存的分配方式不一样。String str="i"的方式,java 虚拟机会将其分配到常量池中;而 String str=new String("i") 则会被分到堆内存中。

字符串反转

stringBuffer的reverse()方法。

String 类的常用方法

indexOf():返回指定字符的索引。

charAt():返回指定索引处的字符。

replace():字符串替换。

trim():去除字符串两端空白。

split():分割字符串,返回一个分割后的字符串数组。

getBytes():返回字符串的 byte 类型数组。

length():返回字符串长度。

toLowerCase():将字符串转成小写字母。

toUpperCase():将字符串转成大写字符。

substring():截取字符串。

equals():字符串比较。

标签:面试题,java,String,接口,字符串,抽象类,方法,final
From: https://www.cnblogs.com/cnleika/p/17093718.html

相关文章

  • Java两大工具库:Commons和Guava(6)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~   除了操作集合、限流和缓存,Guava还有另一个隐秘的功能:事件总线EventBus机制——是发布-订阅模式的实现,不需要显式......
  • 1.Java基础
    Java基础Java接口和抽象类有什么区别?共同点:都不能被实例化。都可以包含抽象方法。都可以有默认实现的方法(Java8可以用default关键字在接口中定义默认方法)。区别......
  • vue面试题
    1.常见的指令答v-ifv-elsev-elseifv-bindv-modelv-forv-showv-onv-textv-htmlv-cloakv-once2.vue的优点答:1.轻量级框架,值关注视图层2.双向数据的绑定,在数......
  • Java多线程并发06—CAS、AQS
    CAS(CompareAndSwap/Set)概念CAS函数,是比较并交换函数,它是原子操作函数。原理CAS是基于乐观锁的原理进行操作的。它总是认为自己可以成功完成操作。当多个线程同时使用CAS......
  • java——spring boot集成MongoDB——数据库安装和登录、简单使用
    参考文档,菜鸟教程:https://www.runoob.com/mongodb/mongodb-tutorial.html  参考文档、黑马教程:https://www.bilibili.com/video/BV1bJ411x7mq?p=1&vd_source=79bbd5b7......
  • Java异常
    Java异常异常指程序运行中出现的不期而至的各种状况。Java把异常当做对象来处理,并定义了一个基类java.lang.Throwable作为所有异常的超类。通常分为Error和Exception两......
  • JAVA 双亲委派与类加载器
    JAVA双亲委派与类加载器双亲委派虚拟机在加载类的过程中需要使用类加载器进行加载,而在Java中,类加载器有很多,那么当JVM想要加载一个.class文件的时候,到底应该由哪个类加......
  • Java流程控制
    Java流程控制用户交互Scannerjava.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户输入基本语法:Scanners=newScanner(System.in);通过Scann......
  • Java访问修饰符
    java中有两种类型的修饰符:访问修饰符和非修饰符。java中的访问修饰符指定数据成员,方法,构造函数或类的辅助功能(范围)。一共有4种类型的java访问修饰符:privatedefault......
  • #yyds干货盘点# LeetCode面试题:最长回文子串
    1.简述:给你一个字符串s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题......