自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java入门:23.ArrayList,LinkedList,Vector特点,HashMap底层存储机制详解

List集合常用的实现类有3个 , ArrayList , LinkedList , Vector类似于我们之前的ArrayBox底层使用数组存储元素, 插入删除的效率低,检索的效率高当底层数组存储容量不足时,会进行扩容,每次扩容都是原数组的1.5倍使用无参构造器创建ArrayList集合时,首先提供的是一个默认0长度的数组(防止内存资源浪费)第一次add元素的时候,会创建一个10个长度的数组我们在开发中已经不怎么使用了Vector是ArrayList早期版本1.0。

2024-12-04 09:01:48 971 1

原创 Java入门:22.集合的特点,List,Set和Map集合的使用

本质就是容器的封装,可以存储多个元素数组一旦创建,长度就不能再改变了。数组一旦创建,存储内容的类型不能改变。数组可以存储基本类型,也可以存储引用类型。数组可以通过length获得容量的大小,但无法获得存储内容的多少。集合可以无限存储存储元素 (底层还是对数组做了扩容)集合可以通过size方法获得存储元素的个数 int size集合只能存储引用类型的数据有多种集合,底层使用不同的存储结构存储元素,适合不同的存储场景线性结构(数组)链表结构哈希(hash)结构 , 散列结构二叉树结构。

2024-12-03 09:11:46 1356

原创 Java入门:21.System类,Runtime类,Arrays类的常用方法,二分查找算法

第1次,找到中间位置 left=0 , right=9 , mid=4--> 9 < 30 , 继续向右找。第2次,找到中间位置 left=5 , right=9 , mid=7--> 25<30 , 继续向右找。第3次,找到中间位置 left=8 , right=9 , mid=8---> 30=30 找到。第1次 left=0,right=9,mid=4---9 > 2 继续向左找。第3次 left=0,right=0,mid=0-->1 < 2 继续向右找。

2024-12-02 16:19:20 1272

原创 Java入门:20.Calendar类与新日期类的使用

可以针对于日期中的每一个日期项,进行操作* 年, 月, 日, 时,分, 秒,毫秒,星期* Calendar对象创建* Calendar对象与Date对象之间的转换* Calendar对象的常用方法。

2024-11-30 15:28:40 407

原创 Java入门:19.Math类,Random类,UUID类,Date类,DateFormat类

里面都是static方法和属性,可以直接使用提供了一些与属性相关的内容和计算方法,可以是我们轻松完成常见的数学计算。获得想要的随机数。

2024-11-29 09:09:36 939

原创 Java入门:18.包装类,BigInteger , BigDecimal

java是一种面向对象的编程语言对象都是由类产生的。8种基本类型对java面向对象的特性有所破坏jdk就提供了8种基本类型所对应的类的表示,称为:包装类理论上来讲:类属性使用包装类定义,方法中的局部变量使用基本类型定义包装类的内部最终依然是由对应的基本类型来存储数据,无非为其提供了一些方法,使得我们对应基本类型数据的操作变得更加容易了,比如:关于基本类型为null的处理有些容器(自己封装,jdk提供的集合)只支持存储引用类型更方便的实现类型转化你。

2024-11-28 19:05:01 1095

原创 Java入门:17.正则表达式,String的intern方法,StringBuilder可变字符串特点与应用,+连接字符串特点--002

可变字符串有两个, StringBuilder 和 StringBuffer两个类有相同的apiStringBuffer是一个早期版本的可变字符串,线程同步,安全性高,性能较低StringBuilder是一个新版本的可变字符串,非线程同步,安全性较低,性能较高。

2024-11-27 11:16:28 783

原创 Java入门:17.正则表达式,String的intern方法,StringBuilder可变字符串特点与应用,+连接字符串特点--001

将字符串按照指定的内容进行分割,将分割成的每一个子部分组成一个数组分割内容不会出现在数组中实际上该方法不是按照指定的简单的符号进行分割的,而是按照正则表达式进行分割。

2024-11-27 11:15:28 591

原创 Java入门:16.API文档注释,字符串种类,String字符串创建,特点及常用方法

有三种注释文档注释一般建议写在类, 属性和方法上。jdk提供了javadoc.exe工具对程序的所有类及属性和方法生成一个说明文档 :API文档API : Application Program Interface 应用程序接口API文档中可以告诉使用者,都有哪些类, 类有哪些属性,类有哪些方法方法叫什么名,需要传递几个参数,都是什么类型的,需要返回什么类型的数据以及方法的作用jdk API。

