
java基础随笔
Yangshiwei....
好好努力
展开
-
java反射
什么是反射?反射就是把java类中各个成分映射成一个个的java对象。即在运行状态中:对于一个任意的类,我们要知道这个类的所有属性和方法。对于一个任意的对象,都能调用他的任意的一个属性和方法...原创 2022-02-20 23:50:36 · 139 阅读 · 0 评论 -
java 数组相关知识
数组是一种数据结构, 用来存储同一类型值的集合。通过一个整型下标可以访问数组中 的每一个值。数组在内存地址中通常是连续的。声明数组的两种方式int[] a; 或 int a[]; 创建数组的两种方式inta[]= new int[100]; int a[]={1,2,3,...原创 2022-01-18 21:56:04 · 201 阅读 · 0 评论 -
java 有序二叉树插入代码与四种遍历
有序二叉树,顾名思义他是有序的,该树的每一个结点的左节点都小于该节点,所有的右节点都大于该节点,如果数满足这种条件则称之为有序二叉树。比如下面这就是一颗有序二叉树。这是树结点的代码,一个结点有他的左子树与右子树以及该节点对应的值public class Tree { public Tree left=null; public Tree right=null; public int value;}这是我的有序树,其中,treeN...原创 2022-01-17 22:02:08 · 432 阅读 · 0 评论 -
为什么重写equals就要重写hashcode
在学习java的时候常常提到,重写equals就要重写hashcode,hashcode和equals是个绑定在一起的东西。要了解这个我们需要了解两个函数 hashCode 方法 散列码( hash code ) 是由对象导出的一个整型值。散列码是没有规律的。如果 x 和 y 是 两个不同的对象, x.hashCode( ) 与 y.hashCode( ) 基本上不会相同。 而hashcode的实现,主要是因为hash表的存在,有篇博客讲过哈希表...原创 2022-01-17 00:21:28 · 919 阅读 · 0 评论 -
Java 链表的反转(图解)
首先定义一个链表,采用头插:我们要将他反转过来,已知一个头结点,之后我们需要在定义两个结点,为什么是两个不是一个呢,原因如下:初始状态:我们知道,链表要反转的话,第二个几点就会指向第一个结点故我们需要多两个结点来操作这样当我们操作第2个结点指向第一个结点的时候,就不会发生错误了。代码:public static void main(String[] args) { int arr[]={1,2,34,5,8,65}; ..原创 2022-01-16 23:19:17 · 537 阅读 · 0 评论 -
java 链表的头插尾插相关代码
int arr[]={1,2,34,5,8,65}; Node link=new Node(); for(int i:arr){ Node x=new Node(); x.value=arr[i]; x.next=link; link=x; } //头插int arr[]={1,2,34,5,8,65}; Node link=.原创 2022-01-16 22:57:20 · 89 阅读 · 0 评论 -
java main方法与输入输出代码
main方法:public static void main(String [] args){ }输入函数:mport java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n=sc.nextInt(); String s=sc.next();原创 2022-01-16 22:20:32 · 1234 阅读 · 0 评论 -
java 基本数据类型和包装器类型
基本类型 包装器类型 int(32位) Integer byte(8位) Byte short(16位) Short long(64位) Long float(32位) Float double(64位) Double char(根据编码决定, 选择的编码每个长度是多少,占位就是多少) Character boolean(32位) Boolean ...原创 2022-01-16 22:16:51 · 107 阅读 · 0 评论 -
java 数据转换
实线表示不会丢失精度,虚线表示转换可能会丢失精度(并不是一定会丢失)强制类型转换有极大的概率会丢失精度(即与上图反着转,前面要加括号,如(byte)(int 类型的数据))基本类型之间可以强制转换引用类型不能随便强转,存在继承关系的话才可以强转...原创 2022-01-16 00:16:28 · 59 阅读 · 0 评论 -
数字的交换
如图所示,为什么我们明明写了方法交换了两个变量,但是出来的时候却不变呢?如java书中对方法参数介绍的java中的调用是按值调用,所以调用方法后,方法入栈,并产生一个新的栈帧,产生一个新的数据在那存储着,不会影响到之前的数,可以这么理解一开始初始化ab,ab入栈,然后调用t1方法,此时t1方法内也有一个a与b,经过交换后,里面的a=2,b=1,在他方法内,a与b是交换过后的数,但当t1出栈后,ab又变回来最先开始原来的a与b此时再输出ab则会是原来的值。...原创 2022-01-16 00:09:08 · 90 阅读 · 0 评论 -
x=x++问题
首先我们需要明确x++和++x的区别x++ :将先使用变量x当前的值,然后+1++x:先讲变量x的值+1然后使用如下:所以当x=x++时,x先用后加,先执行x=x把CPU中的计算结果刷新到内存,此时内存中x的值等于之前的x,x++是在CPU中加,但因为没有使用刷新,被丢弃。...原创 2022-01-15 23:42:54 · 1815 阅读 · 0 评论 -
StringBuilder,String,StringBuffer的区别与常用String方法
常用String方法1,char charAt (int index)返回给定位置的代码单元。2,int compareTo(String other)比较字符串大小按照字典顺序(编码顺序),如果字符串位于 other 之前, 返回一个负数;如果字符串位于 other 之 后,返回一个正数;如果两个字符串相等,返回 03,boolean equals(0bject other)字符串相等的比较(字符串的比较只能用eq...原创 2022-01-15 23:23:04 · 126 阅读 · 0 评论 -
接口和抽象类的区别
相同点:(1)都不能被实例化(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。不同点:(1)接口只有定义,不能有方法的实现,而抽象类可以有定义与实现,方法可在抽象类中实现。(2)实现接口的关键字为implements,多个接口之间用“,”隔开;继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。(3)接口强调特定功能的实现,而抽象类强调所属关系。(4)接口成员变量默认为publi原创 2022-01-15 23:15:51 · 80 阅读 · 0 评论 -
java修饰符的权限
修饰符的访问权限 修饰符 当前类 同 包 子 类 其他包 public √ √ √ √ protected √ √ √ × default √原创 2022-01-15 23:06:38 · 153 阅读 · 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 i原创 2022-01-15 22:58:13 · 275 阅读 · 0 评论 -
final与字符串为什么不可变
我们首先要了解final这个关键字final最终的,不可改变的,顾名思义一旦定义不可改变,常用量声明常量。final一般和stadic(静态)连起来使用final关键字的作用:1、修饰的常量只能被赋值一次(防止第二次被赋值)2、修饰的类不可被继承(防止类被继承)3、能够防止指令重排序,保障线程可见性4、修饰的方法不能被重载或重写这边解释一个第三点,在方法中指令原本是从上往下执行的,...原创 2022-01-15 22:37:16 · 334 阅读 · 0 评论 -
128陷阱
128陷阱原创 2022-01-15 22:09:00 · 255 阅读 · 0 评论 -
byte类型的强转换问题(int c=byte a+byte b)
Java提供了一个byte数据类型,并且是基本类型。java byte是做为最小的数字来处理的,值域被定义为-128~127。但在计算加减法的时候遇到这样的问题:明明ab都是byte类型,相加用byte接确报错,提示需要用int类型。这是因为在java中,因为byte数量太小了,所以没有byte的加法,只支持int的加法,故会自动把byte扩展成intpublic static void main(String[] args) { Byte a=2;原创 2022-01-15 21:16:34 · 853 阅读 · 0 评论