Java
小松学前端
这个作者很懒,什么都没留下…
展开
-
第六章 6.2 StringBuilder
构造方法:默认容量为16;通过StringBuilder的构造方法传给父类的构造方法capacitytruevaluecapacitycoderLATIN1valuecoderUTF16。原创 2024-09-30 13:33:36 · 546 阅读 · 0 评论 -
第五章 5.1 异常
自定义异常灵感来源于源码:NullPointerException继承了RunTimeException,一个无参构造,一个有参构造自定义异常代码/*程序主入口*/System.out.println("欢迎本系统,请注册:");System.out.print("请输入用户名:");System.out.print("请输入年龄:");//注册//这里的代码可能出现异常,register方法throws了,交给了调用者main解决//用户业务类。原创 2024-09-23 15:19:00 · 251 阅读 · 0 评论 -
第四章 4.2 时间复杂度
算法与数据结构相互依存,例如,寻找数组的最大值,数组就是一种数据结构,寻找最大值的算法是依附于数组的。原创 2024-09-20 18:13:55 · 418 阅读 · 0 评论 -
第四章 4.1 二维数组练习题
【代码】第四章 4.1 二维数组练习题。原创 2024-09-19 14:05:13 · 216 阅读 · 0 评论 -
第四章 4.1 数组/main方法(arg参数)/二维数组
总结:以int为例,局部变量表知道0索引得地址,数组存储得数据类型都是同类型的,int每个占四个字节,计算机通过计算能够得到所需要的地址,很方便。时间复杂度为O(1),1代表固定不变,因为数组在寻找的是通过计算得出的位置,可以理解为一个公式计算。原创 2024-09-18 15:44:58 · 337 阅读 · 0 评论 -
第三章 3.15 内部类
敬请期待###原创 2024-09-14 12:29:44 · 97 阅读 · 0 评论 -
第三章 3.14 访问控制权限+Object类
API:application Program interface 应用程序编程接口。原创 2024-09-14 12:21:40 · 326 阅读 · 0 评论 -
第三章 3.13 接口
Computer类中使用了HardDriver类,以及Printer类导致Computer类和HardDrive,Printer合度太高Computer类扩展力太差。假如说电脑要连打印机,在定义一个新的类,这部分符合OCP(可扩展原则),但是Computer电脑类的源码改变,不符合OCP原则。System.out.println("连接设备成功");Computer是调用者,剩下的是实现者,分清调用者和实现者,定义接口,Computer类的扩展力差。这个程序没有使用接口。接口与抽象类如何选择。原创 2024-09-08 13:02:48 · 485 阅读 · 0 评论 -
第三章 3.12 抽象类
private 不能被继承,不能被继承就不能被覆盖,就不能被重写;stastic不能被继承就不能被重写。final最终的不能被重写;原创 2024-09-05 16:36:08 · 232 阅读 · 0 评论 -
第三章 3.11 final关键字
⑥⑦final 修饰的变量不能重新赋值,pro被final修饰,pro存储的是堆中对象new出来的地址值,所以不能在指向其他对象,但是对象内部的数据还是可以更改的。原创 2024-09-05 16:12:29 · 108 阅读 · 0 评论 -
第三章 3.10 super关键字
当父类和子类定义了相同的属性或者方法时不能省略,比如:Person 有name属性;Teacher中也有name属性。③。原创 2024-09-05 12:55:59 · 490 阅读 · 0 评论 -
第三章 3.9 多态及其常见错误
除了基本数据类型之间的类型转换之外,对于引用数据类型来说,也可以进行类型转换。new Cat()只能发生在运行期间开始执行,发生在堆当中开辟空间。因此在编译的时候就会去Animal类中找move()方法。在编译的时候,编译器只知道a2的类型是Animal类型。在运行的时候,堆内存中真实的java对象是Cat类型。找到之后,绑定上去,此时发生静态绑定。因此运行的时候就会调用Cat对象的move()方法。所以move()的行为一定是Cat对象发生的。因为编译阶段是一种形态,运行的时候是另一种形态。原创 2024-09-02 16:15:36 · 460 阅读 · 0 评论 -
第三章 3.8 继承
java语言中,一个类没有显示继承任何类,默认继承Object类。Object式老祖宗,是JDK类库中的根类。@override注解用来标志方法。原创 2024-09-02 10:29:03 · 148 阅读 · 0 评论 -
第二章 小知识点~01.package包机制
原创 2024-09-01 11:28:06 · 73 阅读 · 0 评论 -
第三章 3.7 单例模式
设计模式就是可以重复利用的解决方案。原创 2024-08-30 15:14:12 · 203 阅读 · 0 评论 -
第三章 3.6 JVM体系结构规范
红线为符号引用(本质上是package的绝对路径+名称)在根据符号引用后关联的内存地址寻找和调用方法或属性。启用本地内存的原因:JDK6中永久代中存储的东西太多了,容易产生OOF错误(内存溢出错误)④从规范上来说静态变量存在在方法区,规范只是设定规则,但是静态变量是存在在堆中。⑤字面量:i = 10 10就是字面量;符号引用:类名,属性名,方法名;⑥ Native 方法 是C++写的源码方法;在加载class文件和静态代码块之间干的事情。原创 2024-08-30 10:42:56 · 289 阅读 · 0 评论 -
第三章 3.5 static关键字
100个对象就应该有100个空问)当一个属性是类级别的(所有对象都有这个属性,并且这个属性的值是一样的),建议将其定义为静态变量,在内存空间上只有一份。将new 的对象 zhangsan等都设为null,但是语法zhangsan.name正确,在运行时,由于zhangsan已经设为null,而name是实例变量,需要一个new的实例出来,导致zhangsan.name指向为空,导致空指针异常。4.所有static修饰的,访问的时候,直接采用“类名.”,不需要new对象。2.静态代码块什么时候执行?原创 2024-08-29 11:36:27 · 286 阅读 · 0 评论 -
第三章 3.4 this关键字
代码没得到复用-----------------------解决办法this(实参){只能出现在构造方法第一行,前边不能出现代码,而且只能出现一次}------------------>保证了不会重复堆的创建。static 方法中不能出现this,因为static是静态的,不需要实例化能直接调用,内部语法不存在this,this只针对于实例变量。this存储的是对象的地址。因为this是实例对象才能调用。引用. = this.原创 2024-08-29 10:55:11 · 139 阅读 · 0 评论 -
第三章 3.3 构造方法
new的时候:会直接在堆内存中开辟空间。然后给所有属性赋默认值,完成对象的创建。(这个过程时在构造方法体执行之前就完成了。在构造方法中赋值是对象第一次创建时属性的值,set方法可以在后期的时候调用,来完成属性值的修改。如果所有的构造方法在最开始的时候有相同的一部分代码,不妨将这写到代码块中。构造方法体开始执行,标志着开始进行对象初始化。在一个类当中系统会默认提供一个无参数的构造方法;第二个阶段:对象的初始化;第一个阶段:对象的创建;2.2对象初始化在什么时候完成的?2.1对象在什么时候创建的?原创 2024-08-28 14:47:57 · 97 阅读 · 0 评论 -
第三章 3.2 封装
解决:第一步属性私有化 private,作用:禁止外部程序对该属性进行随意访问。第二步:为了保证外部的程序仍然可以访问age属性,因此要对外提供公开的访问入口。外部随意访问age属性,很不安全。原创 2024-08-28 13:25:15 · 203 阅读 · 0 评论 -
第三章 3.1 面向对象
实例变量属于成员变量,成员变量如果没有手动赋值,系统会赋默认值。原创 2024-07-19 11:17:10 · 235 阅读 · 0 评论 -
方法调用内存调配
代码执行顺序内存解析总结原创 2024-07-18 10:01:35 · 226 阅读 · 0 评论 -
数据类型详解
对于取值范围,要理解什么是原码、反码、补码。计算机底层是通过补码来存储的,一个字节8个二进制位,最高位代表正负,0代表正,1代表负,所以一个字节的最小就为10000000,为-128,最大为01111111,为127,所以一个字节的取值范围为-128~127。2的七次方-1的原理。成员变量如果没有赋值,系统会自动赋值。java中任何一个自变量,都会默认当成int类型来处理。int i = 100;程序从右向左执行,先存储100;不知道多大,先分配4个字节空间,也就是int类型;long 8个字节强转 int原创 2024-07-08 12:15:57 · 202 阅读 · 0 评论 -
原码/反码/补码
128比较特殊,但是也直接套用负数原码规则就行,不用考虑首位位数。计算机底层是用二进制传输数据的,并且计算机底层是用补码来表示的。补码除符号为取反,然后+1(强制类型转化会涉及到精度问题的原理)为:10000000-01111111:即-128-127。:例如127的三种码都是01111111;正数的原码反码补码都是相同的。搞懂三者规则,我们可以推断是。原创 2024-07-06 17:44:45 · 327 阅读 · 0 评论 -
进制相关知识点
数制:又称为计数制,是一种计数的方法,是用一组固定的符号和统一的规则来表示数值的方法。基数是16,有十六种数字符号,除了在十进制中的0至9外,还另外用6个英文字母a-f来表示十进制数的10至15。基数为10,数值部分用0、1、2、3、4、5、6、7、8、9来表示.将下列十六进制数转换为十进制数。例1:将下列二进制数转换为十进制数。例2:将下列八进制数转换为十进制数。例3:将下列十进制数转换为十六进制。例1:将下列十进制数转换为二进制。例2:将下列十进制数转换为八进制。二、八、十六转换为十进制。原创 2024-07-06 15:46:09 · 247 阅读 · 0 评论 -
Java运行程序过程解析/ClassPath指路
本质原因是在JVM运行.class文件时,首先JVM中的类加载器ClassLoader会根据环境变量(ClassPath)中的路径去寻找Demo.class的位置。注意:ClassPath环境变量是java所特有的,而Path变量是Windows系统自有的。注意:在运行java Demo时,当前路径必须切换至class文件所在的位置,也就是class的绝对路径。运行java Demo时,当前路径必须切换至class文件所在的位置,也就是class的绝对路径。第二部为java的运行阶段。原创 2024-06-30 15:22:28 · 159 阅读 · 0 评论 -
JVM/JDK/JRE/源文件解释
【代码】JVM/JDK/JRE/源文件解释。原创 2024-06-30 12:10:43 · 428 阅读 · 0 评论 -
面向对象/static/类与对象的关系/构造器
物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。static:是和类一起加载的 无static关键字是类实例化后才存在的。1. 使用new关键字必须要有构造器,本质是在调用构造器。面向对象适合处理复杂的问题,适合处理需要多人协作的问题!对象 是具体的事物;以类的方式组织代码,以对象的组织(封装)数据。demo04能直接通过类名直接调用。方法名必须和类名相同,没有返回值;2.初始化对象的值;原创 2024-06-28 15:13:12 · 206 阅读 · 0 评论 -
可变参数笔记
本质上可变参数是一个数组:以下为取最大值的例子。原创 2024-06-28 12:40:08 · 151 阅读 · 0 评论 -
Switch/while/do...while/for循环
对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。只要布尔表达式为 true,循环就会一直执行下去。原创 2024-06-24 15:03:03 · 225 阅读 · 0 评论 -
java基础入门(类型转化)
128 :i是int类型,强制类型转换后内存溢出了。由低→高 指的是占的字节大小。原创 2024-06-22 17:53:33 · 124 阅读 · 0 评论 -
JDK JRE JVM 及 Hello world
Kit:工具 virtual:虚拟。原创 2024-06-22 10:14:04 · 191 阅读 · 0 评论