2024-11-26 20:41:32 840

原创 Java入门:15.泛型特点,定义,确定,通配符与边界,链表容器封装设计-002

不同与数组结构JDK中没有专门的链表存储技术需要通过多个节点对象手拉手(地址引用,指针连接)完成链表结构的存储意味着链表结构有很多节点对象,节点对象有什么特点?是一个类对象节点对象要能存储链表中的一个元素。对于数组而言,一个元素存储在数组的一个位置对于链表而言,一个元素存储在链表结构中的一个节点中节点对象中除了存储元素外,还需要存储另一个与之相邻的节点的地址随着一个节点和与之相邻节点之间的链接关系,链表结构又可以分为:单向链表 , 每一个节点只能找到相邻的下一个节点。

2024-11-25 10:42:20 541

原创 Java入门:15.泛型特点,定义,确定,通配符与边界,链表容器封装设计-001

在定义类的时候, 类中有些内容的类型不确定,可以声明一个泛型来表示这些不确定的类型一定是相同类型T a;T b;在定义的类时候,如果类的内容中有多种类型不确定,我们可以声明多个泛型T1 a;T2 b;在定义方法时(以static方法偏多),如果方法中有些内容的类型不确定,可以为其声明泛型也可以声明多个泛型一般多用于静态方法的参数类型不确定。

2024-11-25 10:40:38 730

原创 Java入门:15.Throwable常用方法,finally底层机制,泛型的基本应用-002

使用场景时(使用前提),当我们定义一个类或定义一个方法时,如果其中有些内容的类型不确定,就可以考虑使用泛型都有可能是哪些内容的类型不确定的呢属性类型方法返回类型方法的参数类型方法中局部变量的类型如何使用泛型呢?首先我们可以确定的是, i的类型和j类型和t1方法返回类型相同其次这个类型在使用者使用这个类的时候是可以确定的那么我们就可以用一个名字先代替这个类型,在被使用时再确定//在定义类A的时候,类A中有一些内容的类型不确定,暂时使用字母T来表示T i;T j;return i;

2024-11-23 10:29:56 244

原创 Java入门:15.Throwable常用方法,finally底层机制,泛型的基本应用-001

我们所学的异常的本质, 是异常对象,是一种异常情况的描述对象一般都具有一些方法。所以异常对象也有一些方法异常对象的绝大多数方法都来自于Throwable。

2024-11-23 10:29:16 1040

原创 Java入门:14.异常与异常对象,抛出异常,自定义异常,异常处理,受检与非受检异常--002

我们调用其他工具类时,传递了一些信息。工具类在使用我们提供的信息执行功能时出现了问题,不知道该如何处理就会将问题形成一个异常对象描述,并抛给我们(此时我们是调用者)这个时候我们应该如何处理异常呢?异常处理的过程是:要么我们在当前的方法中处理,要么就继续向上抛,抛给我们的调用者处理过程中如果一个方法无法处理这个异常1.重新创建一个异常对象,手动throw抛给调用者2.不做任何处理,会自动抛给调用者在方法中,使用try{}包裹可能产生异常对象的代码运行时一旦产生了异常对象,try就会对其进行捕获。

2024-11-22 13:52:57 563

原创 Java入门:14.异常与异常对象,抛出异常,自定义异常,异常处理,受检与非受检异常--001

我们可以自定义异常,来描述出现的问题自定义异常类 , 继承异常相关的父类(Throwable,Exception , Error)一般异常的名字就体现了错误的情况,可以在配合注释进一步说明/**当年龄小于0或大于150时,抛出这样的异常*/通过有参构造方法,为异常提供更为详细的描述信息(可选)super(msg);使用throw 抛出异常throw AgeOutOfBoundsException("您提供的年龄是"+age+",但他超过了基本的年龄范围,基本年龄范围是[0,150]");

2024-11-22 13:40:24 642

原创 Java入门:13.内部类,匿名内部类,对象大小比较,Box容器迭代器封装实现-002

基本数据类型可以使用> < ==完成大小比较引用类型jdk也提供了大小比较规则(接口),提供了两种比较规则。

2024-11-21 09:06:55 190

原创 Java入门:13.内部类,匿名内部类,对象大小比较,Box容器迭代器封装实现-001

