Java基础
云养猫v2
这个作者很懒,什么都没留下…
展开
-
Integer.hasCode() Long.hashCode()
Integerpublic int hashCode() { return Integer.hashCode(value); } public static int hashCode(int value) { return value; }Integer.hashCode() 返回的时 integer的int值Long public static int hashCode(long value) { return原创 2020-09-05 09:55:44 · 183 阅读 · 0 评论 -
Java 反射
在Java中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且在对于任意一个对象都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为Java语言的反射机制。Person p = new Student(); //编译时类型为 Person,运行时类型为 Student.反射的步骤1,获取想要操作的类的Class对象2,调用Class类中的对象3,使用反射API来操作这些信息获取Class对象的方法:1),调用某个对象的getClass()方原创 2020-08-27 19:29:01 · 105 阅读 · 0 评论 -
进制转换
(二、八、十六进制) → (十进制)二进制 → 十进制例:将二进制的(101011)B转换为十进制的步骤如下:第0位 1 x 2^0 = 1;第1位 1 x 2^1 = 2;第2位 0 x 2^2 = 0;第3位 1 x 2^3 = 8;第4位 0 x 2^4 = 0;第5位 1 x 2^5 = 32;读数,把结果值相加,1+2+0+8+0+32=43...转载 2020-04-24 10:01:41 · 1813 阅读 · 0 评论 -
继承与static之间的关系 子类 父类 static
小结1)子类是不继承父类的static变量和方法的。因为这是属于类本身的。但是子类是可以访问的。2)子类和父类中同名的static变量和方法都是相互独立的,并不存在任何的重写的关系。无论是static修饰的变量,还是static修饰的方法,我们都知道他们是属于类本身的,不是属于某一个对象的,当声明一个对象时,并不产生static变量和方法的拷贝。https://blog.csdn.net/...原创 2020-04-16 10:38:04 · 532 阅读 · 0 评论 -
jar包冲突怎么解决
一、Maven中jar包冲突产生原因MAVEN项目运行中如果报如下错误:Caused by:java.lang.NoSuchMethodErrorCaused by: java.lang.ClassNotFoundException十有八九是Maven jar包冲突造成的。1、依赖传递当我们需要A的依赖的时候,就会在pom.xml中引入A的jar包;而引入的A的jar包中可能又依赖B...转载 2020-04-14 18:07:18 · 1336 阅读 · 0 评论 -
深拷贝与浅拷贝
在Java中,除了基本数据类型之外,还存在类的实例对象这个引用数据类型。而一般使用“=”号做赋值操作时,对于基本数据类型,实际上就是拷贝他的值,但对于对象来说,其实赋值的是这个对象的引用,将原对象的引用传递过去,他们实际上还是指向同一个对象。如果在拷贝这个对象时,只对基本数据类型进行了拷贝,而对引用数据类型只是进行了引用传递,而没有真实的创建一个新的对象,则认为是浅拷贝。反之,在对引用数据类型进...原创 2020-04-13 17:46:29 · 162 阅读 · 0 评论 -
=赋值运算符 左右的区别
newNode.next = curr.next;curr.next = newNode;赋值号,左边的是指引用即指针赋值号,右边的是指引用的对象即指针所指向的对象原创 2020-04-12 11:42:26 · 827 阅读 · 0 评论 -
Comparator 多条件比较
class Card { int a; int b; public Card(int a, int b) { this.a = a; this.b = b; } public int getA() { return a; } public int getB() { retur...原创 2020-04-08 21:31:00 · 1122 阅读 · 0 评论 -
Java为什么要引入泛型?
Java中引入泛型最主要的目的是将类型检查工作提前到编译时期,将类型强转(cast)工作交给编译器,从而让你在编译时期就获得类型转换异常以及去掉源码中的类型强转代码。...原创 2020-04-01 17:48:09 · 591 阅读 · 0 评论 -
接口和抽象类有什么区别?
接口和抽象类都是继承树的上层相同:都是上层的抽象层都不能被实例化都能包含抽象的方法区别:在抽象类里可以写非抽象的方法,从而避免在子类中重复书写它们,这样可以提高代码的复用性。接口类中只能有抽象方法一个类只能继承一个直接父类,这个父类可以是具体的类也可是抽象类;但是一个类可以实现多个接口。...原创 2020-04-01 18:19:29 · 127 阅读 · 0 评论 -
java.lang.Object
/** * Causes the current thread to wait until either another thread invokes the * {@link java.lang.Object#notify()} method or the * {@link java.lang.Object#notifyAll()} method for this ...原创 2020-03-19 20:01:37 · 333 阅读 · 0 评论 -
java中final关键字
根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。final类不能被继承,没有子类,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。final不能用于修饰构造方法...原创 2020-03-18 14:44:42 · 98 阅读 · 0 评论 -
Java字符串效率比较
@Test public void test() { String str = "a"; long time = System.currentTimeMillis(); for (int i = 0; i < 50000; i++) { str += "c"; } System.o...原创 2020-03-16 10:12:14 · 761 阅读 · 0 评论 -
JAVA用户线程&守护线程的区别
JAVA中线程可分为:用户线程(普通线程)、守护线程(后台线程)。守护线程都是为JVM中所有非守护线程的运行提供便利服务:只要当前JVM实例中尚存在任何一个用户线程没有结束,守护线程就全部工作;只有当最后一个用户线程结束时,守护线程随着JVM一同结束工作。如果 User Thread已经全部退出运行了,只剩下Daemon Thread存在了,虚拟机也就退出了。守护线程相当于后台管理者...原创 2020-03-12 22:22:39 · 97 阅读 · 0 评论 -
Java-自动装箱和拆箱 基本类型与包装类的区别
什么是装箱?什么是拆箱?自动装箱就是Java自动将基本类型值转化为对应的对象,如将int类型的变量转换为Integer对象,这个过程叫做装箱。反之将Integer对象转换为int类型值,这个过程叫做拆箱。Integer i = 10; //装箱int n = i; //拆箱箱和拆箱是如何实现的装箱的时候自动调用的是Integer的valueOf(int)方法。拆箱的...转载 2020-03-11 22:50:02 · 214 阅读 · 0 评论 -
Java 面对对象三大特性、五大基本原则
三大特性:封装隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。java里的class 把属性和方法都封装起来,用访问修饰符来控制访问级别。继承在一个现有类的基础上,增加新的方法或重写已有的方法,从而产生一个信新类。带来的好处实现对原有类的一个复用。多态同一个行为具有不同表现形式编译时多态:重载运行时多态:通过动态绑定技术来实现,只有程序运行起...原创 2020-03-11 22:13:43 · 80 阅读 · 0 评论 -
Exception和Error
Error类和Exception类的父类都是throwable类,他们的区别是:ErrorError类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢出等。对于这类错误导致的应用程序中断,仅靠程序本身无法恢复和预防,遇见这样的错误,将以让程序终止。StackOverFlowError 栈溢出错误OutOfMemoryError 堆溢出错误Excep...原创 2020-03-11 22:11:11 · 170 阅读 · 0 评论 -
hashcode、equals、==的区别
equals() 的作用equals() 的作用是 用来判断两个对象是否相等类是否覆盖equals()方法没有覆盖equals()方法p1.equals(p2) 来“比较p1和p2是否相等时”,实际上,调用的Object.java的equals()方法,即调用的 (p1==p2) 。它是比较“p1和p2是否是同一个对象”。覆盖equals()方法equals与hashcode的区别...原创 2020-03-11 22:01:45 · 78 阅读 · 0 评论 -
类加载与类实例化
类加载中的初始化阶段可以理解为执行类加载器()方法的过程。在准备阶段,变量已经赋过一次系统要求的初始值,而在初始化阶段程序员通过程序定制的主观计划去初始化类变量和其他资源。()方法是由编译器自动收集类中的所有类变量的赋值动作和静态语句块(static{}块) 中的语句合并产生的,编译器收集的顺序是由语句在源文件中出现的顺序所决定的。静态语句块中只能访问到定义在静态语句块之前的变量。()方...原创 2019-07-17 14:37:15 · 159 阅读 · 0 评论 -
java创建对象的四种方法
public class ObjectCreate implements Cloneable, Serializable { static String fileName = ObjectCreate.class.getResource("").getPath() + "/obj1.txt"; static File file = new File(fileName); ...原创 2019-07-31 15:40:48 · 129 阅读 · 0 评论 -
String
String str2 = "abc";Systom.out.println(str1 == "abc");1,栈中开辟一块内存存放引用str1;2,String池(运行池常量、方法区中)中开辟一块空间,存放String常量"abc"3,引用str1指向池中String常量”abc"4,str所指代的地址即常量“abc”所在地址,输出trueStrin...原创 2019-03-11 19:57:20 · 93 阅读 · 0 评论 -
排序算法的时间复杂度
原创 2019-02-21 09:36:46 · 134 阅读 · 0 评论 -
Java注解基础概念
原文:https://blog.csdn.net/github_35180164/article/details/52107204注解的概念注解(Annotation),也叫元数据(Metadata),是Java5的新特性,JDK5引入了Metadata很容易的就能够调用Annotations。注解与类、接口、枚举在同一个层次,并可以应用于包、类型、构造方法、方法、成员变量、参数、本地变量的声...转载 2019-06-25 23:04:22 · 104 阅读 · 0 评论 -
BigDecimal
public static void main(String[] args) { System.out.println(0.2 + 0.1); System.out.println(0.3 - 0.1); System.out.println(0.2 * 0.1); System.out.println(0.3 / 0.1...原创 2019-04-26 09:51:36 · 108 阅读 · 0 评论 -
java中 “字面值”
创建一个Hero对象会用到new关键字,但是给一个基本类型变量赋值却不是用new. 因为基本类型是java语音里的一种内置的特殊数据类型,并不是某个类的对象。 给基本类型的变量赋值的方式叫做 字面值 ,如下例:float hp = 313f;int armor = 24; ...原创 2018-04-08 11:19:53 · 454 阅读 · 0 评论 -
Java基本数据类型占用空间
Object reference : 8 bytes.Array : 24 bytes + memory for each array entry.Object : 16bytes + memory for each instance variable + 8 if inner class (for pointer to enclosing class).Padding : rou...原创 2018-04-20 14:22:13 · 368 阅读 · 0 评论 -
String、StringBuffer、StringBuilder
String是不可变的对象,每一次对String类型进行改变时其实都等同于生成一个新的String对象,然后将指针指向新的String对象。因此如果经常改变字符串内容,最好不要用String。每次生成对象都会对系统性能产生影响,而且当内存中无引用的对象多了以后,JVM的垃圾收集器就会开始工作,程序运行速度就会变慢。StringBuffer类型,每次对字符串内容进行操作都会对StringBu...原创 2019-02-18 21:13:30 · 112 阅读 · 0 评论 -
Java核心技术 随笔
Java基本数据类型整型(4种): int 占4个字节、short 占2个字节、long占8个字节、byte 占 1个字节浮点类型(2种):float 4字节、 double 8字节char类型(基于Unicode):2字节boolean :1个字节或4个字节 字符串存放在公共的存储池(运行时常量)。一个对象变量并没有实际包含一个对象,而仅仅引用了一个对象。J...原创 2019-02-21 14:34:52 · 78 阅读 · 0 评论 -
重载和重写
方法签名 = 方法名 + 形参列表方法重写必须满足:(继承)重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!子类的方法签名(方法的名称及参数)必须和所覆盖的方法相同。 子类的方法返回类型必须<=所覆盖方法的返回类型 子类的方法权限修饰符必须>=所覆盖的方法方法重载:方法签名必须相同 在方法的参数不同的情况下...原创 2019-02-22 09:40:03 · 86 阅读 · 0 评论 -
JSP与Servlet的区别和联系
1. JSP经编译后就变成Servlet.(JSP的本质就是Servlet,JVM只能识别Java类,不能识别JSP代码,Web容器将JSP的代码编译成能够识别的Java类)2, JSP更擅长于页面显示,Servlet更擅长于逻辑控制。Servlet更多的是类似于一个Controller,用于做控制。3, Servlet中没有内置对象,JSP中的内置对象都是必须通过HttpServletR...原创 2019-02-22 21:42:32 · 510 阅读 · 0 评论 -
静态变量与非静态变量的区别
类的静态变量在内存中只有一个,java虚拟机在类加载的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。 而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆中,其生命周期取决于实例的生命周期。public class Test11 {...转载 2019-03-06 08:52:21 · 1160 阅读 · 0 评论 -
序列化和反序列化
把对象转换为字节(流)序列的过程称为对象的序列化把字节(流)序列恢复为对象的过程称为对象的反序列化对象序列化主要有两种用途:1,把对象的字节序列永久保存到硬盘上,通常存放在一个文件中2,在网络上传送对象的字节序列在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问...原创 2019-03-08 20:10:58 · 94 阅读 · 0 评论 -
bit byte
1B(Byte 字节) = 8bit, 1KB = 1024B, 1MB = 1024KB, 1GB = 1024MB,原创 2019-03-06 15:47:17 · 217 阅读 · 0 评论 -
key.hashCode() & 0x7fffffff
private int hash(K key) { // 为啥要把hash值和0x7FFFFFFF做一次按位与操作呢, // 主要是为了保证得到的index的第一位为0,也就是为了得到一个正数。 // 因为有符号数第一位0代表正数,1代表负数。 return (key.hashCode() & 0x7fffffff) % m; }...原创 2019-03-31 11:03:09 · 4215 阅读 · 3 评论 -
Thread类
yield() 告诉线程调度器自己愿意让出线程的使用(CPU资源),这方法几乎用不到 The sceduler is free to ignore this hintsleep(long mills) 暂时停止执行,但不会释放锁 The Thread does not lose ownership of any monitorst...原创 2019-03-19 19:12:37 · 93 阅读 · 0 评论 -
Arrays.copyOf 与 System.arraycopy的区别
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);src - 源数组。srcPos - 源数组中的起始位置。dest - 目标数组。destPos - 目标数据中的起始位置。length - 要复制的数组元素的数量。System.a...原创 2019-03-21 17:10:34 · 145 阅读 · 0 评论 -
Java 面对对象
三大特性:封装隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。java里的class 把属性和方法都封装起来,用访问修饰符来控制访问级别。 继承在一个人现有类的基础上,增加新的方法或重写已有的方法,从而产生一个信新类。带来的好处实现对原有类的一个复用。多态同一个行为具有不同表现形式编译时多态:重载运行时多态:通过动态绑定技术来实...原创 2019-03-16 14:38:52 · 257 阅读 · 0 评论 -
final、finally、finalize
final是一个可以修饰变量、方法和类的修饰符。如果用来修饰变量则表示该变量的值在初始化后不能被改变。final类不能被继承,类成员方法默认都是final的,final方法子类不能覆盖该方法。finally是try和catch一起用于异常处理的关键字。finally块一定会被执行finalize()是Object的方法,这个方法在gc启动,该对象被回收的时候被调用...原创 2019-03-07 19:49:07 · 114 阅读 · 0 评论 -
forward和redirect区别
转发是服务器行为,重定向是客户端行为原创 2019-03-11 08:31:58 · 101 阅读 · 0 评论 -
抽象类和接口的区别
可以继承一个类(单继承),可以实现多个接口抽象类可以有构造器,接口不能有构造器。抽象类可以有默认的方法实现(这样避免子类中重复书写),接口不存在方法的实现。抽象类中的方法可以被static修饰,接口中的方法不可以被static修饰抽象方法可以用public、protected、default这些修饰符,接口方法默认是public,只能用public.抽象类中可以有main方法,...原创 2019-03-07 14:06:41 · 104 阅读 · 0 评论