《java程序员面试笔试宝典》学习笔记

在此声明,本文为个人学习笔记,内容主要摘抄与整理自《java程序员面试笔试宝典–何昊》一书(买了正版书)。特此感谢作者,若用于其他商业使用请联系作者。

笔记目录

  1. java基础知识
  2. java Web

知识点
1、java的优点
(1)、java为纯面向对象的语言
(2)、平台无关性。“一次编译,到处运行”,跨平台。
(3)、内置类库丰富
(4)、提供对Web应用开发的支持
(5)、较好的安全性和健壮性
(6)、去除C++语言中难以理解的特征,例如头文件、指针、结构、单元、运算符重载,多重继承。

2、为什么需要public static void main(String[] args)这个方法
public static void main(String[] args)为java程序的入口方法,JVM在运行程序时,会首先查找main()方法。其中,public是权限修饰符,表明任何类或对象都可以访问这个方法,static表明main()方法是一个静态方法,即方法中的代码是存储在静态存储区的,只要类被加载后,就可以使用该方法而不需要通过实例化对象来访问,可以直接通过类名,main()直接访问,JVM在启动时就是按照上述方法的签名来查找方法的入口地址,若能找到就执行,找不到,则会报错。
void表明方法没有返回值;
main是JVM识别的特殊方法名,是程序的入口方法;
字符串数组参数args为开发人员在命令行状态下与程序交互提供了一种手段。
引申:
2.1、main()方法的可用定义格式:
(1)、public与static没有先后顺序
(2)、可以使用final修饰
(3)、可以使用synchronized修饰
(4)、不能使用abstract修饰
2.2、同一个.java文件中可以有多个main()方法,但是只有与文件名相同的用public修饰的类中的main()方法才能作为整个程序的入口方法。
如下例:创建一个名为Test.java的文件

class T{public static void main(String[] args){System.out.println("T main");}
}public class Test{//程序入口函数public static void main(String[] args){System.out.println("Test main");}
}

程序运行结果:
Test main

3、Java程序初始化的顺序
(1)、遵循三个原则:
静态对象(变量)优先于非静态对象(变量)初始化,其中,静态对象(变量)只初始化一次,而非静态对象(变量)可能初始化多次;
父类优先于子类进行初始化;
按照成员变量的定义顺序进行初始化。
(2)、执行顺序如下:
父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、
父类非静态变量、父类菲静态代码块、父类构造函数、
子类非静态变量、子类菲静态代码块、子类构造函数

class Base{static{System.out.println("Base static block");}{System.out.println("Base block");}public Base(){System.out.println("Base constructor");}
}
public class Derived extends Base{static{System.out.println("Derived static block");}{System.out.println("Derived block");}public Derived(){System.out.println("Derived constructor");}public static void main(String[] args){new Dervied();}
}

程序运行结果:
Base static block
Dervied static block
Base block
Base constructor
Dervied block
Dervied constructor

4、Java中的变量作用域:
(1)、成员变量:与类的实例化对象的作用范围相同。
(2)、静态变量:使用static修饰的成员变量,不依赖于特定实例,只要一个类被加载,JVM就会给类的静态变量分配存储空间。
(3)、局部变量:作用域与可见性为所在花括号内
另外,成员变量可以有权限修饰符,区别如下表:

5、构造函数的特点
(1)、构造函数必须与类的名字相同,并且不能有返回值(返回值也不能为void)
(2)、每个类可以有多个构造函数。默认编辑器会提供无参构造函数
(3)、构造函数可以用0个、1个或1个以上的参数
(4)、构造函数总是伴随new操作一起调用,且不能由程序的编写者直接调用,必须要由系统调用
(5)、构造函数作用是完成对象的初始化工作
(6)、构造函数不能被继承,但是可以被重载
(7)、子类可以通过super关键字来显示的调用父类的构造函数,当父类没有提供无参构造函数,子类中必须显式地调用父类的构造函数。
(8)、当父类和子类都没有定义构造器时,编译器会为父类生成一个默认的无参构造函数,给子类也生成一个默认的无参构造函数。

class Base{static{System.out.println("Base static block");}{System.out.println("Base block");}
//  public Base(){//      System.out.println("Base constructor");
//  }public Base(String arg){System.out.println("Base constructor-->"+arg);}
}
public class Derived extends Base{static{System.out.println("Derived static block");}{System.out.println("Derived block");}public Derived(){super("dd");//此处必须显式调用,负责编译不通过(原则(7))System.out.println("Derived constructor");}public static void main(String[] args){new Derived();}
}

程序运行结果:
Base static block
Derived static block
Base block
Base constructor–>dd
Derived block
Derived constructor

6、反射机制
允许程序在运行时进行自我检查,同时也允许对其内部的成员进行操作
功能:得到一个对象所属的类;获取一个类的所有成员变量和方法;在运行是创建对象;在运行时调用对象的方法。
获取Class类的方法:
(1)、class.forName(“类的路径”)
(2)、类名.class
(3)、实例.getClass()
笔试题:
Java创建对象的方式有哪几种?
答案:共有以下四种
(1)、通过new语句实例化一个对象
(2)、通过反射机制创建对象
(3)、通过clone()方法创建一个对象
(4)、通过反序列化创建对象

7、面向对象有哪些特征
四大特征:抽象、继承、封装和多态
(1)、抽象。抽象就是忽略一个主题中与当前目标无关的那些方面,以便充分地注意与当前目标有关的方面。抽象包括两个方面:一是过程抽象;二是数据抽象
(2)、继承。一种联结类的层次模型,并且允许和鼓励类的重用,他提供一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。
(3)、封装。封装是指将客观事物抽象成类,每个类对自身的数据和方法实行保护。
(4)、多态。多态是指允许不同类的对象对同一个消息做出响应。
8、什么是继承
通过继承,子类可以使用父类中的一些成员变量与方法,从而提高代码的复用性,提高开发效率。

《java程序员面试笔试宝典》学习笔记相关推荐

