刷完一千道java笔试题的常见题目分析

java基础刷题遇到的最常见问题

可以先看一下这位博主整理的java面试题(很详细,我看了好几遍了):https://blog.csdn.net/ThinkWon/article/details/104390612

java基础知识https://blog.csdn.net/weixin_43304253/article/details/119386696

你以为你掌握基础吗?真的掌握了吗?真真真的掌握了吗?做几道题就知道有多虐心了,一个知识点变着发的搞你心态。还有很很很重要的一点,只要牵涉的知识稍微深一点,都离不开JVM知识。

建议先看一下jvm的视屏再看,整理的时候主要是内存结构图以及重要的知识。很多细节忽略了。对待刚接触jvm的不太友好。
JVM内存图:https://blog.csdn.net/weixin_43304253/article/details/119609324

1、在这里插入图片描述
解析:

Java标识符命名规则:
1 由26个大小写的英文字母"A-Z",“a-z”;数字"0-9",下划线"_" 和
美元符号"$"四部分组成;

2 标识符以字母或下划线"_“或” " 开 头 ; 注 : 尽 管 " "开头; 注:尽管" ";""是一个合法的Java字符,但尽量不要在代码中使用这个字符,
它一般用在Java编译器或其他工具生成的名字中;

3 标识符不能是关键字,如:public,protected,…
以及两个保留的 关键字const和goto;

4 标识符区分大小写。
A 中不能以数字开头;
B 中不能以& 开头(不是$);
C 中是保留的关键字;

sizeof:是C/C++的方法
保留字:const goto
显示常量值:true 、false、null
关键字:
在这里插入图片描述

2、在这里插入图片描述

抽象类:
1、关键字abstract class
2、子类extends继承抽象类,只能单继承
3、成员变量权限四个public 、protected、default、private
【public 范围最大、protected 可以在包以外的子类、default默认修饰符只能在同一个包下、private只能在当前类。(经常问这个)】
4、抽象方法权限只有public、protected、和default三种。
5、可以包含静态代码块,静态方法
6、可以有普通方法
7、继承者如果是全部继承抽象方法就不再是抽象类,否则任然是抽象类

接口
1、关键字interface
2、子类implements实现接口,实现多个接口
3、不能有构造器
4、成员变量权限默认都是public static final ,接口中声明的变量都是常量不能被继承
5、方法默认权限public abstract
6、不可以有静态代码块,可以有静态方法
7、没有普通方法
8、下一代只能实现

接口方法的增加随着版本的更新改变
jdk1.7,接口中只包含抽象方法,使用public abstract修饰
jdk1.8(不包括)之前:接口中不能有静态方法
jdk1.8(包括哦)1.8之后:接口中可以定义静态方法。
在jdk1.8,接口中加入了默认方法(default修饰,接口的实现类,直接调用或者重写该方法)、静态方法(static修饰,通过接口调用)
在jdk1.9中,接口中加入了私有方法,使用private修饰,私有方法供接口内的默认方法使用

3、在这里插入图片描述
解析:
1、String中的equal比较的是两个字符串的内容是否相等。(这里的equals重写了Object中的equals)
2、Object中的equals和==相等。比较的都是引用地址

String a=“a”;//存储在方法区中的常量池
String b=“a”;//常量池中a的引用给b

只要是new 就会在堆中开辟新的内存空间

4、在这里插入图片描述
解析:
运行过程:当程序执行到try{}语句中的return方法,将返回的结果存储到一个临时栈,程序不会立即返回,而是执行finally{}中的程序,覆盖了a的值,不会去更新临时栈中的那个要返回的值。

如果finally{}里边也有一个return 执行这个return的时候,就会更新临时栈的值。

结论:
1、不管有没有异常,finally块里边的代码都会执行(也有不执行的时候,不要钻牛角尖)
2、当try{}和catch{}中都有return时,仍然会执行finally{}
3、finally{}中包含return,会让程序提前退出,返回值不再是try{}或catch{}中保存的值

巧记:任何执行try或者return语句之前,都会执行finally语句,如果finally存在,如果finally语句包含return语句。程序就return了。finally中的return一定会被return

5、在这里插入图片描述
详细区分(包含代码):https://blog.csdn.net/weixin_43304253/article/details/119418766

