Java学习
aoi.tsukasa
小白程序员,欢迎评论指出错误,讨论问题哦
展开
-
Java-HashMap的初始化与扩容
以无参构造为例,解析HashMap从创建到扩容的源码 // 默认初始化容量 16 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 默认加载因子 static final float DEFAULT_LOAD_FACTOR = 0.75f; // 初始节点数组 transient Node<K,V>[] table; // 阈值,达到就扩容 int threshold; final float loadFactor;原创 2021-10-07 18:49:48 · 191 阅读 · 0 评论 -
Java-Java是值传递
值传递:值传递就是在函数调用的时候,把实参复制一份传给函数,这样如果在函数中对参数进行修改的话,不会影响到实际参数。 引用传递:而引用传递就是在函数调用的时候,把实际参数在内存中的地址直接传给函数,这样如果函数中对参数进行修改的话,就会影响到实参的值。 如下代码,在所谓的引用传递当中,我们将user对象的地址传递给了形参,而方法内将对象做了修改,形参与实参指向对象相同,所以输出结果相同。 public class test { public static void main(String[] arg原创 2021-10-07 18:49:16 · 105 阅读 · 0 评论 -
Java-HashMap尾插法
值传递:值传递就是在函数调用的时候,把实参复制一份传给函数,这样如果在函数中对参数进行修改的话,不会影响到实际参数。 引用传递:而引用传递就是在函数调用的时候,把实际参数在内存中的地址直接传给函数,这样如果函数中对参数进行修改的话,就会影响到实参的值。 如下代码,在所谓的引用传递当中,我们将user对象的地址传递给了形参,而方法内将对象做了修改,形参与实参指向对象相同,所以输出结果相同。 public class test { public static void main(String[] arg原创 2021-10-07 18:46:54 · 1280 阅读 · 0 评论 -
Java-集合
数组长度固定,集合长度不固定 数组可以存储基本类型和引用类型,集合只能存储引用类型 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Gah7KE4-1627712339924)(C:\Users\14284\Desktop\Markdown文档\Java 基础\集合\1.png)] 1. List 特点:有序,有下标,元素可重复, 1.1 ArrayList 特点:查找快,增删慢,线程不安全 注意:我们所说的有序是指存入数据和读取数据顺序一致,反之则为无需。并不是..原创 2021-07-31 14:20:22 · 107 阅读 · 0 评论 -
Java-成员变量初始化优先于构造函数的执行
public class test { public static void main(String[]args){ test t = new test(); test.c2 c = t.new c2(); } class c2 extends c1{ // public String s="BBBB"; //子类构造函数 public c2(){ call();原创 2021-07-29 00:01:05 · 500 阅读 · 0 评论 -
Java-String.length()与String.getBytes().length()
String.length()是表示字符串所需的UTF-16代码单元的数量。也就是说,它是用于表示字符串的char值的数量,因此等于toCharArray().length。 String.getBytes().length是在平台的默认编码中表示字符串所需的字节数。 public class test { public static void main(String[] args) throws UnsupportedEncodingException { String s = "原创 2021-07-19 11:32:06 · 851 阅读 · 0 评论 -
Java-ArrayList扩容
以无参数构造方法创建 ArrayList 时,实际上初始化赋值的是一个空数组。当真正对数组进行添加元素操作时,才真正分配容量。即向数组中添加第一个元素时,数组容量扩为10。 // 用于默认大小的空实例的共享空数组实例。我们将其与 EMPTY_ELEMENTDATA 区分开来,以了解在添加第一个元素时要膨胀多少 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; transient Object[] elementDat原创 2021-07-19 11:31:26 · 80 阅读 · 0 评论 -
Java-向上转型与向下转型
一,向上转型 创建父类 public class Father{ public void sayHello(){ System.out.println("i am your father"); } public void doSomething(){ System.out.println("make money"); } } 创建子类 public class Son extends Father{ public void sayH原创 2021-07-19 11:30:47 · 72 阅读 · 0 评论 -
Java-内部类
内部类的分类:成员内部类(静态,非静态),局部内部类(方法内,代码块内,构造器内) 1. 成员内部类 作为外部类的成员 调用外部类的结构 可以被static修饰 可以被4种不同的权限修饰 作为一个类 类内可以定义属性,方法,构造器等 可以被final修饰,表示此类不能被继承 可以被abstract修饰 public class Person { String name; int age; public void sayHello(){ System.out原创 2021-07-19 11:30:13 · 266 阅读 · 0 评论 -
Java-构造方法
Java 构造方法有以下特点: 方法名必须与类名相同 可以有 0 个、1 个或多个参数 没有任何返回值,包括 void 默认返回类型就是对象类型本身 只能与 new 运算符结合使用 在一个类中定义多个具有不同参数的同名方法,这就是方法的重载。在实例化该类时可以调用不同的构造方法进行初始化。 public class Pet{ private String name; int health; int love; public Pet(String name, int health原创 2021-07-19 11:29:44 · 96 阅读 · 0 评论 -
Java-构造代码块与静态代码块
构造代码块 public class Dog extends Pet{ // 子类特有成员 String strain; public Dog(String name,int health,int love,String strain){ this.strain = strain; System.out.println("Dog类的构造方法"); } { System.out.println("Dog类的构造代码块"); }原创 2021-07-19 11:29:12 · 50 阅读 · 0 评论 -
Java-访问控制权限
默认访问权限(包访问权限):用来修饰类的话,表示该类只对同一个包中的其他类可见。 public:用来修饰类的话,表示该类对其他所有的类都可见。 只有default和public可以修饰类 默认访问权限(包访问权限):如果一个类的方法或变量被包访问权限修饰,也就意味着只能在同一个包中的其他类中显示地调用该类的方法或者变量,在不同包中的类中不能显示地调用该类的方法或变量。 private:如果一个类的方法或者变量被private修饰,那么这个类的方法或者变量只能在该类本身中被访问,在类外以及其他类中都不能显示地原创 2021-07-19 11:28:16 · 52 阅读 · 0 评论 -
Java-断言
IDEA中开启断言 在edit configurations… > VM options > 输入 -ea 断言可以有两种形式 assert 布尔表达式 assert 布尔表达式:消息 使用第一种格式,当布尔类型表达式为false时,抛出AssertionError异常;如果是第二种格式,则输出错误消息。 public class test { static int i = 5; public static void main(String[] args) {原创 2021-07-18 22:41:52 · 62 阅读 · 0 评论 -
Java-接口
用 interface 来定义。 接口中的所有成员变量都默认是由public static final修饰的。所以变量需要显示赋值。 接口中的所有方法都默认是由public abstract修饰的。 接口没有构造方法。因为构造方法有方法体{} 在JDK1.8中,接口中的方法可以有方法体,但需要关键字static或者default来修饰。静态方法和默认方法都有自己的方法体,用于提供一套默认的实现,这样子类对于该方法就不需要强制来实现,可以选择使用默认的实现,也可以重写自己的实现。static修饰的方法不能重写原创 2021-07-18 22:41:09 · 68 阅读 · 0 评论 -
抽象类与抽象方法
需求 : 用面向对象的思维设计人类、动物、鱼之间的继承关系 在继承金字塔中,越位于塔顶的类越来越简单、抽象,导致该类的方法无法根据自身条件得以实现,此时需要子类根据自身条件实现该方法,可以把父类的方法 “置空”,这个被 置空 的方法称为抽象方法,用 abstract 修饰,语法 [修饰符] abstract 返回值 方法名(形参列表); 抽象方法一定位于抽象类中。抽象类语法 [修饰符] abstract class 类名{ } 继承抽象类的子类称为抽象类的实现类(implement clas原创 2021-07-18 22:39:20 · 192 阅读 · 0 评论