笔试面试--Java基础知识
一、基本概念
1、Java的优点
- 纯面向对象
- 平台无关性,“一次编译,到处运行(JVM上)”,跨平台,可移植性
- 丰富类库:多线程、网络通信、垃圾回收
- 安全性(数组边界检测、bytecode校验)和健壮性(异常处理)
- 基于C++改进并去除C++难以理解的特性(头文件、指针、结构体、运算符重载、多重继承),使得程序严谨简洁
2、与C/C++的异同
- 与C++的相同点:使用OO思想(封装、继承、多态),具有较好的重用性
- 不同点:
- Java为解释性语言(先编译为字节码,再由JVM解释执行),速度慢,但是可跨平台;C/C++为编译型语言(编译链接为 可执行的二进制代码),速度快,但是不可跨平台
- Java是纯面向对象(变量、方法须在类内执行,不存在全局变量/函数,除基本类型都是类);C/C++兼具面向对象和面向过程,可定义全局变量和全局函数
- Java没有指针,避免指针带来系统问题,使程序 更安全
- Java无多继承,但通过接口的多态,可以实现多个接口实现类似多继承的功能
- C++需要开发人员管理内存的分配(申请与释放)将其放在析构函数中;Java提供垃圾回收机制实现自动回收 ,调用finalize()方法
- Java具有平台无关性,C/C++同类型在不同平台上分配不同的字节数
- 其他:运算符重载、goto语句、注释文档、标准库(JDBC)
- 易错:Java语言中的方法属于类中的成员
- 原因:静态方法属于类的成员,其他方法属于对象的成员※
3、为什么需要main方法
public static void main(String[] args)
- 程序的入口方法,无需实例化对象即可执行
- 多个类中,与文件名相同的类的main方法才是入口函数
- 其他格式:static public/public static final void/static public synchronized void
4、main方法前执行输出
静态代码块在类加载时就会被调用,与main方法的先后顺序 无关
5、Java程序的初始化顺序
- 静态对象优于非静态对象(静态变量优于静态代码块),初始化次数不同
- 父类优先于子类
- 按成员变量定义顺序初始化
6、Java的作用域有哪些?
- 三种变量:成员变量(生命周期随对象实例化)、静态变量(随类加载,通过类名访问 )、局部变量(没有全局变量,作用域看大括号)
- 成员变量作用域
- public
- private
- protected:同一包下或子类
- default:同一包下
7、一个文件中是否可以有多个类
可以
只能有一个类被public修饰,且类名=文件名;
如果没有类被public修饰,则文件名随意=哪个类。
8、什么是构造函数?
- 用于在对象实例化时初始化对象的成员变量
- 与类名相同,无返回值
- 默认无参,可以重载,重载后不再默认创建无参构造
- 不能被继承,子类通过super调用父类构造
- 父类有无参构造,不需要显式调用,会默认调用
- 父类没有无参构造,需要显式调用(super.)
- 注意:可以有与构造重名的函数(普通方法可以与类重名),构造在对象new时执行
9、为什么有些接口没有任何方法?
- 无任何方法声明的接口也叫标识接口,起标识作用
- 常见的标识接口包括Cloneable和Serializable,使用instanceof判断实例对象类型 是否实现了标识接口
10、clone方法的作用
- 对象复制,Object提供clone方法
- 实现类需要继承Cloneable接口
- 浅复制(只有基本类型)&深复制(有引用类型时,需要执行get方法进行深复制)
11、什么是反射机制
- 运行时自我检查,并可以对内部成员进行操作
- 运行时对类进行装载,增加程序灵活性
- 可以在运行时动态地创建类的对象
- 功能:得到对象所属的类,获取类的所有变量和方法,运行时创建对象(Class对象.newInstance),运行时调用对象的方法
- 反射时如何获取Class类?
- Class.forName(类名)
- 类名.class
- 实例.getClass()
- 补充:Java创建对象的方式有几种
- new语句实例化对象
- 反射机制创建对象
- clone克隆一个对象
- 通过反序列化的方式创建对象※
12、package的作用
- 提供多层命名空间,解决命名冲突(不同包可以 重名)
- 对类按功能分类,使项目组织更加清晰
- 其他:包由一组类和接口组成
13、如何用Java实现C语言中的指针?
回调函数:通过接口类型作为参数,传递实现类作为参数,实现不同的功能
步骤:定义接口,声明方法,实现接口,实现类对象作为参数传递给调用程序,调用程序通过参数调用指定的函数,实现回调函数的功能
举例:排序/开发人员希望系统动态链接库DDL调用自定义方法,利用DDL回调函数接口编写程序,从而实现回调
二、面向对象技术
三、关键字
四、基本类型与运算
五、字符串与数组
六、异常处理
七、输入输出流
八、Java平台与内存管理
九、容器
十、多线程
笔试面试--Java基础知识的更多相关文章
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
- Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- 毕向东—Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- 沉淀,再出发:Java基础知识汇总
沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...
- 大话java基础知识一之为什么java的主函数入口必须是public static void
为什么java的主函数入口必须是public static void main (String[] args); 很多写javaEE好几年的程序员经常会记得java的主函数就是这么写的,但实际上为什么 ...
- 【Java面试题系列】:Java基础知识常见面试题汇总 第一篇
文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后,一般都会让先做一份笔试题,然后公司会根据笔试题的回答结果,确定 ...
- 黑马毕向东Java基础知识总结
Java基础知识总结(超级经典) 转自:百度文库 黑马毕向东JAVA基础总结笔记 侵删! 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部 ...
- Java基础知识常见面试题汇总第一篇
[Java面试题系列]:Java基础知识常见面试题汇总 第一篇 文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
随机推荐
- Stream流式计算
Stream流式计算 集合/数据库用来进行数据的存储 而计算则交给流 /** * 现有5个用户,用一行代码 ,一分钟按以下条件筛选出指定用户 *1.ID必须是偶数 *2.年龄必须大于22 *3.用户名 ...
- Nginx反代服务器进阶学习最佳配置实践指南
转载自:https://www.bilibili.com/read/cv16150010?spm_id_from=333.999.0.0 0x00 编译实践 描述:在企业线上生产环境中推荐进行Ngin ...
- Docker Compose配置文件详解(V3)
Docker Compose配置文件是Docker Compose的核心,用于定义服务.网络和数据卷.格式为YAML,默认路径为./docker-compose.yml,可以使用.yml或.yaml扩 ...
- 【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问
前言:目前翻译都是在线的,要在C#开发的程序上做一个可以实时翻译的功能,好像不是那么好做.而且大多数处于局域网内,所以访问在线的api也显得比较尴尬.于是,就有了以下这篇文章,自己搭建一套简单的离线翻 ...
- 文件内再分类到各txt文件
当老师叫我们帮他做事,比如文件内内容再分类,我们就可以建个面板,里面有各要导入文件按钮,先把分类内容copy下,再点按钮导入进txt文件就行啦. 以下为java代码,使用了tableLayout布局 ...
- 6.MongoDB系列之特殊索引和集合类型
1. 地理空间索引及全文搜索 与Elasitcsearch一样,MongoDB同样支持地理空间索引及全文搜索,由于选型常用ES而非MongoDB此处略过 2. TTL索引 首先先了解下固定集合,其类似 ...
- jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上 1.JavaBean的使用 package com.zheng; public class BookBean { ...
- 生成随机数的几种方法、Math.random()随机数的生成、Random()的使用
第一种方法使用:System.currentTimeMillis(); final long l = System.currentTimeMillis(); final int rs = (int) ...
- springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
要实现的目的:根据登录用户.查询出当前用户具有的所有权限.然后登录系统后.根据查询到的权限信息进行不同的操作. 以下的代码是在搭好的框架之下进行的编码. 文章目录 核心实现部分. 第一种是将用户表和角 ...
- Linux系统安装宝塔面板教程
# Linux系统宝塔安装教程 注意:安装宝塔面板的前提条件 首先要有一台服务器或者使用linux系统的虚拟机. 安装前请确保是[全新的机器].必须是没装过其它环境的新系统,如Apache/Nginx ...