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去查找重载的方法。

刷完一千道java笔试题的常见题目分析的更多相关文章

  1. java面试题—精选30道Java笔试题解答(二)

    摘要: java面试题-精选30道Java笔试题解答(二) 19. 下面程序能正常运行吗() public class NULL { public static void haha(){ System ...

  2. 【笔试题】精选30道Java笔试题解答

    转自于:精选30道Java笔试题解答 精选30道Java笔试题解答 1. 下面哪些是Thread类的方法() A. start() B. run() C. exit() D. getPriority( ...

  3. 精选30道Java笔试题附答案分析

    精选30道Java笔试题解答 都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑 ...

  4. 整理了2019年上千道Java面试题,近500页文档,用了1个月时间!

    spring 面试题 1.一般问题 1.1.不同版本的 spring Framework 有哪些主要功能? 1.2.什么是 spring Framework? 1.3.列举 spring Framew ...

  5. 精选30道Java笔试题解答

    转自:http://www.cnblogs.com/lanxuezaipiao/p/3371224.html 都 是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我 ...

  6. java面试题—精选30道Java笔试题解答(一)

    下面都是我自己的答案非官方,仅供参考,如果有疑问或错误请一定要提出来,大家一起进步啦~~~ 1. 下面哪些是Thread类的方法() A start() B run() C exit() D getP ...

  7. java笔试题13-11-21

    中xxx科技公司java笔试题 今天去参加一个公司的面试,去先做了一份笔试题,妈的,太他妈难了(对于我来说,最后做完一个员工说你是不是投错简历了,都是空白,我说我做的大部分都对了..最后面试都没有,就 ...

  8. 2016最新Java笔试题集锦

    更新时间:2015-08-13         来源:网络         投诉删除 [看准网(Kanzhun.com)]笔试题目频道小编搜集的范文“2016最新Java笔试题集锦”,供大家阅读参考, ...

  9. 华为Java笔试题

    华为Java笔试题+数据库题 一. 单项选择题 1.Java是从( )语言改进重新设计. A.Ada B.C++ C.Pasacal D.BASIC 2.下列语句哪一个正确( ) A. Java程序经 ...

随机推荐

  1. 【系统设计】S3 对象存储

    在本文中,我们设计了一个类似于 Amazon Simple Storage Service (S3) 的对象存储服务.S3 是 Amazon Web Services (AWS) 提供的一项服务, 它 ...

  2. Python基础之dict和set的使用

    dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言种也称为map,使用键-值(key-value)存储,具有极快的查找速度. 举个例子,假设要根据同学的名字 ...

  3. BS架构与CS架构

    BS与CS的区别:1.BS是标准规范的,CS的协议自定义:2.BS核心运算都在服务器端,CS客户端和服务器端都可以运算:3.BS只需要部署服务器端,CS需要同时升级客户端和服务器端. CS(Clien ...

  4. 【深入学习.Net】.泛型集合【体检管理系统】

    基于泛型List的体检管理系统(蜗牛爬坡) 第五章[体检管理系统] 一.项目展示图(基于.net core6.0) 二.首先准备两个Model类 HealthCheckItem(项目类):Name(项 ...

  5. Luogu4408 [NOI2003]逃学的小孩 (树的直径)

    一边一定是直径,另一边从两端点走取最小值的最大值 #include <iostream> #include <cstdio> #include <cstring> ...

  6. ahooks 中那些控制“时机”的hook都是怎么实现的?

    本文是深入浅出 ahooks 源码系列文章的第五篇,该系列已整理成文档-地址.觉得还不错,给个 star 支持一下哈,Thanks. 本文来探索一下 ahooks 是怎么封装 React 的一些执行& ...

  7. SpingBoot解析Excel数据

    前言 在最近的工作中,由于导入模板除了前三列(姓名.手机号.实发工资)固定:其余的列不固定,并且可以做到两个模板的数据都能够正常入库进行对应业务处理. 一.数据模板数据展示: (1)模板一 (2)模板 ...

  8. Unity获取脚本的CustomEditor(自定义编辑)数据

    在此之前,粗略的介绍下 CustomEditor(自定义编辑). Unity对于我们创建的Mono脚本提供了属性面板的展示和修改.默认情况下,Inspector面板中会显示当前脚本类的公开字段(pub ...

  9. PerfView专题 (第十篇):洞察 C# 终结队列引发的内存泄漏

    一:背景 C# 程序内存泄漏的诱发因素有很多,但从顶层原理上来说,就是该销毁的 用户根 对象没有被销毁,从而导致内存中意料之外的对象无限堆积,导致内存暴涨,最终崩溃,这其中的一个用户根就是 终结器队列 ...

  10. linux 3个快捷方式

    Ctrl+c组合键:当同时按下键盘上的Ctrl和字母c的时候,意味着终止当前进程的运行.假如执行了一个错误命令,或者是执行某个命令后迟迟无法结束,这时就可以冷静地按下Ctrl+c组合键,命令行终端的控 ...