Java基础知识篇【gitee】
https://snailclimb.gitee.io/javaguide
一、Java基本功
Java一次编译,字节码通过JVM,处处运行
jsp会转化为servlet,也要由jdk编译
OracleJDK性能更好,更稳定,但不开源
Java无指针访问内存,更安全。C++支持多重继承,Java接口可以多继承。C++字符串后默认加'\o'表示结束
小程序继承自JApplet,主类需要是public,嵌入浏览器调用init/run启动,无main方法
javax和java均为标准API的一部分,只是名字无区别
字符占2字节,存整数值,字符串存地址
单行/多行/文档注释
const和goto是Java保留字
泛型:通过安全检测机制,本质是参数化类型。通配符:TEKV?
==基本类型比较值,引用类型比较地址。equals等价于==比较地址
String类重写equals方法,在常量池中查找相同的,赋给引用变量
重写equals方法必须重写hashcode,hashset先判断hashcode再判断equals方法决定是否能够插入
Float和Double并未实现常量池,直接比较不相等
浅拷贝:基本类型值传递,引用类型引用传递;深拷贝引用类型创建新对象,并复制内容
二、Java面向对象
面向过程无需实例化类,性能高;面向对象灵活易于维护,但性能低(半编译,不能直接被执行)
执行子类构造前,会默认调用super无参构造(帮助子类进行初始化),因此需要在父类补充无参构造。
成员变量有默认初值
对象相等是内容相等,引用相等是内存地址 相等
子类拥有父类的所有属性和方法,但无法访问私有部分
静态方法可不通过对象调用,故静态方法中不能调用非静态变量,只能访问静态成员
String使用final修饰字符数组保存字符串,故String对象不可变。StringBuilder/StringBuffer保存字符串的数组没有用final修饰,故可变
String不可变,StringBuffer(性能提升不大)对方法加同步锁,均线程安全。
StringBuilder/StringBuffer继承AbstractStringBuilder类,包含expandCapacity,append,insert,indexOf等方法
Object类:getClass/hashCode/equals/clone/toString/notify/notifyAll/wait/finalize(垃圾回收时触发)
transient关键字阻止变量序列化
读取键盘输入:BufferedReader = (InputStreamReader(System.in))
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String s = input.readLine();
三、Java核心技术
工具类方法
异常基类Throwable,两个子类Exception异常(能被程序本身处理)和Error错误
try...catch捕获异常,JDK7后使用try-with-resources释放资源,try声明资源无finally
线程是进程执行单位,也被称为轻量级进程
按流的角色可以分为节点流和处理流
输入流的基类InputStream/Reader,输出流的基类OutputStream/Writer
流操作:缓冲操作、文件操作、基本类型操作、对象序列化、转化控制、打印控制、管道操作、数组操作
BIO (Blocking I/O),同步阻塞I/O,读取写入在单个线程内完成;
NIO (Non-blocking/New I/O),同步非阻塞I/O,提供阻塞和非阻塞模式,适用于高负载,高并发;
AIO (Asynchronous I/O),也被称为NIO2,异步非阻塞的IO模型,基于事件和回调机制实现,执行完操作不会阻塞
Java基础知识篇【gitee】的更多相关文章
- 「Java面试题/知识点精华集」20000+字的Java基础知识篇(2020最新版) !
本文已经收录进我的 79K Star 的 Java 开源项目 JavaGuide:https://github.com/Snailclimb/JavaGuide (「Java学习+面试指南」一份涵盖大 ...
- 超详细的Java面试题总结(二)之Java基础知识篇
多线程和Java虚拟机 创建线程有几种不同的方式?你喜欢哪一种?为什么? 继承Thread类 实现Runnable接口 应用程序可以使用Executor框架来创建线程池 实现Callable接口. 我 ...
- 超详细的Java面试题总结(一)之Java基础知识篇
面向对象和面向过程的区别 面向过程: 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linux/Unix等一般采用面向过程开发,性能是最重要的因 ...
- Java 基础知识(一)
Java基础知识篇: 一.关键字解释 1. final:修饰非抽象类,非抽象方法和属性, 以及修饰方法参数,代表“无法改变的”.出于对设计或者效率的考虑使用该关键字. final类无法被继承,fina ...
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
- Java 面试知识点解析(一)——基础知识篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java基础知识回顾之七 ----- 总结篇
前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...
- 【Java面试】1、基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充. 源码分享:https: ...
- 【Java面试题系列】:Java基础知识常见面试题汇总 第一篇
文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后,一般都会让先做一份笔试题,然后公司会根据笔试题的回答结果,确定 ...
- Java基础知识常见面试题汇总第一篇
[Java面试题系列]:Java基础知识常见面试题汇总 第一篇 文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后 ...
随机推荐
- k8s ingress-nginx 使用 snippet 添加自定义配置 (比如:新增请求头)
比如在有些时候我们需要在 server 里或者 location 里添加一些参数,例如添加包体大小限制.添加跨域配置.添加自定义header.处理响应header等等.遇到这些需求的时候,我们开始怀念 ...
- es分片数相关知识
分片数量 总分片数=主分片数 *(副分片数+1) 如下创建索引配置表示,总分片数=1 *(1+4),表示总共5个分片. "settings": { "number_of_ ...
- PAT (Basic Level) Practice 1030 完美数列 分数 25
给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列. 输入格 ...
- 自定义ListView下拉刷新上拉加载更多
自定义ListView下拉刷新上拉加载更多 自定义RecyclerView下拉刷新上拉加载更多 Listview现在用的很少了,基本都是使用Recycleview,但是不得不说Listview具有划时 ...
- JUI(6)线程池
文章目录 1.SynchronousQueue 2.线程池(重点) 2.1 使用单例 2.2.使用固定大小的线程 2.3.缓存线程池 2.4 七大参数 1.SynchronousQueue packa ...
- vue-router路由实现页面的跳转
1.项目结构 2.定义组件 组件1 Login.vue <template> <form> 账号:<input type="text"> 密码: ...
- 1.WEB应用模式
1. Web应用模式 在开发Web应用中,有两种应用模式: 前后端不分离[客户端看到的内容和所有界面效果都是由服务端提供出来的.] 前后端分离[把前端的界面效果(html,css,js分离到另一个服务 ...
- JavaSPI详解
目录 一个问题 什么是SPI API 与 SPI 一个简单的例子 SPI机制的实现 Java SPI的问题 为什么SPI机制打破了双亲委派模型 参考资料 一个问题 在项目开发中,经常会使用到数据库驱动 ...
- c++ 模板 指针类型偏特化
一步步来,先简单点. 目标:我们要实现一个模板类,例化后,可以通过get_val获取到值,通过get_ptr获取到指针.具体什么意思结合例子来看看吧. 例子: struct A{ int data; ...
- CentOS6/7 配置守护进程
CentOS6.x CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式. 一.相关命令 通过initctl help可以查看相关命令 [root@localhost ~ ...