  1. 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术

    本章要点 任何一个应用程序,总是不停的和数据打交道. 瞬时数据:指储存在内存当中,有可能因为程序关闭或其他原因导致内存被回收而丢失的数据. 数据持久化技术,为了解决关键性数据的丢失. 6.1 持久化技 ...

  2. 第一行代码学习笔记第二章——探究活动

    知识点目录 2.1 活动是什么 2.2 活动的基本用法 2.2.1 手动创建活动 2.2.2 创建和加载布局 2.2.3 在AndroidManifest文件中注册 2.2.4 在活动中使用Toast ...

  3. 第一行代码学习笔记第八章——运用手机多媒体

    知识点目录 8.1 将程序运行到手机上 8.2 使用通知 * 8.2.1 通知的基本使用 * 8.2.2 通知的进阶技巧 * 8.2.3 通知的高级功能 8.3 调用摄像头和相册 * 8.3.1 调用 ...

  4. 第一行代码学习笔记第六章——详解持久化技术

    知识点目录 6.1 持久化技术简介 6.2 文件存储 * 6.2.1 将数据存储到文件中 * 6.2.2 从文件中读取数据 6.3 SharedPreferences存储 * 6.3.1 将数据存储到 ...

  5. 第一行代码学习笔记第三章——UI开发的点点滴滴

    知识点目录 3.1 如何编写程序界面 3.2 常用控件的使用方法 * 3.2.1 TextView * 3.2.2 Button * 3.2.3 EditText * 3.2.4 ImageView ...

  6. 第一行代码学习笔记第十章——探究服务

    知识点目录 10.1 服务是什么 10.2 Android多线程编程 * 10.2.1 线程的基本用法 * 10.2.2 在子线程中更新UI * 10.2.3 解析异步消息处理机制 * 10.2.4 ...

  7. 第一行代码学习笔记第七章——探究内容提供器

    知识点目录 7.1 内容提供器简介 7.2 运行权限 * 7.2.1 Android权限机制详解 * 7.2.2 在程序运行时申请权限 7.3 访问其他程序中的数据 * 7.3.1 ContentRe ...

  8. 第一行代码学习笔记第五章——详解广播机制

    知识点目录 5.1 广播机制 5.2 接收系统广播 * 5.2.1 动态注册监听网络变化 * 5.2.2 静态注册实现开机广播 5.3 发送自定义广播 * 5.3.1 发送标准广播 * 5.3.2 发 ...

  9. 第一行代码学习笔记第九章——使用网络技术

    知识点目录 9.1 WebView的用法 9.2 使用HTTP协议访问网络 * 9.2.1 使用HttpURLConnection * 9.2.2 使用OkHttp 9.3 解析XML格式数据 * 9 ...

  10. 安卓教程----第一行代码学习笔记

    安卓概述 系统架构 Linux内核层,还包括各种底层驱动,如相机驱动.电源驱动等 系统运行库层,包含一些c/c++的库,如浏览器内核webkit.SQLlite.3D绘图openGL.用于java运行 ...

最新文章

  1. java的不足_Java不足之我见
  2. vscode编辑器自动格式化
  3. 值得研究的 开源数据库
  4. jmeter 生成计数器_使用密码摘要生成器扩展JMeter
  5. 关于计算机设计的英语作文,一篇关于计算机的看法的英语作文
  6. Yii2.x 互斥锁Mutex-类图
  7. MakerDAO新增renBTC和UNI作为Dai抵押品
  8. 5分钟搭一个FastDFS--Linux篇
  9. Ubuntu修改默认root及密码
  10. java静态声明调用_求问 static声明的方法不是只能调用静态属性或者方法吗?
  11. 三菱iQ-R系列PLC控制系统项目全套资料 系统才用三菱iQ-R系列PLC,采用R04CPU
  12. 金山毒霸推新产品金山卫士 正面狙击奇虎360
  13. AR Engine光照估计能力,让虚拟物体在现实世界更具真实感
  14. 规则 | 卖家速自查!淘宝网发起专项整治,“品牌不一致”无处藏身
  15. java魔剑天使_大天使之剑大神教你打造牛逼魔剑士
  16. 【RPC实战与核心原理】-第19讲-分布式环境下定位问题
  17. 【历史上的今天】6 月 8 日:万维网之父诞生;PHP 公开发布;iPhone 4 问世
  18. 图片批量重命名编号,一键处理的方法!
  19. vue3 项目实践总结
  20. 多彩微立体述职报告PPT模板

热门文章

  1. .net写加密的com组件给ASP,VB,VC等其他语言调用
  2. 武汉大学计算机学院宿舍楼名称,武汉大学寝室排名 寝室图片
  3. Lftp 支持大文件,断点续传
  4. explain是mysql的关键字吗_mysql 中的explain关键字
  5. C# WPF – 利用“Attached Property” 把 RoutedEvent 接上 ICommand
  6. python基础--del操作
  7. 2021-最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)---JavaScript篇
  8. mac 管理 android手机助手,Mac 篇十二:Mac如何更高效的管理安卓手机和iPhone,老机器也可用哦...
  9. 网络安全与网站安全及计算机安全:如何通过Kali Linux设置一个钓鱼安全测试网站?
  10. 微信小程序 自定义控件 数字键盘