内部类就是内部的一个类在什么内部呢?类的内部 , 相当于类的一个特殊成员,具备类成员的访问特点 ,称为:成员内部类4种访问权限可以使用static关键字修饰方法的内部:类似于方法中的一个变量,称为:局部内部类只能在当前方法中使用1.2 内部类特点特点1: 可用范围不同特点2: 内部类可以直接使用外层类的成员(包括私有成员)特点3: 局部内部类可以使用方法中的局部变量,但这个局部变量必须是final修饰的常量jdk1.7之前,要求局部变量必须用final关键字修饰。

2024-11-21 09:06:23 336

原创 Java入门:12.常见数据结构,编程中的角色,容器封装与使用-002

这个jar包中装的内容都是.class文件 (我们写的是java文件,打包的是class文件)这个接口在程序员3的程序中,需要将其引入程序员2的程序里。选中lib文件夹,右键,add as lib ...程序1中,需要引入程序3的规则,需要引入程序2的容器。程序员2在封装容器的时候,需要遵守容器的封装规则。在程序2中创建一个文件夹,强烈建议命名为lib。将B程序中的内容生成一个压缩包(jar包)如何在A程序中,引入B程序中的内容。容器封装是程序员2做的事。在程序2中引入jar文件。

2024-11-20 10:31:13 321

原创 Java入门:12.常见数据结构,编程中的角色,容器封装与使用-001

程序 = 数据 + 算法常见的数据结构有:线性结构 : 数据连续的存放 , 一个挨一个的存放数据删除时,要依然保证连续性, 需要数据移动插入数据时,也需要数据移动每一个数据有存放的序号(下标),可以根据下标快速找到对应的元素。插入删除效率低,检索效率高。链式结构: 数据存放的空间不连续,通过链接(引用/地址/指针)找到下一个元素插入删除的效率高,只需要断开一些链接,重新增加一些链接即可没有物理序号,通过序号检索数据的效率低。

2024-11-20 10:29:14 713

原创 Java入门:11.抽象类,接口,instanceof,类关系,克隆--003

在多态应用种,判断某一个父类型变量中存储的对象是否属于某一种子类型。

2024-11-19 09:06:02 567

原创 Java入门:11.抽象类,接口,instanceof,类关系,克隆--002

jdk1.8之后,接口中可以提供非抽象方法随之而来的就是二义性问题如果子类只实现了一个接口,其中的default方法可以不用重写 (因为是一个非抽象方法)如果子类是实现了多个接口,其中有相同的default方法,要求必须重写default方法,表示哪一个父接口的方法都不继承。逻辑上可以使用接口.super.method()语法,表示要继承哪一个父接口中的default方法。

2024-10-22 09:11:19 850

原创 Java入门:11.抽象类,接口,instanceof,类关系,克隆--001

JDK = JRE + 开发工具集(javac.exe)JRE = JVM + java类库JVM = java 虚拟机jdk中自带了许多的包(类) , 常用的有java.lang该包中的类,不需要引用,可以直接使用。例如:Object , System , String。

2024-10-14 11:30:11 728

原创 Java入门:10.Java中的包

类似于OS中的文件夹。用来存放一组含义类似或相同的java类(接口),方便分类和管理。对应关系:java程序中的类 --- os中的.java文件java程序中的包 --- os中的文件夹如何指定包:在os中创建对应的文件夹在文件夹中创建对应的.java文件在java文件的,使用关键字指定当前文件中的类所属的包注意对于定义包的类文件如何进行编译呢?基本上与之前一样,只要能找到java文件,就可以编译扩展一个可以一次性编译所以java文件的命令。

2024-10-10 17:19:03 584

原创 Java入门:09.Java中三大特性(封装、继承、多态)--补充--所有类的父类--Object类

equals只能比较引用类型,默认比较的是地址,但可以通过重写,改成比较内容. 像String就重写了equals方法,改为比较内容了。wait() , wait(long) , wait(...) , notify() , notifyAll() 后面讲线程会讲。比较基本类型比的是值,比较引用类型比较的是地址。可以通过强转,将obj还原成最开始的类型, 并完成this与obj的属性内容比较。obj的本质也是当前类型的对象。默认toString方法返回的内容包括对象的类型及对象的地址。

2024-09-26 19:46:12 438

原创 Java入门:09.Java中三大特性(封装、继承、多态)03

首先,什么是多态呢?多态即事物的多种表现形态。就像生活中,人就有多种表现形态:学生,老师,警察,医生等。那么在Java中也有类似的概念它的作用就是:在封装时,可以更灵活的切换具体的执行功能那么该怎样实现多态呢?就需要:继承、重写、上转型。

2024-09-21 14:08:38 978

原创 Java入门:09.Java中三大特性(封装、继承、多态)02

