![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础详解
文章平均质量分 62
CodingALife
这个作者很懒,什么都没留下…
展开
-
Java中函数对象
初次听说java中的函数对象可能,比较的陌生。可以类比着来理解一下,人们常说java中没有了指针,殊不知,java中的对象引用就是指针,有时候我们说一个对象往往指的就是这个对象的引用,也就是说基本上把对象的引用很对象等同了。比如Integer a = new Integeer(3);我们说定义了一个整形对象a其实这个说法是错误的,a只是争相对象new Integer(3)的一个引用而已(相当于是一...原创 2021-10-07 17:41:55 · 627 阅读 · 0 评论 -
Java基础(九):范型的自限定类型
1、范型自限定类型class SelfBounded<T extends SelfBounded<T>>作者说道:这就像两面镜子彼此照向对方所引起的目眩效果一样,是一种无限反射。SelfBounded类接受泛型参数T,而T由一个边界限定,这个边界就是拥有T作为其参数的SelfBounded理解:2、...转载 2021-09-24 13:55:15 · 296 阅读 · 0 评论 -
Java基础(八): Comparable和Comparator接口梳理
目录1、Comparable1.1、源码1.2、用法1.3、原理:2、Comparator2.1、源码2.2、用法12.3、用法22.4、Comparator接口其他默认方法的用法3、总结1、Comparable1.1、源码Comparable接口在JDK8中的源码:public interface Comparable<T> { public int compareTo(T o);}1.2、用法@Data@AllA..原创 2021-09-23 15:49:29 · 373 阅读 · 0 评论 -
Java基础(七): instanceof用法详解
参考:Java instanceof用法详解_测试极客-CSDN博客_instanceof用法转载 2021-09-22 11:19:44 · 92794 阅读 · 3 评论 -
Java基础(五):重写toString()方法
目录1、Object()类的 toString()2、重写toString()方法意义3、总结1、Object()类的 toString()Java默认的toString方法来自Object类在Java中每个类都直接或者间接继承Object类,toString()方法同样是来自于Object类在没有重写toString的前提下,每次执行System.out.println(对象引用),这个方法就会默认调用一个继承来自Object类型对象的toString方法。publ.原创 2021-09-20 12:06:09 · 23415 阅读 · 0 评论 -
Java基础(五):Java数组声明与初始化
1、初始化 Java语言中数组必须先初始化,然后才可以使用。 初始化就是为数组的数组元素分配内存空间,并为每个数组元素附初始值。注意:数组完成初始化后,内存空间中针对该数组的各个元素就有个一个默认值: 基本数据类型的整数类型(byte、short、int、long)默认值是0; 基本数据类型的浮点类型(float、double)默认值是0.0; 基本数据类型的字符类型(char)默认值是'\u0000';...原创 2021-01-04 11:31:27 · 20203 阅读 · 0 评论 -
Java基础(四):数组/集合为null 和长度为0
目录1、数组为空和长度为0的区别1.1、对于方法返回数组或集合的判断1.2、对于空数组和null1.3、返回值到底应该是用null还是空集合?1、牛客网上2、《阿里巴巴JAVA开发手册》书中表示3、《Effective Java (Third Edition)》书中表示总结:1、数组为空和长度为0的区别1.1、对于方法返回数组或集合的判断可以直接判断 数组为空 || size> 0。需要先判断是否为空,否则可能会出现空指针异常。例如:if(a..原创 2021-09-20 00:33:29 · 2477 阅读 · 0 评论 -
Java基础(零):Java基础知识总结(2021版)
Java基础知识总结(2021版)_GooReey的博客-CSDN博客_java知识体系原创 2021-09-19 21:55:05 · 191 阅读 · 0 评论 -
Java基础(二):System.arraycopy()和Arrays.copyof()
目录1、Array.copyOf() 和 System.arrayCopy()1.1、Array.copyOf()1.2、System.arrayCopy()1、Array.copyOf() 和 System.arrayCopy()1.1、Array.copyOf()用于复制指定的数组内容以达到扩容的目的,该方法对不同的基本数据类型都有对应的重载方法,详见 java api: public static <T> T[] copyOf(T[] or...原创 2021-09-19 20:48:30 · 1471 阅读 · 1 评论 -
Java基础(一):流Stream
写在前面从Java 1.0开始,引入java.io包;到Java 1.4再扩展了java.nio包;再到java 1.7又添加了新的流类,使得Java的流机制变得十分强大。一、"流"概念James Gosling所著《Java程序设计》中描述Java I/O流模式图如下。Program是中间环节,用于对Source进行处理,然后输出到Dest处。Java中的"流"就是指把数据从一个对象移动到另一个对象的流动模式的抽象。其实Java的流...原创 2021-09-13 10:53:39 · 1031 阅读 · 4 评论 -
Java 泛型方法/接口、泛型限定
一、为什么要定义泛型方法1、从泛型类到泛型方法的演变过程我们先来看个例子//定义一个泛型类,并定义如下两个方法class Test<T>{ public void show(T t){ System.out.println(t); } public void print(T t){ System.out.println(t); } /* 以前是这样定义,现在一个方法搞定 public vo...转载 2021-08-08 12:21:02 · 1641 阅读 · 0 评论 -
java序列化/反序列化详解
1、序列化理解主要用于存储对象状态为另一种通用格式,比如存储为二进制、xml、json等等,把对象转换成这种格式就叫序列化,而反序列化通常是从这种格式转换回来。使用序列化主要是因为跨平台和对象存储的需求,因为网络上只允许字符串或者二进制格式,而文件需要使用二进制流格式,如果想把一个内存中的对象存储下来就必须使用序列化转换为xml(字符串)、json(字符串)或二进制(流)2、什么是Java序列化J...原创 2018-07-10 21:42:23 · 914 阅读 · 0 评论 -
Java中,&&与&,||与|的区别
&若第一个条件不满足,后面条件就不再判断。原创 2021-08-02 11:43:32 · 24031 阅读 · 3 评论 -
String类和常量池
1、String 类和常量池String 对象的两种创建方式:String str1 = "abcd";//先检查字符串常量池中有没有"abcd",如果字符串常量池中没有,则创建一个,然后 str1 指向字符串常量池中的对象,如果有,则直接将 str1 指向"abcd"";String str2 = new String("abcd");//堆中创建一个新的对象String str3 = new String("abcd");//堆中创建一个新的对象System.out.println(st原创 2021-07-18 21:49:49 · 505 阅读 · 0 评论 -
Java基础(三):null 和 ““
两者的区别与 “数字0和没有不是同一种概念”是一个道理。null是空对象,""是空字符串null可以赋值给任何对象,而""就不行了,只能赋值给字符串对象如:String s=null;//定义了一个对象实例s,但未将该实例指向任何内存空间String s="";//定义了一个对象实例s,指向了一个空串/*...原创 2021-06-27 14:37:09 · 454 阅读 · 0 评论 -
Java基础(六):this关键字
1、为什么要引入this关键字?2、3、参考:https://zhuanlan.zhihu.com/p/70414228转载 2021-06-14 13:29:39 · 225 阅读 · 0 评论 -
UnsupportedOperationException2021-06-10
1、c String configValue = "EventCacheSavePreProcessor"; List<String> preProList = SPLITTER.splitToList(configValue); preProList.remove("EventCacheSavePreProcessor"); System.out.println(preProList);原创 2021-06-10 23:14:28 · 198 阅读 · 0 评论 -
&&和||优先级
&&高于||。即a || b && c等价于a || (b && c)原创 2021-06-05 18:18:47 · 443 阅读 · 0 评论 -
如何比较布尔?
日常开发使用if(Boolean.TRUE.equals(yourValue)){...}原创 2021-05-27 13:22:37 · 942 阅读 · 0 评论 -
URL和URI详解
URL 与 URIURL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符)。URI:(Uniform Resource Identifier 的缩写,统一资源标识符)。二者的区别在于,URI 表示请求服务器的路径,定义这么一个资源。而 URL 同时说明要如何访问这个资源(http://)。端口与 URL标准格式何为端口?端口(Port),相当于一种数据的传输通道。用于接受某些数据,然后传输给相应的服务,而电脑将这些数据处理后,再将相...原创 2021-04-29 14:39:49 · 3268 阅读 · 0 评论 -
Http请求参数详解
http请求参数之Query String Parameters、Form Data、Request PayloadHTTP请求中不同的请求方式和设置不同的Content-Type时,参数传递的方式会不一样,一起了解这三种形式:Query String Parameters、Form Data、Request Payload;GET请求Query String ParametersGET请求时,参数会以url string 的形式进行传递,即?后的字符串则为其请求参数,并以&...转载 2021-04-29 11:38:11 · 10411 阅读 · 0 评论 -
Java子类继承父类一切,不能直接访问私有内容
1、继承首先我们明确一下“继承”一词的概念,在 Java 中,继承一词的意义是有限制的。一个子类只能继承其父类的可访问的成员,并且该子类没有覆盖或者说隐藏父类中的那些可访问成员。所以,一个类的成员就是指在这个类中所声明的属性和方法,再加上从其父类继承而来的属性和方法。也就是说,*子类是不能继承父类的私有成员的。虽然子类不继承父类中的私有成员,但是在父类中声明的这些私有成员仍然是子类类型对象的一部分。因为在实例化对象的时候,只初始化在当前类中所声明的属性明显是不足够的,还需要初始化其父类...转载 2021-03-29 22:55:33 · 2535 阅读 · 0 评论 -
map的put和putIfAbsent区别
目录1、putIfAbsent源码2、putIfAbsent和put的区别3、案例1、putIfAbsent源码default V putIfAbsent(K key, V value) { V v = get(key); if (v == null) { v = put(key, value); } return v; }意思就是:putIfAbsent如果传入key对应的v...原创 2021-03-25 10:40:15 · 5217 阅读 · 0 评论 -
Java基础——成员变量、局部变量和静态变量的区别
成员变量 我们来研究一个事物: 属性:外在特征;例如人的身高,体重 行为:能够做什么;例如人有说话,打球等行为。 而在Java语言中,最基本的单位是类,类就是用来体现事物的。 用类class来描述事物也是如此: 属性:对应类中的成员变量 行为:对应类中的成员函数 定义类其实就是在定义类中的成员(成员变量和成员函数)...转载 2021-02-25 01:33:28 · 149 阅读 · 0 评论 -
static/final/abstract/private等
1、static 修饰符可以修饰属性和方法的(全局变量和方法)静态的方法当中,只能直接调用静态的属性和方法,不能调用非静态的属性和方法:因为类的加载优先于对象的加载,而静态属性属于类,非静态属性属于对象。方法区:一个地方存模板,一个地方存静态域静态的属性和方法: 可以使用类名.属性 类名.方法,也可以使用对象名.属性 对象名.方法,是随着类的加载而加载的,优先于对象的,非静态的属性和方法,是随着对象的加载而加载的本类的静态属性和方法,可以直接调用,不需要写类名;非本类的静态的属性和方法,需要写类名.原创 2021-02-25 01:27:13 · 205 阅读 · 0 评论 -
JSON转换
1、JSON是一种取代XML的数据结构和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度2、那么,JSON到底是什么?JSON就是一串字符串 只不过元素会使用特定的符号标注。{} 大括号表示对象[] 中括号表示数组"" 双引号内是属性或值: 冒号表示后者是前者的值(这个值可以是字符串、数字也可以是另一个数组或对象)所以 {"name": "Michael"} 可以理解为是一个包含name为Michael的对象而 [{"name"原创 2021-02-25 01:00:51 · 758 阅读 · 0 评论 -
Java创建对象的4种方式
1、使用new关键字通过new关键字直接在堆内存上创建对象,这样很方便的调用对象的有参和无参的构造函数.Student stu1 = new Student("lihua");2、Class反射调用使用Java中反射特性,来进行对象的创建。使用Class类的newInstance方法可以调用无参的构造器来创建对象,如果是有参构造器,则需要使用Class的forName方法和Constructor来进行对象的创建。Class stuClass = Class.forName("Stu转载 2021-02-08 00:30:03 · 320 阅读 · 3 评论 -
Java 中4种访问修饰符
1、含义1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。(2)对于protected修饰符,它主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。(3)对于default来说,有点的时候也成为friendly(友员),它是针对本包访问而设计的,任何处于本包下的类、接口、异常等,都可以相互访问,即使是父类没有用prot原创 2021-02-07 16:01:26 · 5426 阅读 · 1 评论 -
为什么 Java 中全局变量不一定初始化,局部变量必须初始化?
1、成员变量成员变量有默认初始值,而方法内的局部变量却没有初始值。这个问题涉及到JVM类加载和字节码执行两个阶段,这两个阶段是依次执行的。JVM类加载是JVM利用类加载器将class文件加载到JVM的过程,涉及“加载”、“验证”、“”准备“、“”解析“和”初始化“。一、类的成员变量初始化 ---在JVM类加载阶段完成类的成员变量又分为静态成员变量和非静态成员变量。静态成员变量静态成员变量会被初始化两次,第一次在“准备”阶段,先进行一次初始化,系统附上默认值;第二次在“初始化”阶段,.原创 2021-02-07 15:49:31 · 3856 阅读 · 4 评论 -
Java接口中属性、方法、接口修饰符介绍
1、java接口的修饰符abstract(interface本身就是抽象的,加不加abstract都一样)2、接口中字段的修饰符public static final(默认不写)如下解释:public: 使接口的实现类可以使用这个常量static:接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态(static)变量。static修饰就表示它属于类的,随的类的加载而存在的,当JVM把字节码加载进JVM...转载 2021-01-04 12:28:20 · 5594 阅读 · 0 评论 -
Java匿名内部类
1、匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口2、匿名内部类的定义先看匿名内部类的定义的语法格式:new 实现接口(){ //匿名内部类类体部分}new 父类构造器(实参列表){ //匿名内部类类体部分}为什么匿名内部类的定义有这两种方式呢?这是因此这两种方式的定义分别对应两种方式,一种是接口,另一种是类。对于实现接口,由于接.原创 2021-01-03 20:41:21 · 240 阅读 · 0 评论 -
Java内部类
1、内部类就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类而心脏又在人体当中,正如同是内部类在外部内当中实例1:内部类的基本结构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15转载 2021-01-03 20:21:33 · 150 阅读 · 0 评论 -
一个16进制的数占多少字节?(半个字节)
1、1个字节是8位,二进制8位:xxxxxxxx 范围从00000000-11111111,表示0到255。一位16进制数(用二进制表示是xxxx)最多只表示到15(即对应16进制的F),要表示到255,就还需要第二位。所以1个字节=2个16进制字符,一个16进制位=0.5个字节。2、位(bit)就是一个二进制位,即可表示0和1,而字节(Byte)是计算机更通用的计算单位。1字节等于8位,可以代表256个数字(在编程中可以通过这些数字作为判断),int类型一般为4字节,即32位。一个十六原创 2021-01-03 19:20:33 · 35936 阅读 · 2 评论 -
Java实例初始化详解
1、类的主体声明了成员(变量,方法,内部类和接口)、实例初始化、静态初始化和构造器。在对象生命周期之初,Java虚拟机(JVM)在堆上分配足够的存储空间以容纳对象的实例变量。但是当这些存储空间刚被分配的时候,里面包含的数据是无法预测的。如果存储空间就这样被使用,对象的行为也将是不可预测的。为了避免这样的境地,Java保证这块存储空间在被任何代码使用之前至少被初始化为可预测的默认值。2、初始化很重要,因为一直以来,没有初始化的数据都是bug的主要来源。例如,由于未初始化的数据导致的错误经常出现在C代码中,转载 2021-01-02 16:53:18 · 1233 阅读 · 0 评论 -
Java中静态初始化块、初始化块和构造方法
在Java中,有两种初始化块:静态初始化块和非静态初始化块。它们都是定义在类中,用大括号{}括起来,静态代码块在大括号外还要加上static关键字。非静态初始化块(构造代码块):作用:给对象进行初始化。对象一建立就运行,且优先于构造函数的运行。与构造函数的区别:非静态初始化块给所有对象进行统一初始化,构造函数只给对应对象初始化。应用:将所有构造函数共性的东西定义在构造代码块中。对于普通的类而言,可以放在初始化块中的初始化工作其实完全可以放到构造函数中进行,只不过有时会带来些许不便,如有多个构造器转载 2021-01-02 16:34:11 · 838 阅读 · 0 评论 -
Java中的class literal【类文字】是什么?
类文字:通过使用类型名称并附加“.class”来形成;例如,String.class。这是指Class代表类型本身的(类型为)对象。public class Training { int num; static int snum; public static void main(String[] args) { } public int methodA() { return 1; } public static void.原创 2020-12-31 13:16:18 · 288 阅读 · 0 评论 -
Java transient关键字使用小记
1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作(主...转载 2020-11-15 12:55:51 · 91 阅读 · 0 评论 -
关于getClass(),Object.class,getClassLoader的理解
1、对Class类的理解:Class类包含了类的信息,如构造方法、方法、属性,可用于反射。以下是所有方法2、获取Class类对象的几种方法:Test test = new Test();(1).test.getClass(); 在运行时确定,所以运行实例才是该类对象。super.getClass()不能获得父类的类对象,仍然是当前类对象。 获得父类类对象:test.getClass().getSuperclass() class Father{ ...转载 2020-10-22 18:51:59 · 165 阅读 · 0 评论 -
java编译
1、编译反编译 将源代码转换成二进制执行代码的过程叫“编译”,那么把二进制执行代码推导出源代码的过程就叫“反编译”(机器码(汇编语言)→ 高级编程语言)。像Java、.net这样基于虚拟机技术的语言反编译很容易,但是把C编译生成的exe文件反编译成C代码非常困难。反编译得到的代码非常接近于源代码,但是多少与源码有差异。举个最简单的例子,比如int i = 1+1 反编译的时候会将代码优化为int i = 2....原创 2020-08-24 16:09:39 · 176 阅读 · 0 评论 -
Java基础之—反射
反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.转载 2020-08-19 21:17:42 · 186 阅读 · 0 评论