我的Java学习之路
文章平均质量分 57
从零开始,每天一点点掌握Java编程
Vincent_Weng_
这个作者很懒,什么都没留下…
展开
-
虚拟机内存:新生代、老年代、永久代、元空间
虚拟机内存:新生代、老年代、永久代、元空间JVM内存模型虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的范围,会抛出StackOverflowError的错误,不过这个深度范围不是一个恒定的值。本地方法栈:这部分主要与虚拟机用到的 Native 方法相关,一般情况下, Java 应用程序员原创 2021-02-20 00:52:38 · 446 阅读 · 0 评论 -
类集
类集概述早期工程师编写程序的时候,往往是通过具体问题抽象出数学模型,然后通过编程求解。这种方式求解的是数值计算问题,核心是数学方程以及计算流程,所涉及的数据大多是基本数据类型,只是用来暂时储存信息。随着计算机应用领域的扩大和软、硬件的发展,非数值计算问题越来越显得重要。据统计,当今处理非数值计算性问题占用了 85%以上的机器时间。数据之间的关系变得越来越复杂,已经不能用数学方程式来描述了,数据从计算流程中独立出来成为一种结构。类集是Java中对数据结构的实现,它产生的目的就是要用规范化的方法组织数据原创 2021-02-20 00:51:32 · 349 阅读 · 0 评论 -
迭代器
迭代器Iterator定义public interface Iterator<E>常用方法及原理迭代器是一个指向元素中间位置的指针,N个元素有N+1个合法的迭代器位置:注:以下的叙述按照Java方法的语义,对于Next的方向,右边是“前”,左边是“后”。对于Previous方向,左边是“前”,右边是“后”boolean hasNext()原则:判断能不能向“前”移动判断能不能向右移动一个位点E next()原则:向“前”移动,返回“后”面的元素将迭代器向右移动一个位点,原创 2021-02-20 00:49:26 · 290 阅读 · 0 评论 -
泛型
泛型概述泛型,即“参数化类型”。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。使用泛型类定义一个泛型类:public class ClassName<T>{private T data; public T getData() { return data; } public void setData(T data) { this.data = dat原创 2021-02-18 00:49:14 · 343 阅读 · 1 评论 -
常用类库——String
常用类库——String概述String类表示字符串。 Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例。特性字符串是不变的; 它们的值在创建后无法更改。因为字符串在内存中本质上是字符数组,数组一经声明大小就不能变了。因为String对象是不可变的(静态),所以为了节约内存,对于相同内容的字符串,所有引用都指向同一块内存地址。但是,如果使用new方法,则不管内容是否相同都新划分一个内存。字符串常量池一个专门存已有字符串引用的空间,位置在堆中。字符串的创建凡原创 2021-02-18 00:46:58 · 271 阅读 · 1 评论 -
常用类库——Objects
常用类库——Objects概述Objects与Object不同,是一个工具类,为我们提供了许多常用的操作。isNull()用于判断传入的对象是否是空指针。源代码:nonNull()用于判断传入的对象是否是空指针。源代码:equals()用于判断两个对象是否相等源代码:如果使用对象中重写equals方法的话,当对象自己为空时将无法调用equals引起NullPointerException异常,此时要用Objects类处理requireNonNull()当传入对象必须不能为原创 2021-02-18 00:46:14 · 137 阅读 · 0 评论 -
常用类库——DateFormat
常用类库——DateFormat概述DateFormat及其子类SimpleDateFormat是专门用于处理时间格式的类。一般使用的是SimpleDateFormat。构造方法SimpleDateFormat(String pattern)pattern的书写规则如下:把需要显示时间信息的地方替换成如下字符,其他部分随意写。字母含义数据类型例子G公元符号TextADy/Y年Year1996;96M月Month七月(超过4个M);07(不超原创 2021-02-18 00:43:48 · 153 阅读 · 0 评论 -
常用类库——Date
常用类库——Date概述Date 类表示特定的时刻,精度为毫秒。构造方法Date(long date)分配 Date对象并初始化它以表示自标准基准时间(称为“纪元”)以来的指定毫秒数,即1970年1月1日0时区00:00:00 GMT。Date()分配 Date对象并对其进行初始化,使其表示当前时间,测量 Date到毫秒。比较时间public boolean after(Date when)测试此日期是否在指定日期之后。public boolean before(Date when)原创 2021-02-18 00:42:06 · 150 阅读 · 0 评论 -
常用类库——Calendar
常用类库——Calendar概述Calendar用于日期和时间字段之间的转换。构造方法public static Calendar getInstance()Calendar是一个抽象类不能直接实例化,可以调用此方法返回一个实现了该类的对象,返回的对象是基于默认时区的当前时间。获取和设置字段原理Calendar中各个字段是存在一个数组protected int[] fields中,获取和修改是通过数组下标int field操作的。数组下标的值已全部定义为Calendar的成员变量。如年字段的原创 2021-02-18 00:41:04 · 143 阅读 · 0 评论 -
常用类库——BigDecimal
常用类库——BigDecimal概述BigDecimal是用于进行精确算术运算的类。常用构造方法public BigDecimal(String val)加public BigDecimal add(BigDecimal augend, MathContext mc)减public BigDecimal subtract(BigDecimal subtrahend, MathContext mc)乘public BigDecimal multiply(BigDecimal mult原创 2021-02-18 00:39:34 · 150 阅读 · 0 评论 -
常用类库——Arrays
常用类库——Arrays概述专门用于数组操作的类copyOf()用于数组的扩容,如果新的长度小于原来的长度,则从头开始复制到新长度后截断源代码:binarySearch()用于二分查找数组的指定值,如果找不到就返回一个负值-(low+1),查找前需要排序,否则无法得到正确的结果。源代码:sort()用于对数组元素进行排序,预期nlogn复杂度。如果需要对对象数组进行排序,则需要定义专门的比较器对象,并实现Comparator接口例如://People对象既是数组的元素,也可以作原创 2021-02-18 00:37:49 · 128 阅读 · 0 评论 -
final关键字
final关键字final用于修饰属性、变量属性、变量将变成常量,无法对其赋值局部变量只能赋值一次:成员变量定义时必须赋初值:常量的命名规范:全部字母必须大写,单词与单词之间用下划线隔开全局常量定义方式:public static finalpublic:所有包中的类都能访问static:可以由所在类直接调用final:常量通常在写代码时可以用一个类定义所有全局常量,需要注意的是Java强制使用面向对象的写法书写程序,所有的代码必须建立在类的基础上,像这样的写法是不被原创 2021-01-06 15:43:56 · 84 阅读 · 0 评论 -
Java抽象类
Java抽象类抽象类产生的原因有些类中我们无法完整地进行描述,因此需要抽象抽象类的声明abstract class 类名{ // 抽象类}抽象方法只声明而未实现的方法称为抽象方法(未实现指的是:没有“{}”方法体),抽象方法必须使用abstract关键字声明。abstract class 类名{ // 抽象类public abstract void 方法名() ; // 抽象方法,只声明而未实现}抽象类的规范在抽象类的使用中有几个原则:抽象类本身是不能直接进行实例化操作的原创 2021-01-06 15:42:01 · 1057 阅读 · 2 评论 -
Java的继承
Java的继承继承产生的原因我们观察如下的一段代码,分别有两个类People和Student,我们对比会发现这两个类存在大量重复的代码。class People{ String name; int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } pu原创 2021-01-06 15:39:15 · 166 阅读 · 0 评论 -
super指针的特性
super指针的特性super.方法名/super.属性名 可以访问父类的方法和属性super()调用父类构造方法必须写在第一行super()与this()不能同时使用原因是如果调用了this()意味着在其他构造方法中已经调用了super(),如果调用了super()那么本对象已经被构造,不能重复执行构造函数this()子类构造方法默认第一行调用super()如果子类使用了默认的super(),而父类又没有相应的默认构造函数时程序会报错。这种错误常出现于父类写了含参构造方法原创 2021-01-06 15:34:43 · 164 阅读 · 0 评论 -
Java重写与重载
Java重写与重载重写(override)子类重新定义父类的方法规则:参数列表必须与被重写的方法相同原因:Java是靠方法名和参数列表来区分方法的,如果参数列表不同Java会认为这是另外一个方法,就不构成重写了。返回类型必须与被重写的方法相同原因:如果返回类型与被重载的方法不一致,运行时如果发生重载就会有类型冲突。访问权限不能比父类中被重写的方法更低原因:根据Java继承的内存分配原理我们知道子类和父类是链表结构储存的(对这一块不了解的朋友可以看前面的博文Java的继承),当沿原创 2021-01-06 15:31:56 · 142 阅读 · 0 评论 -
java中main方法的解析
java中main方法的解析在java中我们可以看到main方法是这样书写的:public static void main(String[] args) { // TODO Auto-generated method stub}其中各个参数的含义如下:public:访问控制符,表示该方法可以被所有操作调用static:表示方法是静态的,在类加载(第一次调用类)的时候该方法就被加载进内存中的方法区,可以用类名直接调用。使用static的原因是在调用main方法时还没有任何对象被构造,因此原创 2021-01-04 23:35:41 · 428 阅读 · 0 评论 -
JAVA基础知识
初识JAVAJAVA的发展史JAVA最早是由SUN公司的高级工程师高斯林等人组成的“绿色小组”开发的,当时的主要目标是快速占领新兴的电子产品市场,后来以失败告终,但JAVA语言积淀了下来。由于其强大的可移植性使得JAVA在互联网领域得到了广泛的应用。JAVA的体系JAVA版本JAVA SE(Standard Edition) :标准版,用于桌面应用的开发JAVA EE(Enterprise Edition):企业版,用于企业应用程序的开发JAVA ME(Micro Edition):微型版,用原创 2020-12-26 22:42:49 · 120 阅读 · 0 评论