6、在这里插入图片描述
解析:
首先明白一点:
类方法是属于整个类的,不是每个实例所独有的。用static修饰
实例方法是属于类的某个对象的。

类方法在初始化阶段就已经加载到方法区中。对象后来在堆中创建。一个已经存在的怎么可能使用未创建出来的。

  • 类方法中不能引用对象变量

  • 类方法中不能调用类的对象方法

  • 类方法中不能使用super、this关键字

  • 类方法不能被覆盖

  • 对象方法可以引用对象变量,也可以引用类变量

  • 对象方法中可以调用类方法

  • 对象方法中可以使用super、this关键字。

this关键字的用法

  • 1、普通的直接引用,相当于当前对象本身
  • 2、形参与成员名字相同,区分
  • 3、引用本类的构造函数(需要放在构造函数的第一行)

super关键字的用法

  • 1、普通的直接引用(引用父类)(相当于指向当前对象的父类的引用)
  • 2、子类中的成员变量或者方法与父类的成员变量或者方法重名时,区分
  • 3、 引用父类的构造函数(放在子类构造函数的第一行)

如果子类重写父类的方法,在new出一个父类对象的子类引用。调用的方法是子类重写的方法,若要调用父类的重名方法需要使用super。

7、在这里插入图片描述
解析:
首先是类初始化、然后是对象初始化
跟我一起来读=======
父类静态代码块—>子类静态代码块–>父类非静态代码块–>父类构造函数–>子类非静态代码块–>子类的构造方法

8、在这里插入图片描述
static方法中时不能访问非静态变量a的,需要将a声明为static,答案才是0.

静态方法在初始化阶段就已经初始化,怎么可能调用未初始的变量。

9、在这里插入图片描述
数据类型:1、基本数据类型(数值型(整数型、浮点型)、字符型、布尔型)。2、引用数据类型(类、接口、数组、String)

10、在这里插入图片描述
重写(覆盖)

两同两小一大
两同:方法名和参数列表相同
两小:重写方法的返回值和抛出的异常小
一大:重写方法的访问修饰符大于等于被重写的访问修饰符。

  • 1、方法运行的时候(子类没有重写父类的方法,子类的实例会向上寻找父类的同名方法)

  • 2、重写只发生在可见的实例方法中【1、静态方法不存在重写,形式上的重写只能是隐藏。2、私有方法也不能重写,子类就算定义了,也相当于一个新的方法。3、静态方法和实例方法不存在相互重写】

  • 修饰符:可以扩大不能缩小。父类是public 子类不能是private

  • 抛出的异常可以缩小。父类的异常范围比子类的异常范围大

重载【方法名相同、参数列表不同】

  • 方法名相同
  • 参数列表不同(个数不同或类型不同、参数排列顺序)
  • 方法的返回值类型可相同也可以不同

11、在这里插入图片描述
解析:
String对象的两种创建方式:

  • 1、String str1=“aaa”;在常量池中获取对象,编译时期会在常量池中创建一个字符串对象
  • 2、String srr2=new String(“aaa”);一共会创建两个字符串对象,一个在堆中,一个在常量池中(前提是常量池还没有"aaa"字符串对象)

String类型的常量池比较特殊

直接使用双引号声明出来的String对象会直接存储在常量池中。
如果不是双引号声明的String对象,可以使用String提供的intern方法,String.intern()是一个Native方法,作用:如果运行时常量池中已经包含一个等于次String内容的字符串,则返回常量池中该字符的引用;如果没有,则在常量池中创建与此String内容相同的字符串,并返回常量池中创建的字符串的引用

12、
在这里插入图片描述
JVM中的方法区:https://blog.csdn.net/weixin_43304253/article/details/119645888
在这里插入图片描述
13、
在这里插入图片描述

  • synchronized:具有原子性,有序性、可见性
  • volatile:具有有序性和可见性
    在这里插入图片描述
    14、在这里插入图片描述
    解析:
    java语言是静态多分配,动态单分配的

如果是方法重载选择,使用静态类型
如果是父子之间的方法重写,使用动态类型。
入 A a=new B(); 类型B去查找重写的方法。类型A去查找重载的方法。

posted on 2022-08-28 22:20  热爱技术的小郑  阅读(93)  评论(0编辑  收藏  举报