
JavaSE
madfs
生命的本质在于运动、学习和奋斗。
展开
-
谈谈对于类的初始化顺序理解
提到类的初始化顺序,首先我们应该思考一下类为什么要初始化呢?不初始化行不行?不用想答案也是否定的,为什么?就比如我们需要使用某个东西,但是前提是这件东西得存在吧,这也是为什么必须初始化的原因。我们知道局部变量需要我们手动给它赋值,而成员变量如果我们没有赋值的话是JVM自动帮我们赋予默认值的,这也是Java保证了使用前必须初始化的一种机制。首先我们把类的属性分为静态和非静态这个两种,然后分别去分析这两种更容易让人理解。静态成员包括静态成员变量和静态代码块,它们两个在类的加载中会按照自然顺序加载,而原创 2021-10-10 10:29:57 · 413 阅读 · 0 评论 -
变量初始化
一、实例变量初始化从语法的角度,程序可以在3个地方对实例变量执行初始化:1.在定义实例变量时指定初始值2.在构造器中指定初始值3.在非静态代码块中指定初始值其中1,3比2更早的执行,1,3的执行顺序就是它们在源程序中的排列顺序。二、类变量初始化类变量可以在2个地方执行初始化:1.定义类变量时指定初始值2.在静态代码块中初始化这两种的执行顺序与它们在源程序的排列顺序相同三、父类构造器当创建任意一个对象时,程序总会依次调用每个父类的非静态初始化块,父类构造器执行初始化,最后才调用本类的非原创 2021-04-21 20:02:12 · 945 阅读 · 0 评论 -
数组
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、数组是什么?二、数组的初始化总结前言数组在我们的Java语言中占据了一个非常重要的作用,但是仔细思考一下自己对于数组也只是表面的理解,因此想着重新去分析它,去看看数组到底是什么?一、数组是什么?数组(Array)是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序原创 2021-04-18 10:57:34 · 535 阅读 · 1 评论 -
Java访问权限控制符
private:私有的,只能在本类中使用,正常情况下外部无法访问(特殊情况如通过反射的getDeclaredXXX是可以获取私有的)默认的:什么都不写,只能在同一个包中使用,注意这和有些可以省略不写的是有区别的,例如接口中成员变量默认是 public static finalprotect:受保护的,可以在子类中使用,即使处于不同的包中;如果在不同的包中那么就不能通过子类的实例去调用,可直接使用父类实例public:公共的,不受任何限制,只要是本身有的都可以访问...原创 2021-04-06 18:23:10 · 93 阅读 · 0 评论 -
什么是 java 序列化?什么情况下需要序列化
序列化:就是把对象转化成字节流的过程反序列化:就是反过来把字节流转换成对象为什么需要序列化,从字节流就可以看出是为了网络之间的传输和IO流之间的操作,所以网络编程和持久化到文件中是需要序列化的。...原创 2021-04-06 12:46:41 · 312 阅读 · 0 评论 -
CAS是什么
最近在看多线程的有关知识,经常看到CAS这个名词,也查了很多的相关资料,下面简单说一下我对其的理解。CAS英文名称:compare and swap 即比较并交换,从这就可以看出它的基本机制。说起CAS就需要提到乐观锁和悲观锁,悲观锁:悲观的认为别人总是会修改共享数据,所以每次获取数据时就会加锁,乐观锁:乐观的认为别人不会修改数据,所以在获取数据时不是上锁,但是在更新数据时会检测数据是否冲突。CAS就是乐观锁的一种实现方式,核心是冲突检测和数据更新。当多个线程尝试使用CAS同时更新同一个变量时,只有一原创 2021-04-06 00:44:36 · 535 阅读 · 0 评论 -
怎么确保一个集合不能被修改
回答这个问题前我们应该首先想一下集合的作用,集合就是为了存取数据使用的,你不想他被修改,那么不能让他调用新增、修改、删除方法不就行了。使用Java工具类Collections.unmodifiableXXX() 这一系列的方法可以把集合转换成不能修改的集合,分析源码就可以看出这个工具类是通过返回内部类集合,但这个内部类在修改集合的方法上直接抛异常,所以也就不能被修改了。以unmodifiableList为例,截取部分代码如下:...原创 2021-04-05 18:37:46 · 847 阅读 · 0 评论 -
String 类的常用方法都有那些
length:返回字符串的长度equals:比较字符串内容是否相等equalsIgnoreCase:不区分大小写比较字符串内容是否相等toLowerCase:转换成小写toUpperCase:转换成大写charAt:根据索引返回对应位置的字符indexOf:返回指定字符串的索引,如果未匹配则返回-1,参数可以是int类型(表示字符串的ASCII码值)trim:去除空字符串split:根据字符串(实际就是正则表达式)进行切割substring:根据索引分割字符串contains:判断是否包原创 2021-04-04 12:47:09 · 101 阅读 · 0 评论 -
多线程面试题总结
什么是线程: * 线程是程序执行的一条路径,一个进程中可以包含多条线程 * 多线程并发执行可以提高程序的效率,可以同时完成多项工作多线程的应用场景: * 迅雷开启多条线程一起下载 * QQ同时和多个人一起视频 * 服务器同时处理多个客户端请求多线程并行和并发的区别* 并行就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行(需要多核...原创 2019-08-04 22:20:17 · 116 阅读 · 0 评论 -
HashMap源码分析(JDK1.8)
本文转自:https://www.cnblogs.com/xiaoxi/p/7233201.html,本来准备自己写的,但是自己理解的不够透彻,后来通过百度找到了这篇文章,原作者可以说写的很用心,分析的很到位,看完之后让我受益匪浅。一、HashMap概述 在JDK1.8之前,HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的节点都存储在一个链表里。但是当位于一...转载 2019-07-07 22:44:48 · 115 阅读 · 0 评论 -
个人总结的Java面试题
首先这是我以前找工作时根据很多的面试题总结的一些知识点,所列出的基本上都是我所不熟悉的地方,当然了面试最主要的还是根据自己的简历来的,自己所掌握的技术点和实际项目经验都是很重要的。常见的面试题Java的序列化:序列化是一种处理流的机制,对象流可以在进行读写操作或者在网络中进行传输,而序列化就可以解决对对象流进行读写操作所引发的问题.ArrayList、HashSet、HashMap 都不是线...原创 2019-06-09 20:26:26 · 200 阅读 · 0 评论 -
JavaSE基础知识总结
这篇文章是当初我培训javaSE时自己在学习的过程中的总结,当然对于文章内容自己所写的并不详细,当时只是把自己感觉不熟悉的地方做个总结,无论怎样也有个复习的作用,另外我推荐学习的过程中一定要勤做总结,善于思考。JVM包含的细节:指令集 寄存器(和cpu有关的) 类文件的格式 栈 垃圾回收堆 存储区。JDK在安装时为什么一般不装公共JRE:公共JRE会单独安装在系统的其他路径...原创 2019-06-02 21:38:24 · 693 阅读 · 0 评论