自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Java集合操作

Java集合操作1.LinkedList:LinkedList由AbstractList派生而来,内部实现基于双向链表,因此可实现栈和队列的操作import java.util.*;public class test01 { public static void main(String[] args) { LinkedList<Integer> l=new LinkedList(); for(int i=0;i<5;i++)//从头添加

2021-12-23 08:49:30 370

原创 使用transient关键字来控制变量的序列化

transient关键字的作用Transient 关键字的作用是控制变量的序列化,在进行对象保存或者是网络传输的时候,可能有一些隐私的变量不想被保存或者传输,那么在变量声明前加上transient关键字就可以阻止该变量被序列化,在被反序列化后,transient 变量的值被设为初始值,如 int 型的是 0,对象型的是 null。我们下面用代码来验证一下加了transient关键字的变量的序列化与反序列化。代码验证...

2021-11-28 10:25:07 250

原创 什么是对象的序列化和反序列化?Java对此提供了哪些支持?

什么是对象的序列化和反序列化1.序列化对象的序列化是指将存储在内存中的对象转化为字节码的形式,存储在文件中或者发送给别人。本身在程序运行的时候的对象会随着程序的结束或者JVM的停止而消失,但通过序列化技术就可以持久化保存这些数据,存储在文件中可以便于下次恢复,发送给服务器可以进行协助计算等操作。一个类要想序列化,就要实现Serializable接口。2.反序列化反序列化与序列化对应,对象的反序列化是指将存储在文件中或者网络传输的字节流恢复为一个对象信息的操作。Java对序列化和反序列化的支持J

2021-11-28 10:13:06 447

原创 FutureTask类有什么作用?它实现了哪些接口?Callable接口和Runnable接口有什么不同?

一.FutureTask类的作用:二.Callable接口和Runnable接口有什么不同我们看一下源码以及文档中的解释来看一下Callable接口和Runnable接口的不同通过描述我们可以看到,Runnable方法中只声明了一个run方法,且该方法没有返回值。我们再来看一下Callable接口的源码及描述可以看到,Callable接口也只实现了一个方法,call方法,该函数可以有返回值,返回值的类型就是传入参数的类型,并且该方法还可以抛出异常。...

2021-11-23 19:46:53 723

原创 Java实现互斥的两种方法

Java实现互斥的方法java提供了两种方法来实现互斥,第一种方法是对象监视器(monitor)与synchronized,第二种方法是Java并发包中的锁类。一.SynchronizedSynchronized有三种用法:– synchronized 代码块:监视器就是指定的对象。– synchronized 方法:监视器就是this对象。– synchronized 静态方法:监视器就是相应的Class对象。下面是示例代码:class Resource implements Runnab

2021-11-15 18:47:44 2801

原创 Java中volatile关键字的作用

Java中volatile关键字的作用在Java的多线程工作模式下,每一个线程都有自己的一个内存空间,在对实际的变量进行修改时,每一个线程需要先把主内存内的变量拷贝到自己的内存空间中,在拷贝完成后,再进行修改,最后再把修改后的变量放回到主内存中。但是如果同时有多个线程对同一个变量进行修改操作,如上图所示,假如A线程和B线程同时把变量i拷贝到自己的内存空间中,进行修改,假如同时减1,则再将修改后的i放回到主内存时,实际i只变化了一次,达不到多线程的效果。测试一看一下如下的代码,是没有使用volati

2021-11-13 23:20:12 623

原创 Java子类对象的初始化顺序

Java子类对象的初始化顺序一、任务:利用idea的断点调试,弄清楚Java的子类对象在被创建时,所调用的代码的顺序考虑如下的代码,SonAddClass继承自父类AddClass,父类AddClass中重载三个构造方法,并可以互相调用,子类重载了三个构造方法,并都使用super对父类成员进行初始化,我们在子类对象的main方法中设置断点,来观察子类对象创建时代码的运行过程父类class AddClass { private int x=0,y=0,z=0; AddClass (i

2021-11-10 16:16:19 380

原创 Java访问控制运算符

Java访问控制运算符号java中共有三种访问控制运算符,分别是public,private,protected。public:修饰公有属性和方法,被其修饰的类和属性可以被其他对象跨包访问,是访问权限最宽的运算符。private:修饰私有属性和方法,被其修饰的类和属性,只能被本类访问,同包内的其他类和包外的类不能访问。protected修饰保护性属性和方法,被其修饰的类和属性,可以被子类和同包内的其他类访问。...

2021-10-18 21:57:24 139

原创 Java的整数溢出问题

Java的整数溢出问题一.Java何时会发生整数溢出问题当要为整数类型,如int类型赋值时,若赋值右侧的数据范围大于int类型的最大值时,就会发生整数溢出的问题。如:int m = Interger.MAX_VALUE/2 + 1; int n = Interger.MAX_VALUE/2 + 1; int overflow = m + n;最终得到的答案overflow会超过int所能存储的最大范围,编程得到的答案为-2147483648二.如何解决整数溢出问题可以在进行计算时,采用强制

2021-10-07 10:38:34 2961

原创 Java数据类型

Java数据类型基本数据类型Java的基本数据类型包括整数类型,浮点类型,字符类型,布尔类型,其中整数类型又分为byte型(-2*10^7 到 2*10^7 - 1),short型(-2*10^15 到 2*10^15 - 1),int型(-2*10^31 到 2*10^31 - 1),long型(-2*10^63 到 2*10^63 - 1),浮点类型分为float型(-2*10^31到 2*10^31 - 1),double型(-2*10^63 到 2*10^63 - 1),字符类型为char型(0

2021-10-07 10:24:08 108

原创 JDK,JRE,JVM之间的联系

JDK,JRE,JVM之间的联系1、JDKJDK为 JAVA Development Kit的简称,为Java标准开发包,提供了Java编译,运行时的各种工具和java的各种类库。JDK中包含有JRE。2、JREJRE是Java Runtime Environment的简称,为Java运行时环境,其中包含Java运行所需要的核心类库。JRE中含有JVM3、JVMJVM是Java Virtual Machine的简称 ,为Java虚拟机负责解释执行字节码文件。...

2021-10-01 16:51:05 114 1

原创 Java语言实现跨平台的原理

Java语言实现跨平台的原理java是如何实现跨平台的呢?Java的解决策略是:Write once,run anywhere,Java引入了字节码来实现平台独立,引入了虚拟机来实现跨平台,在不同的平台,只需下载不同版本的虚拟机,无需重新编写代码即可运行。首先源代码(.java)文件经过编译,变为字节码(.class)文件,然后在不同版本的虚拟机上解释执行,分别可运行于Windows系统,Linux系统,Unix系统,做到Write once,run anywhere。...

2021-10-01 16:44:20 160 1

原创 JAVA语言相对于其他编程语言的特点

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-10-01 16:33:48 599 1

原创 编译型与解释型语言

1.编译型语言与解释型语言的区别对于编译型语言,代码文件经过编译得到可执行文件,这个可执行文件只可用于特定的平台,编译型语言的运行速度较快,但难以移植,在其他平台运行时,往往要重新编写代码再编译。对于解释型语言,就Java来说,代码文件先被执行为.class字节码文件,然后再由解释器运行,虽然解释型语言的运行速度比编译型低,但它的代码经过一次编写,就可以在不同的平台运行,大大提高了效率。...

2021-09-18 21:17:25 99 1

原创 1.1浅谈学习编程语言经验

一.浅谈编程语言的学习方法与经验1.学习编程要积极学习他人的优秀代码在我一开始学习编程的时候,并没有太多的代码习惯,打出来的代码经常又难看又复杂,可是随着我阅读一些大佬们的代码,注重自己的代码格式,学习一些规范的代码,把别人总结出来的经验加以学习,往往能够取得很不错的效果。在学习过后,自己再加以总结与练习,往往能够取得事半功倍的效果,使自己的代码规范和能力得到突飞猛进的效果。2.学习编程要注意课上与课下相结合在编程课上,老师讲授的东西固然很重要,但是如果自己课下不加以练习,知识就会很容易在脑海中消

2021-09-18 21:00:22 146 3

原创 区间dp

区间dp取石子问题设有N堆石子排成一排,其编号为1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有4堆石子分别为 1 3 5 2, 我们可以先合并1、2堆,代价为4,得到4 5 2, 又合并 1,2堆,代价为9,得到9 2 ,再合并得到11,总代价为4+9+11=24;如果第二步是先合并2,3堆,则

2020-05-12 21:06:19 114

原创 C++构造函数的初始化列表

C++构造函数的初始化列表先定义一个Person类,包含m_id与m_age两个成员变量,与一个含参的构造函数。class Person{private: int m_id; int m_age;public: Person(int id,int age);};构造函数的初始化列表在参数列表的右括号后,函数体的花括号前,并且在参数列表的右括号后有一个:,对于被初始化的成员变量...

2020-02-23 19:27:24 130

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除