参考链接: java 面对对象概念 什么是面向对象呢?这个问题真的是老生常谈,面试的时候经常问。到底什么是面向对象。。。...,但是可以选择使用哪些方法) 我想大家很多时候都会看到上面的话吧,上面的是我百度过来的,下面要说的才是我说的: 在一开始的时候,我也那样的回答,什么万物皆对象啊,什么都是对象什么的。...即使是不知道对象里面的源码,知道这个方法是做什么的就行。 ...但是声明一点,java的编程,很多人只是知道new出来对象,创造对象,却不知道垃圾回收。...虽然java提供了很好的垃圾回收机制,但是就空间复杂度而言,还是要控制的,知道每个变量什么时候活的状态不能被回收,什么时候死的状态可以被回收,对于每一个开发都很重要,要在程序到达一个阶段,一个结束去思考一下
Person person;这时候没有“=”操作,也就是没有给他赋值,person是空的,即null。...= new Person(),术语就叫实例化,就是person这个对象已经建立了,不为null了。...可以通过instanceof 判断其左边对象是否为右边类的实例 public int compareTo(Object object){ Person person; if(object instanceof...Person){ person = (Person)object;//如果传入参数是Person的实例,则强制转换 }else { return -1; } return 0;
面向过程&面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二步做什么........面对过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。...面向对象适合处理复杂的问题,适合处理需要多人协作的问题! 对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。...什么是面向对象 面向对象编程(Object-Oriented Programming, OOP) 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。...抽象 三大特性: 封装 继承 多态 从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象 从代码运行角度考虑是先有类后有对象。类是对象的模板。
返回值类型:对应的返回值类型,void是指无返回值。 方法名:methodName,满足标识符命名规则(小驼峰)。 ():参数列表,里面为空就是没参数。...上述情况是最简单的方法样式,无参数无返回值 那有参数有返回值是怎样的呢? 例:实现两个整数的求和计算 ?...定义方法的两个明确: 明确返回值类型:既然是两个整数的求和,那返回值一定是整数 明确参数列表:在参数中定义int类型的整数变量,两个变量 注意事项: 方法与方法之间是独立的,不能在方法里面定义一个方法。...,实参是byte,也可以正常运行 不能在return后面写代码,return意味着方法的结束,后面的代码永远不会执行,属于未知代码 ?...所以①②(③或者⑧)④(⑤或者⑥)是重载关系。 总结 ?
面向对象三大特性:封装、继承和多态。 今天学最后一个特性:多态。 什么叫多态呢?按照字面意思理解就是多种形态的意思。 还是举昨天的那个例子: 动物园里动物都得吃食物,兔子吃胡萝卜,猫吃鱼,狗吃肉。...一、多态的格式 1.格式说明:父类引用指向子类对象。 ? 具体什么意思呢? 变量有基本数据类型和引用数据类型。 其中引用数据类型又分为:数组,类和接口。...②运行结果看右边,是Rabbit对象,那么会执行Rabbit中重写的eat()方法,也就是“兔子吃胡萝卜”。 二、多态的好处 既然是面向对象三大特性,那它有啥好处呢?...这就叫代码的可拓展性,以后无论是删减哪种动物,或者是添加哪种动物,这个方法都可以使用,不用改变。 三、多态的弊端 多态这么方便,那它有没有什么弊端呢? 是有的。...为了避免出现类转换异常,Java提供了一个关键字:instanceof,给变量名做类型的校验。 ?
在浏览器环境中,window 对象和 document 对象是 JavaScript 提供的两个核心对象。 window 对象: window 对象表示浏览器窗口或标签页。...它是 JavaScript 中的全局对象,在浏览器环境中始终存在且可直接访问,无需引入额外的代码。 window 对象具有许多属性和方法,用于操作和控制浏览器窗口。...: document 对象代表当前窗口或标签页中加载的 HTML 文档。...它是 window 对象的一个属性,用于访问和操作文档的内容、结构和样式。 document 对象提供了许多方法和属性,用于查询和修改文档中的元素、创建、删除和修改元素、处理事件等。...window 对象和 document 对象只在浏览器环境中存在,并且具体的功能和属性可能因浏览器的不同而略有差异。
①创建一个文件对象 因为是目录的遍历,所以在路径中填写目录的路径。②list方法 list,列表的意思,一个文件夹里面有几个文件夹或者文件,这就是一个获取文件夹里的列表的方法。...什么叫阶乘? 5的阶乘:5!=5×4×3×2×1; 4的阶乘:4!=4×3×2×1。 这就是阶乘。 现有一个需求:求一个数的阶乘?...看到没有,什么叫递归? 递归就是指在方法里面调用自己的方法这种现象。 就像我们在数学中的找规律一样,先把规律找出来,再创建方法。 ④如果是负数,因为负数是没有阶乘的,直接返回-1,或者报错。...因为它在文件操作中会使用到它,并且既然是学习Java,也有必要理解下递归的概念。 三、递归删除多级目录 根据我们昨天学的File类中的方法。...②delete方法中如果file对象是文件 是文件的话,可以使用delete方法直接删除。 ③如果是文件夹,我们需要遍历 将文件夹遍历,使用我们一开始学到的listFiles方法。
都说学计算机,写代码是一件挺枯燥乏味的事情,现在看来也挺有趣的嘛。 今天就让我们走进程序的世界,研究下什么叫接口?...这就叫规则,所以我们常说写接口是在干啥,是在制定规则。 我制定了一个规则,具体啥内容我不写。任何实现类要实现我这个接口,就得写清楚。...什么时候有需求了重写就好,也可以一直不重写方法。 现在有一只兔子,没有名字,那就用接口的默认名(动物),突然有一天想给它取了一个新名字,叫小白,怎么办?...四、抽象类 在接口的抽象方法中,提到了一个概念,叫抽象类。 这个抽象类又是啥呢? 抽象类:有抽象方法的类就叫抽象类。如果一个类包含抽象方法,那么该类必须是抽象类。...相同点; 都不能创建对象,也就是没法实例化,只能通过子类/实现类来创建对象。 子类/实现类必须重写抽象方法。
那为什么会闪退呢? 就是程序它遇到了问题,又没有及时地处理,便只有崩溃了。而这种情况,便是异常。 在Java世界里面,异常指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。...那么出现了异常Java里面是如何处理的? 我们举一个抛绣球的例子来说明下jvm处理异常流程。 好,现在有一个异常,被Java虚拟机知道了。 这个异常就相当于绣球。...在Java世界里面:出现了异常,然后都不处理,一直往前抛,最终抛给了Java虚拟机。 于是Java虚拟机非常地生气,打印错误信息,终止了程序。 程序终止这件事情在开发过程中是能不出现就不要出现的。...因为用户是不确定的,就比如说用户银行卡里只有10块钱,它提现时硬是要输入10000块,这就会出现异常。 如果是Java虚拟机来处理,程序就直接崩溃了呀,这样显然是不行的。...方式一:throw 因为Java里面异常本身就是一个类,所以创建对应的异常对象,再抛出说明。
小结: 当数据确定时,可以使用格式二或者格式三来定义数组,这种方式也叫静态定义。 当数据不确定时,可以使用格式一来定义数组,这种方式也叫动态定义。...3数组的访问: 在定义好数组后,打印它显示出来的是一串字符而不是具体的数组 ? 那这是为什么呢? 打印出来的这串字符其实是数组的一个地址,那如何去访问具体的数值呢?...这就需要借助于索引了,什么是索引? 每个存入数组的数值都会有一个对应的角标,这就是索引,并且索引是从0开始的。 访问具体数值的格式:数组名[索引];获取数值后直接打印就好了。 4数组的长度属性 ?...从中我们可以知道: 整数类型数组默认值是0 小数类型数组默认值是0.0 字符类型数组默认值是空 布尔类型数组默认值是false 引用数据类型数组默认值是null 二、数组原理内存图 1.内存的概念 内存是一个很常见的概念...JVM作为Java虚拟机,它要运行程序,自然要对内存进行划分和管理: 寄存器:给CPU使用 本地方法栈:JVM在使用操作系统功能的时候使用 方法区:存储可以运行的class文件 堆内存:存储对象或者数组
对于我们学Java的来说,自然是与服务端打交道了,其中主要接触的是B/S架构 ? 说完了软件架构,那什么叫网络呢? 网络本质上是指多台计算机之间的数据交换。...其中网络三要素:IP地址、端口和协议 二、网络三要素之协议 什么叫协议? 用一个例子来理解,现在国际上一个日本人和一个德国人语言不通,它们用什么语言交流?用英语。...所以在网络里面,协议是定义的通信规则,没有协议的话就像日本人在说日语,德国人说德语根本就没法交流。 其中应用最广泛的是TCP协议: 1.TCP协议 ①TCP称为传输控制协议。...就比如说视频聊天,我们最在乎的是什么? 是不能卡,不能有延迟,我宁愿丢失几帧的数据(视频数据有稍许丢失对用户影响不大),不卡就行,所以要求就是效率要高。...三、网络三要素之IP 1.定义 IP是英文Internet Protocol的缩写。意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。
什么叫IO流? IO流,就是指读写文件的技术。 1.input I就是指input:输入的意思,这是输入流。 意思是将硬盘里的数据输入到内存里,也就是读取文件。...,其中它有一个子类叫FileOutputStream。...③write(byte[] b, int off, int len) off表示的是偏移量 len表示的是长度 也就是说写入文件的数组,是从b数组中off索引位开始,2个长度。...二、InputStream输入流 它是输入流最上层的父类,是一个抽象类,其中它有一个子类叫FileInputStream。 1.read方法基本用法 ?...所以读到的是abc,长度为3。 ③第二次读数据 读到的是def,长度为3。 buffer中def将abc覆盖掉了,所以打印def。
类和对象 1.1 什么是面向过程?什么又是面向对象?...类是抽象的,不占用内存,而真正根据类实例化出具体的对象,就需要占用内存空间了。 1.3 成员变量和局部变量有什么区别?...1.3.1 为什么局部变量存在于栈中而不是堆中 有一个问题,在我们学习 Java 中内存分配的时候,有这样一句话,“堆内存用来存放 new 创建的对象和数组”。...1.6.1 什么是静态方法 static 修饰的方法一般叫做静态方法,静态方法不依赖于对象访问,因此没有 this 的概念(this 代表所在类的对象引用),正因如此静态方法能够访问的成员变量和成员方法也都必须是静态的...1.6.3 什么是 静态代码块 静态代码块是在类中(方法中不行)使用static关键字和{} 声明的代码块 static { ...
2.多重捕获MultiCatch 马克-to-win:什么叫多重捕获MultiCatch?
参考链接: Java多捕获Multicatch 2.多重捕获MultiCatch 马克-to-win:什么叫多重捕获MultiCatch?
介绍 在Java语言里,当我们需要拷贝一个对象时,有两种类型的拷贝:浅拷贝与深拷贝。 浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化。...接下来我们将详细描述如何深拷贝User对象。 方法一 构造函数 我们可以通过在调用构造函数进行深拷贝,形参如果是基本类型和字符串则直接赋值,如果是对象则重新new一个。...), copyUser.getAddress().getCity()); } 方法三 Apache Commons Lang序列化 Java提供了序列化的能力,我们可以先将源对象进行序列化,再反序列化生成拷贝对象...但是,使用序列化的前提是拷贝的类(包括其成员变量)需要实现Serializable接口。Apache Commons Lang包对Java序列化进行了封装,我们可以直接使用它。...), copyUser.getAddress().getCity()); } 方法五 Jackson序列化 Jackson与Gson相似,可以将对象序列化成JSON,明显不同的地方是拷贝的类(包括其成员变量
键必须是字符串,值可以是任意有效的 JSON 数据类型。...,它的值是字符串 "John";定义了一个名为 "age" 的键,它的值是数值 30;定义了一个名为 "city" 的键,它的值是字符串 "New York"。...= json.dumps(person)Java在 Java 中,可以使用第三方库(如 Jackson、Gson)来处理 JSON 数据。...JSON 对象的访问通过键来访问 JSON 对象的值是一种常见的操作。根据键的类型,可以使用不同的方式来访问 JSON 对象中的值。..."]) # 输出 Johnprint(person.get("age")) # 输出 30Java在 Java 中,可以使用第三方库提供的方法来访问 JSON 对象的值:import com.fasterxml.jackson.databind.JsonNode
面向对象的特征有3个,封装、继承、多态。至于抽象的话,个人认为,应该是前面3大特征中都有抽象的思想,毕竟面向对象本身就是一种抽象。...明白了3大特征,我们就具体来讲解下: l 封装 n 是对象和类的主要概念,把具体的某一个事物抽象成我们代码中的某一个类,并且这个类是有自己内部私有的方法,不让外部随意的访问,当然。...n OOP语言中,一个类可以继承多个父类,在Java中,这样是不可取的。但是在一些情况下我们是需要多重继承的特性的,所以有了折中的方法:接口和内部类,接口在下面讲,我们这里先讲内部类。 ?...,灵活,便于拓展 ---- 五大设计原则:单一功能、开闭原则、里氏替换、接口隔离以及依赖反转 l 单一功能 :认为对象应该仅具有一种单一功能的概念。...之所以这样是因为,如果一个对象具有太多的功能,一旦某个功能需要修改,整个对象都会重新编译,一旦有一些错误的代码修改了其他的功能,那我们的风险就会剧增。 l 开闭原则:针对拓展开放,针对修改关闭。
什么是类?什么又是对象? 类:就是具有相同属性和功能的一类事物 对象:就是类的具体表现形式 具体一些:先解释解释什么是车?...说第二个优点之前,先看看什么是面向对象。 面向对象的程序设计的核心是对象(上帝式思维),要理解对象为何物,必须把自己当成上帝,上帝眼里世间存在的万物皆为对象,不存在的也可以创造出来。 什么是类?...什么又是对象? 类:就是具有相同属性和功能的一类事物 对象:就是类的具体表现形式 具体一些:先解释解释什么是车? 有轱辘, 有方向盘, 有发动机, 会跑的是车. 好. 在解释一个. 什么是人....有名字, 年龄, 爱好, 会唱歌跳舞思考的是人.那么广义上车,人就是类:但是具体的我的车,你这个人这是一个对象。 猫,是一类,你们家养的 大橘。 狗,是一类,隔壁家养的那只二哈就是对象。...面向对象思维, 要自己建立对象. 自己建立场景. 你是就是面向对象世界中的上帝. 你想让车干嘛就干嘛. 你想让人干嘛人就能干嘛。
本文主要来介绍一下Java中的不可变对象,以及Java中String类的不可变性,那么为什么Java的String类是不可变对象?让我们一起来分析一下。...答案一: 最流行的Java面试题之一就是:什么是不可变对象(immutable object),不可变对象有什么好处,在什么情况下应该用,或者更具体一些,Java的String类为什么要设成immutable...不可变对象,顾名思义就是创建后不可以改变的对象,典型的例子就是Java中的String类。...字符串常量池的需要 字符串常量池(String pool, String intern pool, String保留池) 是Java堆内存中一个特殊的存储区域, 当创建一个String对象时,假如此字符串值已经存在于常量池中...事实上,这也是Java面试中的许多 “为什么” 的答案。 答案三:String类不可变性的好处 String是所有语言中最常用的一个类。我们知道在Java中,String是不可变的、final的。
领取专属 10元无门槛券
手把手带您无忧上云