比如:类A 继承 类BA类 称为 子类 , 衍生类,派生类B类 称为 父类,基类,超类子类自动的拥有父类的所有属性和方法 (父类编写,子类不需要再编写)。代码复用目前私有的属性和方法无法访问。多态的基础。先定义父类 (单独的类)在定义子类的同时,实现与父类的继承关系继承具有传递性A类中,既有B类的内容,又有C类的内容基础具有不可逆性A类中,有B类的内容但B类中没有A类的内容。Java只支持单继承 (C++支持多继承)一个类只能继承一个父类。但可以连续继承不可以的。

2024-09-19 19:32:24 1240

原创 Java入门:09.Java中三大特性(封装、继承、多态)01

一般的要求是,属性私有, 其对应的get和set方法就是在get和set后面连接属性名。将属性隐藏起来, 对外提供可以间接操作属性的方法。(提高程序设计安全性)目前我们都是属性私有化, 并提供与之对应的get和set方法。boolean类型的属性,其get方法有些特别,是以is开头。面向对象的三大特征 : 封装, 继承, 多态。封装应用工具,为其他的程序员提供功能帮助。get和set方法的写法不一定完全一致。将属性和方法组合在一起(封闭在一起)但不是语法要求,是一种约定俗称。特殊的get和set方法。

2024-09-12 18:12:18 605

原创 Java入门:08.Java中的static关键字02(拓展:单例模式)

就是个{} 里面包含一堆代码代码段可以写在方法中 , 也可以写在方法外代码段可以方法中和方法外独立存在,也可以配合着 分支结构和循环结构存在。

2024-09-11 18:00:53 658

原创 Java入门:08.Java中的static关键字01

可以修饰属性变量,方法和代码段static修饰的属性称为静态属性或类属性, 在类加载时就在方法区为属性开辟存储空间,无论创建多少个对象,静态属性在内存中只有一份。可以使用 类名.静态属性 的方式引用static修饰的方法称为静态方法或类方法,在类加载时就在方法区中开辟存储空间,存储方法中信息,在调用静态方法时,不会默认传递this参数。可以使用 类名.方法() 的方式引用static修饰的代码段称为静态代码段,在类加载时就自动执行,且仅执行一次。

2024-09-10 20:02:57 792

原创 Java入门:07.Java中的面向对象03

对象内部的方法中,可以根据this变量中存储的自己这个对象的地址,调用自己这个对象的属性和方法。对象内部的方法中,调用对象内部的其他方法和属性时,可以不使用this。默认调用的就是自己的东西。此时,使用this关键字完成构造器调用代码, 只能是当前构造方法中的第一行。当方法中的局部变量与成员变量同名时,可以使用this来区分哪一个是成员变量。对象外部,主方法可以根据变量中存储的这个对象地址,调用对象的属性和方法。在jvm运行的过程中,对象内部的方法执行时,都会自动的使用this。this关键字有两个作用。

2024-09-09 17:52:28 1310

原创 Java入门:07.Java中的面向对象02

对象有两种使用情况情况一:对象本身,是一个引用类型的数据所以他也可以像其他的所有数据一样,进行操作 如:存储,打印等。情况二:对象包含属性和方法所以使用对象,其实就是使用对象中的属性和方法。类似于数组。

2024-09-07 12:08:07 887

原创 Java入门:07.Java中的面向对象01

生活当中的人或物, 就是对象睁开眼,看到的世界万物皆为对象。对象具有一定的特征和行为。这里的特征和行为都是偏概念性的。只有应用具体的对象时,这些概念才具体。例如:手机有颜色,有尺寸。具体是什么颜色, 什么尺寸, 要根据具体的手机来定。

2024-09-02 19:47:30 977

原创 线程相关问题

首先是新建状态,使用new关键字新建线程后,线程就会处于新建状态,此时,如果我们使用start方法将该线程启动后,线程将进入准备状态,准备争抢CPU,一旦抢占到CPU,该线程会自动调用run方法,此时即为运行状态,如果没有抢到CPU或是使用wait()、sleep()等方法将CPU让出去后,该线程将会进入等待状态也叫做阻塞状态、挂起状态等,等待完毕后,会再次进入准备状态,直至运行成功,之后将会进入销毁状态,资源将被释放,我们也可以使用stop方法,手动的进入销毁状态。

2024-08-27 18:48:28 1369 1

原创 Java入门:06.Java中的方法--扩展(值传递和址传递与主方法传参)

