自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 哈希表/散列表数据结构 | B站Java学习笔记

HashMap集合底层是哈希表/散列表的数据结构哈希表是一个怎样的数据结构呢?哈希表是一个数组和单向链表的结合体数组:在查询方面效率很高,随机增删方面效率很低单向链表:在随机增删方面效率较高,在查询方法效率很低哈希表将以上的两种数据结构融合在一起,充分发挥他们各自的优点哈希表:一维数组,这个数组中每一个元素是一个单向链表map.put(k, v)实现原理:第一步:先将k,v封装到Node对象当中第二步:底层会调用k的hashCode()方法得出hash值,然后通过哈希函数/哈希算法,将ha

2021-02-14 17:27:19 155

原创 泛型 自动类型推断机制 | B站Java学习笔记

JDK8之后引入了:自动类型推断机制,又称为钻石表达式List myList = new ArrayList<>();(后面的<>中的Animal省略了)public class GenericTest02 { public static void main(String[] args) { // ArrayList<这里的类型会自动推断>() List<Animal> myList = new ArrayList<>();

2021-02-12 21:13:44 223 2

原创 链表数据结构 | B站Java学习笔记

对于链表数据结构来说:基本的单元是节点Node对于单向链表来说,任何一个节点Node都有两个属性:1. 存储的数据2. 下一个节点的内存地址链表优点:随机增删元素效率较高 (因为增删元素不涉及到大量元素位移的问题)链表缺点:查询效率较低,每一次查找某个元素的时候都需要从节点开始往下遍历。public class Node { Object element; 存储的数据 Node next; 下一个节点的内存地址 public Node() { } public Node(Obj

2021-02-11 20:19:07 137

原创 ArrayList集合 | B站Java学习笔记

ArrayList集合底层采用了数组这种数据结构ArrayList是非线程安全的ArrayList集合初始化容量是10底层先创建了一个长度为0的数组,ArrayList集合底层是Object类型的数组Object[]构造方法:new ArrayList(); 默认值容量是10,注意:不是元素的个数,是容量new ArrayList(20);ArrayList集合的扩容:原容量的1.5倍ArrayList集合底层是数组,怎么优化?尽可能少的扩容,因为数组扩容效率比较低,建议在使用Arra

2021-02-11 12:43:37 163 3

原创 List接口特有方法 | B站Java学习笔记

List集合存储元素特点:有序可重复有序:List集合中的元素有下标从0开始,以1递增可重复:存储一个1,还可以再存储1List既然是Collection接口的子接口,那么肯定List接口有自己”特色“的方法以下只列出List接口特有的常用的方法:void add(int index, Object element)Object get(int index)int indexOf(Object o)int lastIndexOf(Object o)Object remove(..

2021-02-10 23:04:42 98 1

原创 关于集合遍历/迭代 | B站Java学习笔记

以下讲解的遍历/迭代方式,是所有Collection通用的一种方式,在Map集合中不能用,在所有的Collection以及子类中使用。创建集合对象public class CollectionTest02 { public static void main(String[] args) { Collection c = new ArrayList(); 后面的集合无所谓,主要是看前面的Collection接口怎么遍历/迭代 c.add("abc"); c.add("def"); c.a

2021-02-10 20:57:51 140 3

原创 Collection | B站Java学习笔记

Collection中能存放什么元素?没有使用”泛型“之前,Collection中可以存储Object的所有子类型。使用了”泛型“之后,Collection中只能存储某个具体的类型。集合后期我们会学习”泛型“语法,目前先不用管,Collection什么都能存,只要是object的子类型就行,(集合中不能直接存储基本数据类型)Collection中的常用方法boolean add(Object e) 向集合中添加元素int size() 获取集合中元素的个数void clear()..

2021-02-09 20:34:26 86 4

原创 集合 | B站Java学习笔记

集合概述1.1 什么是集合?有什么用?数组其实就是一个集合。集合实际上就是一个容器,是一个载体,可以容纳其他类型的数据,可以一次容纳多个对象。集合为什么说在开发中使用较多?回答:假设连接数据库,数据库当中有10条记录,那么假设把这10条记录查询出来,在java程序中会将10条数据封装成10个java对象,然后将10个java对象放到某一个集合当中,将集合传到前端,然后遍历集合,将一个数据一个数据展现出来。1.2 集合不能直接存储基本数据类型,另外集合也不能直接存储java对象,集合当中存储的都.

2021-02-09 16:58:49 98 1

原创 异常 | B站Java学习笔记

java的异常处理机制异常在java中以类和对象的形式存在,那么异常的继承结构是怎样的?我们可以使用UML(Unified Modeling Language)图来描述一下继承结构什么是UML?有什么用?UML是一种统一建模语言一种图表式语言(画图的)UML不是只有java中使用,只要是面向对象的编程语言,都有UML一般画UML图的都是软件架构师,或者说是系统分析师,软件设计人员使用的在UML图中,可以描述类和类之间的关系,程序执行的流程,对象的状态等在java软件开发当中,软件分..

2021-02-08 16:25:32 122 4

原创 String | B站Java学习笔记

java中规定,双引号括起来的字符串,是不可变的,也就是说”abc"自出生到最终死亡,不可变,不能变成“abcd"在JDK当中双引号括起来的字符串,都是直接储存到方法区的字符串常量池当中的为什么SUN公司把字符串设置存储在一个“字符串常量池”当中呢。因为字符串在实际的开发中使用的太频繁,为了执行效率,所以把字符串放到了方法去的字符串常量池当中。String s1 = new String("hello");String s2 = new String("hello");一共3个对象:方法区.

2021-02-07 14:12:35 69 1

原创 Object类 | B站Java学习笔记

JDK类库的根类:Object间接继承Object类当中有哪些常用的方法?去哪里找这些方法?第一种方法:去源代码当中(但这种方式比较麻烦,源代码也比较难)第二种方法:去查阅java的类库的帮助文档什么是API? Application Programming Interface应用程序编程接口整个JDK的类库就是一个javase的API每一个API都会配置一套API帮助文档SUN公司提前写好的这套类库就是API,一般每一份API都对应一份API帮助文档目前为止我们只需要这几个方

2021-02-02 16:52:54 68

原创 访问控制权限 | B站Java学习笔记

访问控制权限都有哪些?4个privateprotected public 默认以上的4个访问控制权限:控制的范围是什么?private 表示私有的,只能在本类中访问public 表示公开的,在任何位置都可以访问“默认” 表示只能在本类,以及同包下访问protected表示只能在本类,同包,子类中访问访问控制修饰符子类同包子类任意位置public可以可以可以可以–––––protected可以可以

2021-02-02 16:01:05 88

原创 关于java语言中的package和import机制

为什么要使用package?package是java中包机制包机制的作用是为了方便程序的管理不用功能的类分别存放在不同的包下。(按照功能划分的,不同的软件包具有不同的功能)package怎么用?package是一个关键字,后面加包名,例如:package com.bjpowernod.javase.chapter17;注意:package语句只允许出现在java源代码的第一行包名有没有命名规范?有一般都采用公司域名倒序的方式 (因为公司域名具有全球唯一性)报名命名规范:.

2021-02-02 15:26:32 272 1

原创 类型与类型之间的关系 | B站Java学习笔记

类型与类型之间的关系:is a:Cat is a Animal 猫是一个动物凡是能够满足is a的表示“继承”关系A extends Bhas a:I has a Pen 我有一支笔凡是能够满足has a关系的表示“关联关系”关联关系通常以“属性”的形式存在A { B b;}like a:Cooker like a FoodMenu 厨师像一个菜单一样 凡事能够满足like a关系的表示“实现关系”实现关系通常是:类实现接口A implements B抽象类和接口有

2021-02-02 11:32:12 87

原创 接口在开发中的作用 | B站Java学习笔记

接口在开发中的作用注意:接口在开发中的作用,类似于多态在开发中的作用多态:面向抽象编程,不要面向具体编程,降低程序的耦合度,提高程序的扩展力public class Master { public void feed(Dog d) { } public void feed(Cat c) { } }假设又要养其他的宠物,那么这个时候需要再加1个方法这样扩展力太差了,违背了OCP原则(对扩展开放,对修改关闭)下面的是 面向Animal父类编程,父类是比子类更抽象的所以我们叫做面向抽象编

2021-02-02 09:42:02 111 2

原创 继承&实现 | B站Java学习笔记

继承和实现都存在的话,代码应该怎么写?extends关键字在前implements关键字在后接口通常模拟的是行为动作public class Test04 { public static void main(String[] args) { //创建对象 (表面看Animal类没起作用) Flyable f = new Cat(); //多态 f.fly(); Flyable f2 = new Pig(); f2.fly(); }}class Animal

2021-01-31 16:37:45 73

原创 接口 | B站Java学习笔记

接口是一种引用数据类型,编译之后也是一个class字节码文件。接口是完全抽象的。(抽象类是半抽象。)或者也可以说,接口是特殊的抽象类接口怎么定义?语法是什么?[修饰符列表] interface 接口名 {}接口支持多继承,一个接口可以继承多个接口。接口中只有:常量,抽象方法。接口中没有其他内容了。接口中所有的元素都是public修饰的。(都是公开的)接口中的抽象方法定义时:public abstract修饰符可以省略接口中的常量的public static final可以省略.

2021-01-31 12:27:23 113

原创 抽象类 | B站Java学习笔记

抽象类:类和类之间有共同特征,将这些具有共同特征的类再进一步抽象形成了抽象类,由于类本身是不存在的,所以抽象类无法创建对象抽象类和抽象类实际上可能还会有共同特征,还可以进一步再抽象抽象类属于什么类型?引用数据类型抽象类怎么定义?[修饰符列表] abstract class 类名{ 类体;}抽象类是无法实例化的,无法创建对象的,所以抽象类是用来被子类继承的final和abstract是对立的,不能联合使用抽象类的子类可以是抽象类抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法是供

2021-01-30 14:55:37 82

原创 final | B站java学习笔记

finalfinal是java语言中的一个关键字final表示最终,不可变的final可以修饰变量以及方法,还有类等final修饰的变量?final修饰的局部变量,一旦赋值,不能重新赋值 final修饰的变量只用赋一次值 如果变量是一个”引用“呢? 回答:”引用“也是变量,只是有一个特殊的名字叫”引用“ final修饰的引用:该引用只能指向1个对象,并且它只能永远指向该对象,无法再指向其它对象 并且,在该方法执行过程中,该引用指向

2021-01-27 21:37:46 74

原创 super | B站Java学习笔记

super和this对比着学习this:this能出现在实例方法和构造方法中this的语法是 “this” “this()"this不能使用在静态方法中this.大部分情况下是可以省略的this.什么时候不能省略?区分局部变量和实例变量的时候不能省略public void setName(String name) { this.name = name;}this()只能出现在构造方法第一行,通过当前的构造方法中调用”本类”中其他的构造方法,目的是:代码复用super:supe

2021-01-25 12:22:05 79

原创 方法覆盖 Override | B站Java学习笔记

public class OverrideTest01 { public static void main(String[] args) { Bird b = new Bird(); b.move(); b.sing(); Cat c = new Cat(); c.move(); }}class Animal { public void doSome() { } public void move() { System.out.println("animals

2021-01-18 19:22:50 53

原创 继承 | B站Java学习笔记

什么是继承,有什么用?作用:①基本作用:子类继承父类,代码可以得到复用 (这个不是重要的作用,是基本作用)②主要(重要)作用:因为有了继承关系,才有了后期的方法覆盖和多态机制语法:class 类名 extends 父类名 { 类体;}继承的相关特性①B类继承A类,则称A类为超类(superclass),父类,基类B类则称为子类(subclass), 派生类,扩展类class A {}class B extends A {}平时说的比较多的是:父类和子类②Java中的继承.

2021-01-18 10:55:52 58

原创 当前内容总结 | B站Java学习笔记

总结所有的变量怎么访问,总结所有的方法怎么访问总结一下到目前为止在一个类中都接触过什么了类体 { 实例变量; 实例方法; 静态变量; 静态方法; 构造方法; 静态代码块; 实例语句块; 方法() { int i = 100; }}public class Review { //类 // 类加载机制中,是这样的:在程序执行之前,凡是需要加载的类全部加载到JVM当中 // 先完成加载才会执行main方法 static { System.out.printl

2021-01-16 17:51:58 72 1

原创 this用法总结 | B站Java学习笔记

this 是一个关键字this 可以使用在实例方法中,也可以使用在构造方法中this 出现在实例方法中其实代表的是当前对象this 不能使用在静态方法中this. 大部分情况下可以省略,但是用来区分局部变量和实例变量的时候不能省略this() 这种语法岂能出现在构造方法第一行,表示当前构造方法调用奔雷其他的构造方法,目的是代码复用仅供学习使用,内容版权归B站视频老师所有。...

2021-01-15 21:41:54 41

原创 this()的用法 | B站Java学习笔记

this除了可以使用在实例方法中,还可以用在构造方法中新语法:通过当前的构造方法去调用另一个本类的构造方法,可以使用以下语法格式:this(实际参数列表)this() 这个语法作用是什么?回答:代码复用重点 死记硬背只能出现在构造方法的第一句只能出现一次,不能出现两次需求:– 定义一个日期类,可以表示年月日信息– 需求中要求:如果调用无参数构造方法,默认创建的日期为:1970年1月1日当然,除了调用无参数构造方法之外,也可以调用有参数的构造方法来创建日期对象class Date.

2021-01-15 21:14:19 3551 2

原创 this什么时候不能省略 | B站Java学习笔记

this 可以使用在实例方法中,不能使用在静态方法中this关键字大部分情况下可以省略,什么时候不能省略?回答:在实例方法中,或者构造方法中,为了区分局部变量和实例变量,这种情况下:this. 是不能省略的class Student { private int no; private String name; public Student() {} public Student(int i, String s) { no = i; name = s; } //setter.

2021-01-15 14:30:28 681 3

原创 this | B站Java学习笔记

this 是什么?在内存方面是怎样的?一个对象一个this。this是一个变量,是一个引用。this保存当前对象的内存地址,指向自身。所以,严格意义上来说,this代表的就是"当前对象”this存储在堆内存当中对象的内部this只能使用在实例方法中,谁调用这个实例方法,this就是谁class Customer { String name; //属性,实例变量 //构造方法 public Customer() { } public Customer(String s)

2021-01-15 12:49:21 56

原创 实例代码块 | B站Java学习笔记

实例代码块用的很少,作为了解除了静态代码块之外,还有一种语句块叫做:实例语句块实例语句在类加载是并没有执行实例语句语法{ Java语句;}public class InstanceCode { //入口 public static void main(String[] args) { System.out.println("main begin!"); new InstanceCode(); new InstanceCode(); new InstanceCod

2021-01-14 11:02:01 161

原创 静态代码块 | B站Java学习笔记

使用static关键字可以定义:静态代码块什么是静态代码块,语法是什么?static {}static静态代码块在什么时候执行呢?回答:类加载时执行,并且只执行一次。一个类当中,可以编写多个静态代码块public class StaticTest06 { static { System.out.println("A"); } static { System.out.println("B"); } public static void main(String[] a.

2021-01-14 09:39:18 58

原创 static | B站Java学习笔记

static: 静态的1. 所有static关键字修饰的都是类相关的,类级别的2. 所有static修饰的,都是采用"类名."的方式访问3. static修饰的变量:静态变量4. static修饰的方法:静态方法(博主的小理解,之所以称作为静态,是因为针对类级别的话,不会根据具体的不同的对象变化而变化,如有理解不对,请指出 ^^)变量的分类:变量根据声明的位置进行划分: 在方法体当中声明的变量:局部变量 在方法体外声明的变量:成员变量成员变量又可以分为: 实例变量 静态变量c

2021-01-13 12:45:02 50

原创 封装 | B站Java学习笔记

面向对象的首要特征:封装什么是封装?有什么用?现实生活中很多例子都是封装的,比如手机,电视机,笔记本电脑,照相机,这些都是外部有一个坚硬的壳。封装起来,保护内部的部件。保证内部的部件是安全的。另外,封装了之后,对于我们使用者来说,我们是看不见内部的复杂结构了,我们也不需要关心内部有多么复杂,我们只需要操作外部壳儿上的几个按钮就可以完成操作。封装的两个作用:1. 保证内部结构的安全。2. 屏蔽复杂,暴露简单。在代码级别上,封装有什么用呢?---- 一个类体当中的数据,假设封装之后,对

2021-01-12 21:49:04 132

原创 构造方法 | B站Java学习笔记

构造方法什么是构造方法,有什么用?构造方法是一个比较特殊的方法,通过构造方法可以完成对象的创建,以及实例变量的初始化。换句话说:构造方法是用来创建对象,并且同时给对象的属性赋值。(注意:实例变量没有手动赋值的时候,系统会赋默认值)public class ConstructorTest01 { public static void main(String[] args) { Student s1 = new Student(); System.out.println(s1); //结果

2021-01-12 10:18:15 154

原创 方法调用时参数的传递问题 | B站Java学习笔记

分析程序的输出结果public class Test1 { public static void main(String[] args) { int i = 10; 局部变量,域是main add(i); 将i变量中保存的10复制一份,传给add方法 System.out.println(i);//10 } public static void add(int i){ i局部变量,域是add i++; System.out.println(i); //11 }}int i

2021-01-10 20:50:11 97

原创 Java | 空指针异常 | B站java学习笔记

public class T { A a; public static void main (String[] args) { D d = new D(); C c = new C(); B b = new B(); A a = new A(); T t = new T(); //下面四行代码不写的话,会出现空指针异常 c.o4 = d; b.o3 = c; a.o2 = b; t.o1 = a; //编写代码通过t来访问d中的i System.out.p

2021-01-10 15:54:39 81 1

原创 Java内存空间 | B站Java学习笔记

public class Address { String city; String street; String zipcode;}public class User { int id; // instance variable String username; // instance variable Address addr; // instance variable}int 是基本数据类型;String是引用数据类型Address也是引用数据类型instance vari

2021-01-10 12:53:31 149 5

原创 关于编译的过程 | B站Java学习笔记

应该先编译XueSheng.java,然后再编译XueShengTest.java但是对于编译器来说,编译XueShengTest.java文件的时候,会自动找XueSheng.class, 如果没有,会自动编译XueSheng.java文件,生成XueSheng.class文件。第一种方式:javac XueSheng.javajavac XueShengTest.java第二种方式:javac XueShengTest.java第三种方式:javac *. java仅供学习复习

2021-01-07 21:26:04 61

原创 类和对象的理解 | B站学习Java笔记

类和对象面向对象当中最主要的”一词”是:对象-什么是类?类实际上在现实世界当中是不存在的,是一个抽象的概念。是一个模板。是我们人类大脑进行“思考,总结,抽象”的一个结果。(主要是因为人类的大脑不一般才有了类的概念)类本质上是现实世界当中某些事物具有共同特征,将这些共同特征提取出来形成的概念就是一个“类”明星是一个类-什么是对象?对象是实际存在的个体。(真实存在的个体)宋小宝是一个对象姚明是对象...宋小宝,姚明,刘德华这3个对象都属于“明星”这个类在Java语言中,要想得到“对象

2021-01-05 17:43:19 117 2

原创 CS61B Spring 2014 | Lecture Notes | 5. Arrays

Arrays-An object storing a numbered list of variables-Each is a primitive type or referencechar[] c; //Reference to array (any length) of charactersc = new char[4];c[0] = 'b';...c[3] = 'e';c[4] = 's'; // Run-time errorField ”c.length"You can ne

2020-09-27 12:32:05 95

原创 CS61B Spring 2014 | Lecture Notes | 4. Types/Conditionals

这是我学习CS61B Spring 2014第四课整理的笔记,先记录下来课堂内容以便后期复习,希望大家学习愉快!课堂内容版权为伯克利CS61B所有课堂链接:https://www.bilibili.com/video/BV1vt411W7yu?p=3Primitive Types-built right into Java-core to the language-no need to create an object to store a primitive type-can be stor

2020-09-22 11:06:33 121

原创 CS61B Spring 2014 | Lecture Notes | 3. Defining Classes

这是我学习CS61B Spring 2014第三课整理的笔记,先记录下来课堂内容以便后期复习,希望大家学习愉快!课堂内容版权为伯克利CS61B所有课堂链接:https://www.bilibili.com/video/BV1vt411W7yu?p=2Defining Classes-Fields: variables stored in objects相当于instance variablesamanda.age --> 这是一个fieldamanda.introduce() --&gt

2020-09-22 05:02:49 138

空空如也

空空如也

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

TA关注的人

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