java基础
文章平均质量分 86
luffylv
这个作者很懒,什么都没留下…
展开
-
将年月日字符串通过Calendar转成Date后月份被加一问题
简单描述下问题:数据库有一个开始时间字段`start_time` varchar(20) NOT NULL DEFAULT '' COMMENT '开始日',存储形如"2022-04-25"年月日的字符串,业务中需要将其转换为指定小时的形如"2022-04-25 07:00:00.0"的Date对象。我是通过Calendar类来处理实现的,代码如下:运行结果如下:从运行结果可以看到,月份被加了一个月,4月变成了5月。查看Calendar源码可以看到,其关于月份的定义如下:通过上面可以看到,4代表原创 2022-04-25 14:55:36 · 1467 阅读 · 0 评论 -
Java关键字之final
在面试中,涉及java基础的问题,final关键字算是个高频问题,经常会被问道。面试官可能会问说说final。final修饰的抽象类能被继承吗等等。下面汇总一下关于final关键字的知识点。原创 2022-04-18 20:45:19 · 2688 阅读 · 1 评论 -
类加载器总结
类加载器负责将.class文件(可能在磁盘上,也可能在网络上)加载到内存中,并为之生成对应的java.lang.Class对象。一、类加载机制类加载器负责加载所有的类,系统为所有被载入内存中的类生成一个java.lang.Class实例。一旦一个类被载入JVM中,同一个类就不会被再次载入了。在JVM中,一个类用其全限定类名和其类加载器作为唯一标识。当JVM启动时,会形成由三个类加载器组成的初始类加载器层次结构:Bootstrap ClassLoader:根类加载器,加载jre/lib/...原创 2021-05-21 17:54:41 · 159 阅读 · 0 评论 -
类初始化总结
当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化三个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载或类初始化。一、类的加载**类加载指的是将类的class文件读入内存,并为之创建一个java.lang.Class对象。**也就是说,当程序中使用任何类时,系统都会为之建立一个 java.lang.Class对象。类的加载由类加载器完成, 类加载器通常由JVM提供,这些类加载器是程序运行的基础,JVM提供的这些类加原创 2021-05-19 14:51:16 · 505 阅读 · 0 评论 -
浅谈Java中Integer的缓存机制及源码解析
前几天在写其他博客的时候,遇到一个问题。直接贴代码:public class WrapperClassTest { public static void main(String[] args) { Integer a = 3; Integer b = 3; System.out.println(a == b); Integer c = 129; Integer d = 129; System.out.原创 2021-01-04 16:17:45 · 497 阅读 · 0 评论 -
记录关于IDEA的idea64.exe.vmoptions文件使用的误区
我电脑中安装的是IDEA 2017.2.5 64位的这个版本,在IDEA安装目录下的bin目录下有一个idea64.exe.vmoptions文件。如下图:该文件的内容如下:我以为修改该文件中的-Xms和-Xmx参数可以改变程序运行时的堆内存大小。但是无论怎么修改都生效不了。做过如下尝试:点击功能栏中Help->Edit Custom VM Options,是的在用户目录中产生一份idea64.exe.vmoptions,修改该文件的内容——失败。在运行配置中新增环境变量:IDEA原创 2020-12-05 21:55:08 · 4716 阅读 · 2 评论 -
记录Idea运行程序时报错Error:Abnormal build process termination的解决方式
问题描述今天用idea运行程序时报了如下错误。Error:Abnormal build process termination:D:\Java\jdk1.8.0_66\bin\java -Xmx700m -Djava.awt.headless=true -Djava.endorsed.dirs="" -Djdt.compiler.useSingleThread=true -Dpreload.project.path=F:/project/learning -Dpreload.config.path=原创 2020-12-05 20:24:56 · 4852 阅读 · 1 评论 -
浅谈Java方法的参数传递机制
对于Java初学者来说,刚学习Java的时候可能经常会听到调用方法时参数的值传递与引用传递。但是,实际上Java中方法的参数传递机制只有值传递。首先,我们要了解一个概念——栈帧。栈帧位于java虚拟机栈中,用于支持虚拟机进行方法的调用和方法的执行。可以简单的理解为栈帧即方法。每个方法有自己独立的栈帧。栈帧中有局部变量表、操作数栈、动态链接、返回地址等。下面我们通过几个例子具体分析java方法的参数传递机制。方法的参数为基本数据类型首先我们来看下面代码:public class ParamTrans原创 2020-12-04 04:39:20 · 409 阅读 · 0 评论 -
从反编译的角度浅谈JVM如何执行i++和++i操作
之前对于i++和++i的理解比较浅显。通常对i++的表述为先赋值再自增,对于++i的表述为先自增再赋值。鉴于之前对i++的原子性问题不能完全理解,并且在最近的笔试中,发现其有很多玩法。对于JVM如何进行这两个操作有必要研究一下。注意:以下i均以整型为例!《疯狂Java讲义》中关于++运算符的描述《疯狂Java讲义》(第4版)中对于++运算符的描述如下:++:自加。该运算符有两个要点:1.自加是单目运算符,只能操作一个操作数;2.自加运算符只能操作单个数值型(整型、浮点型都行)的变量,不能操作常量或原创 2020-11-22 12:32:44 · 688 阅读 · 3 评论