方法调用时,如果传递的实际参数是一个基本类型的数据,那么如果只有形式参数发生改变的话,实参是不会发生变化的,因为我们传递的是变量中具体的数据。就相当于把10赋给i,又把i赋给num,所以,不论num怎样发生变化,i都不会受到影响。又称为地址传递,或引用传递这次,方法在调用时,传递的实参就是一个引用类型的数据了,所以,我们并没有真的将数据传过去,而是只把变量中的引用地址传过去了,这样的话,相当于两个变量指向同一块儿空间,所以一个变量对数据进行操作,自然,另一个变量也看得到。

2024-08-26 22:08:38 1300

原创 Java入门:06.Java中的方法--进阶04

递归的本质就是方法的不同调用,就会不同的产生栈帧压栈,栈空间有限,一个逻辑性不合理的递归会导致栈内存溢出(满了),所以递归时我们一般都会有一个结束条件。递归类似循环,可以实现功能的反复执行。递归是一次执行到一半,就执行下一次。等下一次执行完, 这一次还要继续执行。当我们分析程序的时候,如果分析出递归公式,就可以考虑使用递归实现功能。如果我们看到了一个使用递归实现的功能,应该可以分析出其对应的递归公式。递归公式:要想做a这件事,需要先做b那件事。只适合与递归公式碰撞。循环一定是一次执行完了, 再执行下一次。

2024-08-24 11:08:22 581

原创 Java入门:06.Java中的方法--进阶02.03

方法调用时, 传递的实参数量,是由被调用方法的参数列表数列决定的。一般来讲,传递的实参数量必须与形参变量数量相同,但是也有一种特殊的参数,允许调用时传递的实参数量是可变,这种参数就称为:可变参数可变参数的本质是一个数组。接收者在使用可变参数时,无论传递多少个数据,都以数组的语法进行操作。传递了多少个数据,数组的长度就是多少。调用者在传递参数的时候,可以传递任意数量的参数,0 , 1, n,还可以传递数组方法的参数列表中,只能定义一个可变参数。

2024-08-24 11:07:19 718

原创 Java小问答--线程池相关的一些问题

答:线程在创建并执行时会从用户态进入到内核态,这个过程会非常影响效率,有时这个过程可能甚至比执行线程内的代码还要费时费力,所以,为了解决这种问题,我们就需要引入线程池了。线程池可以使我们创建好的线程被多次使用,使单个线程不再只能执行一个任务,进而大大提高我们的效率。不仅如此,通过对线程池的理解和方法的运用,我们也可以对我们的多线程程序有更好的掌控。

2024-08-22 22:19:32 1032

原创 Java入门:06.Java中的方法--进阶01

在java程序的执行过程中会产生一些数据,这些数据将会存在jvm内存中。JVM将内存分成了不同的逻辑区域,存储不同含义(类别)的数据JVM内存模型有5种方法区 : 存储类信息堆区 : 存储new关键字产生的数据 (目前是数组)栈区 : 存储的是(主)方法执行时,产生的数据本地方法栈 : 与栈区类似,程序计数器 : 记录当前方法执行到哪一行了。方法区和堆区中存储的数据,可以较长时间存在栈区(本地方法栈)和程序计数器中存储的数据,随着方法执行完毕,就消失了。

2024-08-21 17:55:13 759

原创 Java入门:06.Java中的方法03

第四点就是实参和形参,全称为实际参数、形式参数实参就是指,我们在调用方法时,向方法所传递的具体的值。形参则是指,在方法定义时,我们在参数列表中所定义的变量。在这个例子中,a就是一个实际参数,它是我们要真正使用的数据,所以我们称它为实际参数。num就是一个形式参数,它只是一个变量名,作用就是接受调用者所传进来的数据,所以,我们 称之为 形式参数。

2024-08-20 18:46:20 419

原创 Java入门:06.Java中的方法02

方法在定义后,如果我们不去主动的使用它,它是不会自动执行的,我们必须主动的去使用它,这个主动使用的过程,我们称之为调用。执行方法本身也是一个操作,或者说是一个操作中的一部分,调用方法本身也是另一个方法中的一段代码。等价于在mian方法中,执行了print3方法代码。方法有返回值, 调用者不一定非要使用这个返回值。有无参数和有无返回值,没有任何关系。参数和返回值类型不一定相同。将这个调用分成2部分理解。调用方法执行其中的代码。参数和返回数据的小总结。有参数,不一定有返回值。

2024-08-19 20:39:36 458

空空如也

空空如也

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

TA关注的人

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