![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java
java学习笔记心得
Summer龙
这个作者很懒,什么都没留下…
展开
-
java集合的总结
一 、Collection1. List(1)Arrlist排列有序元素可重复底层使用数组查询速度快,增删速度慢线程不安全,没有做同步互斥操作当容量不足时:按照当前容量的 1 .5倍+1 进行扩容(2) Vector排列有序可重复底层使用数组线程安全,实现Synchronized接口,里面的方法使用Synchronize修饰,速度慢当容量不够时,Vector按照当前容量的 1倍扩容(3)LinkedList排列有序,可重复底层使用双向循环链表查询速度慢,增删快原创 2021-07-21 14:28:46 · 57 阅读 · 0 评论 -
双亲委派模型
在说双亲委派模型之前首先得先了解一下类加载阶段。类的加载阶段类加载阶段分为加载、连接、初始化三个阶段,而加载阶段需要通过类的全限定名来获取定义了此类的二进制字节流。Java特意把这一步抽出来用类加载器来实现。在Java中任意一个类都是由这个类本身和加载这个类的类加载器来确定这个类在JVM中的唯一性。也就是你用你A类加载器加载的com.aa.ClassA 和你A类加载器加载的com.aa.ClassA 它们是不同的,也就是用instanceof这种对比都是不同的。所以即使都来自于同一个class文件但原创 2021-07-21 11:02:49 · 78 阅读 · 0 评论 -
JVM简单的理解,java跨平台的原因
一、基本概念(JVM)java virtual machineJVM是可运行Java代码的假想计算机,他有自己的一套字节码指令集,一组寄存器,一个栈,一个垃圾回收,堆和一个存储方法域。注意JVM是运行在操作系统之上的,并没有直接与硬件交互,实际交互的还是原来的操作系统。我们都知道Java的源文件,通过编译器,能够产生相应的 .class文件,也就是字节码文件,字节码文件又通过Java虚拟机的解释器,编译成特定的机器上的机器码。java源文件 ——> 编译器 ——>字节码文件字节码原创 2021-07-21 09:56:21 · 198 阅读 · 0 评论 -
浅拷贝和深拷贝的区别
浅拷贝和深拷贝的区别:主要是针对引用数据类型来区分的,对于基本数据类型可以说,深拷贝和浅拷贝是一样的。没有什么区别。浅拷贝:浅拷贝,只是对指针的拷贝,拷贝后两个指针指向同一个堆中的内存空间。深拷贝:深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针是指向两个不同地址的指针。深拷贝采用了在堆内存中申请新的空间来存储数据。...原创 2021-07-14 15:33:08 · 2150 阅读 · 0 评论 -
线程
什么是进程?进程是指运行中的程序,比如我们使用了QQ,就启动了一个进程,操作系统就会为进程分配内存空间,当我们使用一个其他的软件、程序,又启动了一个进程,操作系统将为启动的程序分配新的内存空间。进程是程序的一次执行的过程,或者正在运行的一个程序。是一个动态的过程:具有自身的产生、存在和消亡的过程。什么是线程线程是进程创建的,是进程的一个实体。一个进程可以有多个进程。单线程:同一时刻,只允许执行一个线程多线程:同一时刻,可以执行多个线程。例子:一个QQ程序可以同时打开多个聊天的会话。原创 2021-05-06 16:56:11 · 256 阅读 · 0 评论 -
泛型
泛型为什么使用泛型?不能对加入集合ArraryList中的数据类型进行约束(不安全)遍历的时候,需要就行类型转换,如果集合的数量较大,对效率有影响。泛型的介绍泛型又称参数化类型,是JDK5.0出现的新特性,解决数据类型的安全型问题在类的声明或实例化时,是指定好具体的类型即可。java泛型可以保证如果程序在编译时没有发出警告,运行时就不会产生ClassCastException异常,是代码更加健壮。泛型的作用:可以在类声明时通过一个标识符表示类中某一个属性的类型,或者方法的返回值类型,原创 2021-05-03 18:45:51 · 62 阅读 · 0 评论 -
hashSet的说明
hashSet 的底层其实就是hashMap。hashMap的数据结构是 : 数组 ->链表->红黑树(avl树)平衡二叉树。添加一个元素时,先会得到hash值,但是,他得到的hash值不会直接使用,他会处理下,处理格式就是 hash值 >>>16 他的hash值无符号右移十六位。 再转成 数组的索引值找到存储数据表table,看这个索引的位置是否已经存放有元素,如果没有直接加入在数组中如果有,就调用equals方法比较,具体equals方法,是看程序猿如.原创 2021-04-28 20:47:01 · 121 阅读 · 0 评论 -
List归纳总结★
归纳:ArraryList中维护了一个Object类型的数组elementData当创建ArraryList对象时,如果使用无参构造器,则初始elementData的容量为0,第一次添加,则扩容elementData为10,如果在此扩容,则扩容element的1.5倍。如果使用的是大小的构造器,则初始elementData的容量为指定大小,如果需要扩容,则直接扩容elementData为1.5倍。Vector 中维护的也是一个Object类型的数组当创建Vector对象时,如果使用无参原创 2021-04-28 20:24:12 · 95 阅读 · 0 评论 -
特大的,特小的数处理方案
1、三者在执行速度方面的比较:StringBuilder >StringBuffer > StringString <(StringBuffer,StringBuilder)的原因String:字符串常量StringBuffer:字符串变量StringBuilder:字符串变量从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。2、StringBuffer/StringBuilder是生产这个商品的流水线,StringBuffer速度慢,但(线程)安全原创 2021-04-22 21:12:50 · 99 阅读 · 0 评论 -
String类
String类☆简单的介绍:String是一个对象!!!String 对象用于保存字符串,也是一组字符序列。字符串的字符使用的Unicode字符编码,一个字符(不区分字母还是汉字)都占两个字节String 有很多的构造器String()初始化新创建的 String对象,使其表示空字符序列。String(byte[] bytes)通过使用平台的默认字符集解码指定的字节数组来构造新的 String 。String(byte[] bytes, Charset charset)构造一个新原创 2021-04-22 14:58:50 · 184 阅读 · 0 评论 -
包装类
包装类的分类:针对八种基本数据类型相应的引用类型——包装类有了类的特点,就可以调用类中的方法。基本数据类型包装类父类booleanBooleanObjectcharCharacterObjectbyteByteNumbershortShortNumberintIntegerNumberlongLongNumberfloatFloatNumberdoubleDoubelNumberBoolean类继原创 2021-04-19 19:28:57 · 52 阅读 · 0 评论 -
异常
异常异常的介绍java语言中,在程序执行中发生不正常的情况称为 “异常”。(注意开发中语法错误和逻辑错误不是异常)在执行过程中所发生的异常事件可分为两大类:1. Error(错误):java虚拟机无法解决的严重问题。如:jvm的系统内部错误,资源耗尽等严重错误。 比如:StackOverflowError(栈溢出)和OOM (out of memory),Error是严重的错误,程序会崩溃。3. Exception:其他因编程错误或者偶然的外在因素导致的一般性问题,可以针对性的对代码进行处理。原创 2021-04-19 13:27:14 · 121 阅读 · 0 评论 -
枚举类
什么是枚举?枚举对应英文(enumeration简写enum)枚举是一组常量的集合枚举是一种特殊的类,里面只包含一组有限的特定对象。枚举实现的两种方式:自定义枚举使用enum关键字实现自定义枚举不需要提供set方法,因为枚举类通常是只读的。对枚举类的对象/属性 使用 final +static 共同修饰,实现底层的优化。枚举对象名通常使用全部大写,符合常量命名规范。枚举对象根据需要,可以有多个属性。public class season { private Strin原创 2021-04-17 15:27:02 · 138 阅读 · 0 评论 -
内部类★
什么是内部类?一个类的内部又嵌套了另一个类结构。被嵌套的类称为内部类。嵌套其他类的称为外部类。是我们的类的五大成员(属性、方法、构造方法、代码块、内部类)内部类最大的特点就是可以直接访问私有属性,并且可以体现类与类之间的包含关系。基本语法class Outer {//外部类 class inner{//内部类 }}class Other{ //外部其他类}内部类的分类定义在外部类局部位置上(比如方法内)1)局部内部类(有类名)2)匿名内部原创 2021-04-17 09:48:18 · 57 阅读 · 0 评论 -
接口
什么是接口?接口就是给出一些没有实现的方法,封装到一起,到某个各类使用的时候,在根据具体的情况把这些方法写出来。接口怎么定义呢interface 接口名{属性;方法(抽象方法、默认方法、静态方法)}类怎么实现接口class 类名 implements 接口{属性;方法;必须实现接口的抽象方法。}注意: 在jdk7.0之前接口的所有方法都没有方法体,既都是抽象方法。 在jdk8.0后接口就可以有静态方法,默认方法(default关键字修饰)。注意是静态方法,和默认方法不是自己原创 2021-04-13 17:32:46 · 92 阅读 · 1 评论 -
抽象类
什么是抽象类用abstract关键字修饰的类,这个类就是抽象类。 访问修饰符 abstract 类名{}什么是抽象方法用abstract关键字修饰的方法,并没有具体的实现,这个方法就是抽象方法。访问修饰符 abstract 返回类型 方法名(参数列表)//没有方法体 注意:访问修饰符不能是private!!!抽象类的价值抽象类更多的价值在于设计,设计者设计以后,让子类继承并实现抽象类。什么时候使用抽象类呢?父类的方法的实现方向不确定,考虑将该方法设计为抽象方法。当一个类中存在抽原创 2021-04-11 15:47:21 · 772 阅读 · 0 评论 -
final关键字
final的基本介绍final可以修饰类,属性,方法和局部变量。使用场景:当不希望类被继承时,可以用final修饰。 final class 类名{ }当不希望的父类的某个方法被子类覆盖/重写(override)的,可以用final关键字修饰。当不希望类的某一个属性的值被修改时,用final当不希望局部变量被修改时,也可以用final关键字。使用细节final修饰属性的时候,他又叫做常量,常量一般不能修改,全部用大写字母中间加下划线 _例如 MAX_SIZE.final修饰的属原创 2021-04-11 14:15:38 · 61 阅读 · 2 评论 -
单例设计模式
什么是单例设计模式要想知道什么是单例设计模式就要知道什么是单例单例:就是一个对象。只有一个对象。什么时候需要一个对象呢。痴汉式,也称饿汉式举个例子:我们是不是只能有一个老婆,老婆是不是我们私有的,我们的老婆能给别人用吗?这个肯定不可以啊!那么,是不是应该把自己的老婆给私有化呢。还有一个如何保证老婆只有一个呢。是不是可以把她给设成静态的属性。是不是在类的加载的时候,只会加载一次。在创建老婆的时候,能让别人帮你创建吗?是不是要自己创建,那么是不是应该把创建老婆的方法,也给私有化。public c原创 2021-04-11 09:26:18 · 72 阅读 · 0 评论 -
jvm中常说的栈、堆、方法区如何区分的?
jvm中常说的栈、堆、方法区如何区分的?堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身栈区:1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作原创 2021-04-10 20:34:49 · 220 阅读 · 0 评论 -
代码块
代码块什么是代码块代码块又称为初始化块,属于类中的成员(是类的一部分)类似于方法,将逻辑语句封装在方法体中,通过 {} 包围起来。但和方法不同,没有方法名,没有返回,没有参数,只有方法体,而且不用通过对象或类显式的调用,而是在加载类时,或创建对象时隐式的调用。基本语法[修饰符] {代码;};注意:修饰符可写可不写,要写的话,只能写static代码块分为两类,使用static修饰的是静态代码块,没有static修饰的是普通代码块。;号可写可不写逻辑语句可以为任何逻辑语句代码块的原创 2021-04-10 20:19:16 · 2246 阅读 · 0 评论 -
java的main方法的语法
理解main方法public static void main(String [] args){}main方法是java虚拟机调用的。java虚拟机需要调用类的main方法,但是java虚拟机又和调用的main方法不在同一个类,所以该访问权限必须是publicjava虚拟机在执行main()方法时,不用创建对象,所以main方法必须是static。该运行方法接收String类型的数组参数,该数组中保存着执行java命令是传递给所运行的类的参数。在main()方法中,我们直接可以调用main方原创 2021-04-10 11:34:00 · 354 阅读 · 0 评论 -
类变量和类方法(静态变量、静态方法)
类变量类变量的特点类变量最大的特点就是在本类中,可以被本类的所有对象实例共享使用。类变量的存放位置要想理解类变量,就要知道类变量的在jvm的内存中存在哪里!在jdk8之前呢,我们认为静态变量、静态方法放在方法区中的静态域中,在加载类信息时,同时也加载了静态变量、静态方法,并且在创建对象后,所有的对象都指向了静态域,这样就可以起到了类方法、类变量的共享的效果。在jdk8之后,静态变量就放在堆中。在类加载的时候,会在堆中生成一个Class实例(类实例)而类变量就在Class实例的尾部。而Cl原创 2021-04-10 10:34:45 · 933 阅读 · 0 评论 -
数组实现队列
数组实现队列什么是队列?队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in f原创 2021-04-08 19:21:17 · 366 阅读 · 0 评论 -
成员方法的传参机制★
成员方法的传参机制★1、基本数据类型的传参机制:理解这个就必须要先理解在方法中:什么是实参,什么是形参!举个栗子:public class MethodDetail01 { public static void main(String[] args) { int a =20;//这个就是实参!!!! int b=40;//这个也是实参!!!! Swap swap = new Swap(); swap.swap(a,b);//括号原创 2021-04-06 20:02:23 · 127 阅读 · 1 评论 -
java的动态绑定机制(重要)
java的动态绑定机制 当调用对象方法时,该方法会和该对象的内存地址/运行类型绑定。//方法 当调用对象属性时,没有动态绑定,哪里声明,哪里使用。//属性原创 2021-04-06 19:49:03 · 130 阅读 · 0 评论 -
Object类详解(部分)
equals 方法== 和equals的对比== 1. == :既可以判断基本类型,也可以判断引用类型。 2. == :如果判断基本类型,判断的是值是否相等。 3. == :如果判断的引用类型,判断的是地址是否相等。既判断是不是同一个对象。equals1. equals : 是Object类中的方法,只能判断引用类型。2. equals : 默认判断的地址是否相等,子类往往重写该方法,用于判断内容是否相等。Integer String都重写了 Object的equals方法。hash原创 2021-04-04 16:32:37 · 85 阅读 · 0 评论 -
多态★
什么是多态呢? 事物在运行过程中存在不同的状态。多态概述多态是继封装、继承之后,面向对象的第三大特性。多态现实意义理解:现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。多态体现为父类引用变量可以指向子类对象。前提条件:必须有子父类关系。注意:在使用多态后的父类引用变量调用原创 2021-04-03 20:42:24 · 56 阅读 · 0 评论 -
方法的重写(override)
方法的重写什么是方法的重写? 方法的重写也叫方法的覆盖。怎样方法的重写? 1、子类的方法的参数,方法名称,要和父类方法的参数,方法名称完全相同。 2、子类方法的返回类型和父类的返回类型一样,或者父类返回类型的子类。 比如 : 父类的返回类型是Object 子类方法返回的是String 3、子类方法不能缩小父类方法的访问权限。pulic ->protected->默认->private...原创 2021-04-03 15:25:55 · 150 阅读 · 0 评论 -
super关键字
super是什么?super代表父类的引用,用于访问父类的属性、方法、构造器。super的基本语法1.访问父类的属性和方法,但是不能访问父类的private(私有)属性或者方法。super.属性名;。或者 super.方法名();。2.访问父类构造器: super(参数列表);注意,只能放在构造器的第一句。只能出现一句!...原创 2021-04-03 11:17:06 · 48 阅读 · 0 评论 -
封装
封装的介绍封装(encapsulation)就是把抽象出的数据【属性】和对数据的操作【方法】封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的的操作【方法】,才能对数据进行操作。封装的实现步骤: 1、将属性进行私有化【不能直接修改属性】 2、提供一个公共的set方法,用于对属性判断并赋值。 public void setXxx(类型 参数名){ //加入数据验证的业务逻辑 属性 = 参数名;} 3、提供一个公共的get方法,用与获取属性原创 2021-04-02 15:45:47 · 57 阅读 · 0 评论 -
java访问修饰符
四种访问修饰符:修饰符可以修饰类中的属性,方法以及类。原创 2021-04-02 14:00:32 · 47 阅读 · 0 评论 -
构造器/构造方法
构造器/构造方法(constructor)关于构造器和构造方法。要明白这一点,他两个是同一个东西,就是叫法不同。构造方法的主要作用是对新对象的初始化。 这里注意了 是新对象。什么是新对象。就是没有创建过的对象。构造器的使用方法:方法名与类名相同。没有返回值,也不能写void。在创建对象时,系统自动调用该类的构造器完成对象的初始化(属性的初始化)。(不是创建对象!)一个类可以定义多个构造器,既构造器的重载。类似于方法的重载。不要犯一些低级的错误,用对象调用构造器。如果程序猿没有定义构造原创 2021-04-01 11:52:31 · 1115 阅读 · 1 评论 -
参数的作用域★
作用域1、在java编程中,主要的是变量就是属性(成员变量)和局部变量。2、局部变量一般是指在成员方法中定义的部分。以及代码块的变量。3、全局变量:也就是属性,作用域在整个类中。局部变量:也就是除了属性之外的其他变量,作用域为定义它的代码块中。4、全局变量(属性)可以不赋值直接用,因为有默认值,局部变量必须赋值后才能使用,因为没有默认值。举个栗子:public class VarScope01 { public static void main(String[] args) {原创 2021-03-31 22:10:48 · 410 阅读 · 1 评论 -
方法的重载以及可变参数
方法的重载介绍: java中允许同一类中,多个同名的方法存在,但是 形参列表不能一致!重载的好处:1、减轻了起名的麻烦!2、减轻了记名的麻烦!注意事项:1、方法名必须一样;2、参数列表必须不相同(参数类型或者个数或顺序,至少有一样不同,参数名没有要求)3、返回类型没有要求。public class Overload01 { public static void main(String[] args) { myCalculator myCalculato原创 2021-03-30 22:34:41 · 292 阅读 · 2 评论 -
方法调用机制内存分析★
方法调用机制内存分析对于下面的程序 Persion persion = new Persion(); int returnRes =persion.sum(4,6); System.out.println("sum::"+returnRes); public int sum(int num1,int num2){ int res =num1+num2; return res; }从main方法开始执行!方法调用小结1、当程序执行到方法时,会开辟原创 2021-03-28 11:40:59 · 113 阅读 · 0 评论 -
原码、反码、补码的小技巧
关于原码、反码、补码的一些重点!!!1、二进制的最高位是符号位:1表示负数、0、表示正数 (老外一般都是以0开始的计算东西的,现有负数再有正数!!!)2、正数的原码、反码、补码、都是一致的(三码合一!!)3、负数的反码:原码的符号位不要变,其他位 按位取反 0-->1 ,1-->04、负数的补码:他的反码+15、负数的反码:负数的补码-16、0的反码补码都是0;7、java中的数都是有符号的!8、计算机在运算时都是以补码的形式计算的!9、当我们看运算结...原创 2021-03-25 15:16:40 · 243 阅读 · 0 评论 -
重点!对象在jvm中存在的形式
java对象的存在形式解析class Cat{ private String name; private int age; private String color; } 在这里定义了一个Cat类,有三个属性。 Cat cat = new Cat(); 1 cat.age =12; 2 cat.color ="黄色"; 3 cat.name ="大黄"; 4原创 2021-03-27 21:25:21 · 198 阅读 · 0 评论 -
类与对象/对象的创建流程/this关键字
类与对象1、类是抽象的,概念的,代表一类事物,比如人类,猫类,狗类 他是数据类型!!2、对象是具体的,实际的,代表一个事物,既是一个实例!万物皆对象!3、类是对象的模板。对象是类的一个个体,对应着一个实例!...原创 2021-03-27 20:45:15 · 236 阅读 · 2 评论 -
java的数组的赋值机制
数组的赋值机制1、基本数据类型之间:就是直接的值传递!!int n1 =100;int n2 =n1;n2的变化不会影响n1;2、数组之间是引用传递,赋的值是地址,赋值方式是通过引用传递!int [] arr1= {3,6,9};int [] arr2= arr1;//把arr1赋值给arr2//当执行arr2[0]=10;arr2[0]=10;//arr1的元素也改变!这就是地址传递!这是地址传递的方式!地址传递和引用传递时一个东西!...原创 2021-03-27 14:24:11 · 234 阅读 · 0 评论 -
杨辉三角用二维数组实现
/** 使用二维数组打印出杨辉三角!* 1* 1 1* 1 2 1* 1 3 3 1* 1 4 6 4 1* 1 5 10 10 5规律 1、第一行有1个元素,第n行有n个数据 2、第一行的第一个元素和最后一个元素都是1 3、从第三行开始,对于非第一个元素和最后一个元素的值 4、 a[ i ] [ j ]=a[ i - 1 ][ j - 1 ]+a[ i - 1 ] [ j ] 注:自己仔细的看 实在不行你就把i ,j 给个值你自己试!!!!原创 2021-03-27 20:10:45 · 768 阅读 · 0 评论