
Java基础
ZZYSY~
这个作者很懒,什么都没留下…
展开
-
仿写HashMap,思路清晰
最近在看HashMap的源码,了解了HashMap的原理和方法实现的过程,觉得如果自己仿写可以简单仿写一个HashMap可能就会更加清楚了,说干就干。说明一下,自己只仿写了put和get方法,其他方法其实大致原理差不多。首先,HashMap的底层是一个数组,数组中的元素Node有四个属性,Key,Value,Key的Hash值和为了解决产生Hash冲突而设置的Next结点,如下:class Node<K,V>{ K key; V value; int hash;原创 2022-03-19 13:51:21 · 756 阅读 · 0 评论 -
Lambda表达式的几种简化形式
对于一个函数式接口(只有一个方法的接口),我们可以使用lambda表达式来实现它的,下面是使用lambda表达式时的几种简化形式常规形式(有参数类型,有括号,有花括号)public class lamda { public static void main(String[] args) { Hello like = (int i)->{ System.out.println("hello" + i); }; li原创 2022-02-13 10:38:04 · 1404 阅读 · 0 评论 -
JDK动态代理
简介什么是代理?代理在日常生活中随处可见,例如中介,代购,电商等等比如一个位于外国的学校,面向全世界招生,在我们和学校之间就会有一个留学中介的角色(代理)。留学中介:帮助这个学校招生,学生可以通过中介来达到入学的目的。特点:1.中介和代理他们要做的事情是一致的:招生2.中介是代理,学校是目标3.家长-------->中介(学校介绍,办理入学手续)---------->美国学校4.中介是代理,收取额外费用为什么要找中介?1.中介可以使学生更加方便快捷地办理入学手续。2.学生原创 2021-08-30 17:21:38 · 141 阅读 · 0 评论 -
面向对象的三条主线
原创 2022-01-16 10:11:44 · 257 阅读 · 0 评论 -
java的输入
使用Scanner类进行输入1.next()方法:用来输入String类型的数据,以空格为结束Scanner sc = new Scanner(System.in);String nameString = sc.next();System.out.println(nameString);2.nextLine()方法用来输入String类型的数据,以回车为结束Scanner sc = new Scanner(System.in);String nameString = sc.nextLin原创 2022-01-16 09:55:34 · 91 阅读 · 0 评论 -
String
内存中的情况字符串常量池不允许有相同的值,相同的值只能是一个地址String最常用的方法1.判断String的长度length()String aString = "123456789";int length = aString.length();System.out.println(length);2.用charAt()获取到Sting当中的指定的值String aString = "123456";String bString = new String("123456");ch原创 2022-01-16 09:52:15 · 93 阅读 · 0 评论 -
==到底在判断什么
①对于基本数据类型:==是判断值是否相同②对于引用数据类型:是判断地址是否相同③equal方法只能用在引用数据类型中,起源于Object类,但在Object类中的equal方法使用判断地址是否相同④String类对来自Object类中的equal方法进行了重写,先判断地址是否相同,相同返回true,如果不同就会判断要判断的是否是String类型,如果是则进行值的比较,不是则返回false...原创 2022-01-16 09:48:08 · 493 阅读 · 0 评论 -
static大乱斗
public class InitializeDemo { private static int k = 1; private static InitializeDemo t1 = new InitializeDemo("t1"); private static InitializeDemo t2 = new InitializeDemo("t2"); private static int i = print("i"); private static int n =原创 2022-01-16 09:09:43 · 256 阅读 · 0 评论 -
方法参数在内存中的指向问题
public class Test { public static void main(String[] args) { int a = 10; int b = 200; Integer a1 = 10; Integer b1 = 200; Student a2 = new Student("张三"); Student b2 = new Student("李四"); test1(10,20原创 2022-01-16 09:09:37 · 113 阅读 · 0 评论 -
int和Integer的==比较
public class Test { public static void main(String[] args) { int a = 10; int b = 200; Integer a1 = 10; Integer b1 = 200; Integer a2 = new Integer(a1); Integer b2 = new Integer(b1); System.out.prin原创 2022-01-16 09:09:30 · 391 阅读 · 0 评论 -
Byte加Byte不等于Byte
对于这段代码,c=a+b那行爆红public class Test { public static void main(String[] args) { Byte a = 1; Byte b = 2; Byte c = a + b; System.out.println(c); }}对于这段代码,可以正常运行并且结果也正确public class Test { public static void main(S原创 2022-01-15 21:57:44 · 594 阅读 · 0 评论 -
128陷阱
public static void main(String[] args) { Integer num1 = 100; Integer num2 = 100; System.out.println(num1 == num2); Integer num3 = 128; Integer num4 = 128; System.out.println(num3 == num4);}输出为true和false解析:答案就在Integet的valueOf()方当中,如果我们的数原创 2022-01-15 21:27:13 · 113 阅读 · 0 评论 -
Java包装类
为什么要有包装类①在面向对象中,“一切皆对象”,但基本数据类型的数据不太符合这一理念,基本数据类型不是对象②涉及到类型之间的转化,数据类型之间的基本操作;如果都有我们自己去实现,那么工作量过大。所以java针对每一个基本数据类型都设计了一个包装类自动拆装箱1.装箱:把基本类型数据转成对应的包装类对象。//方式1Integer i = Integer.value(13);//方式二Integer i = new Integer(13);2.拆箱:把包装类对象转成对应的基本数据类型数据原创 2022-01-15 11:11:53 · 209 阅读 · 0 评论 -
Java运算符
基本运算符0作为整数的除数:0作为浮点型数的除数:5.0 / 2:5 % 2:3 + 9 * 8.0 / 2 % 2:结合运算符x += 4 == x = x + 4自增和自减int m = 10;int n = 10;a = ++m;b = n++;得:a = 11,b = 10(++m:先+1再赋值;n++:先赋值再+1)关系和boolean运算符位运算符&按位与:两个操作数,如果同为1则为1,否则为00000 1010 & 0原创 2022-01-15 10:27:49 · 203 阅读 · 0 评论 -
Java变量与常量
常量和变量变量内存中的存储局部变量:全局变量:常量在内存中的存储原创 2022-01-15 10:21:51 · 116 阅读 · 0 评论 -
Java的基本数据类型
8种基本数据类型整型的取值范围数据类型的转换数据在计算机中的存储磁盘上有磁和无磁分别代表1和0,磁盘由一个一个0或1的小磁点组成的。计算机中储存数据是以补码的形式存在的,数据的原码最高位表示正负,0表示正数,1表示负数正数的反码、补码和原码相同,负数的反码等于原码符号位不变,其余各位取反,负数的补码等于其反码基础上末尾+1计算机引入反码的目的:为了解决减法的问题计算机引入补码的目的:为了解决减法所产生的的正负0的问题byte a = 127;byte b = (byte)(a +原创 2022-01-15 10:18:49 · 90 阅读 · 0 评论 -
Java内存中的情况
java的跨平台优势:在不同的操作系统上拥有不同的jvm虚拟机,jvm屏蔽了底层运行平台的差别,实现了,一次编译,到处运行jdk>jre>jvm原创 2022-01-15 10:16:30 · 112 阅读 · 0 评论 -
二叉树总结整理
二叉树的遍历广度优先遍历层次遍历,每一层从左到右依次遍历public static void ceng(Node tree){ Queue<Node> queue = new LinkedList<>(); Node node; if(tree == null) { return; } queue.add(tree); while (!queue.isEmpty()){ node = queue.原创 2022-01-15 10:13:54 · 288 阅读 · 0 评论 -
java中的数组
数组存储地址连续,数组只记录第一个比特点地址,后面+N代表第N个地址,任何数组都是从0开始的。新建的数组每一个地址默认值为0,新建的数组并不是空的,而是满数据的,数组赋值只是值的覆盖,地址的确是连续的。基本使用我们可以看出,该数组的地址是连续的,我们要想取到数据下面的值,我们可以直接通过数组的下标进行获取。public class TestArray { public static void main(String[] args) { //创建一个数组 int[] arr = new原创 2022-01-15 10:02:46 · 289 阅读 · 0 评论