JAVA学习
文章平均质量分 81
山以
这个作者很懒,什么都没留下…
展开
-
雪花算法详解
一句话概括:雪花算法是Twitter设计的根据时间戳、机器标识码和序列号生成的唯一长整型数。原创 2024-04-18 09:49:54 · 628 阅读 · 0 评论 -
SpingBoot3相关
JIT(Just-in-Time,实时编译)Java跨平台的基础AOT(Ahead-of-Time,预编译或提前编译),无法跨平台。原创 2024-04-16 19:41:31 · 188 阅读 · 0 评论 -
JAVA学习日记十三(反射机制)
Reflection(反射)是被视为动态语言的关键,反射机制允许程序在运行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射。Java反射机制提供的功能:在运行时判断任意一个对象所属的类。原创 2024-03-28 21:40:19 · 980 阅读 · 1 评论 -
JAVA之浅谈i++与++i
a=i++ , a 返回原来的值a=i,i=i+1;单独使用的时候,两者没有区别,参与运算时,也不过是语句的执行顺序换了,但是执行的步骤是一样的,效率都是一样的啊,没有什么不同啊?单独拿出来说的话,++i和i++,效果都是一样的,就是i=i+1。1.先说a=i++,这个运算的意思是先把i的值赋予a,然后在执行i=i+1;2.而a=++i,这个的意思是先执行i=i+1,然后在把i的值赋予a;当i初始等于3时,执行a=i++,最终结果a=3,i=4.当i初始等于3时,执行a=++i,最终结果a=4,i=4.原创 2024-03-20 20:08:35 · 412 阅读 · 1 评论 -
JAVA学习日记十二(File类与IO流)
在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常(InvalidCastException)。:从输入流中读取一些字符,并将它们存储到字符数组 cbuf中,从cbuf[off]开始的位置存储。想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。原创 2024-03-19 20:29:35 · 769 阅读 · 0 评论 -
JAVA之内存分配
当声明一个新的变量使用现有的对象进行赋值时(比如p3 = p1),此时并没有在堆空间中创 建新的对象。堆(Heap):存放引用数据类型的数据与new出来的对象,注意创建出来的对象只包含各自的成员变量,不包括成员方法。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。java程序是运行在jvm(java虚拟机)上的,因此Java的内存分配是在JVM中进行的。栈(Stack):存放基本数据类型的数据、引用数据类型的变量名及对象的引用,但是引用的数据与对象并不放在栈中,而是放在堆中。原创 2024-03-18 17:19:54 · 164 阅读 · 1 评论 -
JAVA学习日记十一(数据结构与集合源码)
数组的初始化容量,如果在构建ArrayList与Vector的集合对象时,没有显式指定初始化容量,那么Vector的内部数组的初始容量默认为10,而ArrayList在JDK 6.0 及之前的版本也是10,JDK8.0 之后的版本ArrayList初始化为长度为0的空数组,之后在添加第一个元素时,再创建长度为10的数组。数据结构,就是一种程序设计优化的方法论,研究数据的`逻辑结构`和`物理结构`以及它们之间相互关系,并对这种结构定义相应的运算,目的是加快程序的执行速度、减少内存占用的空间。原创 2024-03-18 10:01:56 · 1063 阅读 · 1 评论 -
JAVA学习日记十(泛型Generic)
泛型即为“类型参数”,这个类型参数在声明它的类、接口或方法中,代表未知的某种通用类型。所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值或参数的类型。这个类型参数将在使用时(例如,继承或实现这个接口、创建对象或调用方法时)确定(即传入实际的类型参数,也称为类型实参)。集合中没有使用泛型时:集合中使用泛型时:Java泛型可以保证如果程序在编译时没有发出警告,运行时就不会产生ClassCastException异常。原创 2024-03-17 21:00:11 · 888 阅读 · 1 评论 -
JAVA之线程安全问题
当我们使用多个线程访问同一资源(可以是同一个变量、同一个文件、同一条记录等)的时候,若多个线程只有读操作,那么不会发生线程安全问题。但是如果多个线程中对资源有读和写的操作,就容易出现线程安全问题。原创 2024-03-16 19:47:26 · 1364 阅读 · 1 评论 -
JAVA学习日记九(集合框架)
数组的特点与弊端:一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。数组在内存存储方面的特点数组初始化以后,长度就确定了。数组中的添加的元素是依次紧密排列的,有序的,可以重复的。数组声明的类型,就决定了进行元素初始化时的类型。不是此类型的变量,就不能添加。可以存储基本数据类型值,也可以存储引用数据类型的变量数组在存储数据方面的弊端。原创 2024-03-16 19:07:12 · 883 阅读 · 1 评论 -
JAVA学习日记八(多线程)
JVM会为其创建方法调用栈和程序计数器,当然,处于这个状态中的线程并没有开始运行,只是表示已具备了运行的条件,随时可以被调度。比如:线程A用来生产包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,此时B线程必须等到A线程完成后才能执行,那么线程A与线程B之间就需要线程通信,即——哪个线程获得了“同步锁”对象之后,”同步锁“对象就会记录这个线程的ID,这样其他线程就只能等待了,除非这个线程”释放“了锁对象,其他线程才能重新获得/占用”同步锁“对象。原创 2024-03-14 20:14:07 · 607 阅读 · 0 评论 -
JAVA学习日记七(异常处理)
异常:指的是程序在执行过程中,出现的非正常情况,如果不处理最终会导致JVM的非正常停止。异常的抛出机制:Java中把不同的异常用不同的类表示,一旦发生某种异常,就创建该异常类型的对象,并且抛出(throw)。然后程序员可以捕获(catch)到这个异常对象,并处理;如果没有捕获(catch)这个异常对象,那么这个异常对象将会导致程序终止。如何对待异常:对于程序出现的异常,一般有两种解决方法:一是遇到错误就终止程序的运行。原创 2024-03-14 16:34:12 · 1033 阅读 · 0 评论 -
JAVA学习日记六(面向对象-高级)
我们把没有方法体的方法称为抽象方法。Java语法规定,包含抽象方法的类必须是抽象类。抽象类:被abstract修饰的类。抽象方法:被abstract修饰没有方法体的方法。抽象类的语法格式:[权限修饰符] abstract class 类名{[权限修饰符] abstract class 类名 extends 父类{抽象方法的语法格式:[其他修饰符] abstract 返回值类型 方法名([形参列表]);抽象方法没有方法体。原创 2024-03-14 15:56:44 · 711 阅读 · 0 评论 -
JAVA学习日记五(面向对象-进阶)
在构造器的首行,"this(形参列表)" 和 "super(形参列表)"只能二选一。如果子类实例变量和父类实例变量重名,并且父类的该实例变量在子类仍然可见,在子类中要访问父类声明的实例变量需要在父类实例变量前加super.,否则默认访问的是子类自己声明的实例变量。多态情况下,“看左边”:看的是父类的引用(父类中不具备子类特有的方法) “看右边”:看的是子类的对象(实际运行的是子类重写父类的方法)原创 2024-03-13 22:38:37 · 928 阅读 · 0 评论 -
JAVA学习日记四(面向对象-基础)
面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。我们千万不要把面向过程和面向对象对立起来。他们是相辅相成的。面向对象离不开面向过程!原创 2024-03-13 09:21:47 · 478 阅读 · 0 评论 -
JAVA学习日记三(数组)
数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。数组中的概念数组名下标(或索引)元素数组的长度数组的特点:数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。创建数组对象会在内存中开辟一整块连续的空间。占据的空间的大小,取决于数组的长度和数组中元素的类型。数组中的元素在内存中是依次紧密排列的,有序的。数组,一旦初始化完成,其长度就是确定的。数组的长度一旦确定,就不能修改。原创 2024-03-12 22:11:26 · 720 阅读 · 0 评论 -
JAVA学习日记二(流程控制语句)
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。程序设计中规定的三种程序从上到下逐行地执行,中间没有任何判断和跳转。根据条件,选择性地执行某段代码。有if…else和两种分支语句。根据循环条件,重复性的执行某段代码。有forwhiledo-while三种循环语句。补充:JDK5.0 提供了foreach循环,方便的遍历集合、数组元素。原创 2024-03-12 19:30:03 · 641 阅读 · 1 评论 -
JAVA学习日记一(变量)
Java各整数类型有固定的表数范围和字段长度,不受具体操作系统的影响,以保证Java程序的可移植性。定义long类型的变量,赋值时需要以"l"或"L"作为后缀。Java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long。Java的整型常量默认为 int 型。单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。双精度,精度是float的两倍。通常采用此类型。定义float类型的变量,赋值时需要以"f"或"F"作为后缀。Java 的浮点型常量默认为double型。原创 2024-03-12 14:36:32 · 838 阅读 · 2 评论