2026/2/5 10:44:54
网站建设
项目流程
微信做公司网站怎么做,主播网站怎么建立,wordpress文章相关插件,广州番禺区是富人区吗提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录
前言一、java的八大基本数据类型 整数类型浮点型浮点型布尔类型 二、引用数据类型 String字符串类型 String的特性理解 String 字符不可变性。String实例化的方式 …提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录前言一、java的八大基本数据类型整数类型浮点型浮点型布尔类型二、引用数据类型String字符串类型String的特性理解 String 字符不可变性。String实例化的方式StringBuffer和StringBuilderStringBuilderStringBufferStringBuffer和StringBuilder的扩容问题String、StringBuffer和StringBuilder的异同相同点不同点java的自动拆箱与拆箱的实现原理对象实体与对象引用有何不同java中常用的运算符局部变量和成员变量面向对象OOP(Object Oriented Programming)重写 (Overriding)和重载(Overloading)重写Overriding重载 Overloading重写Overriding-重载Overloading的区别接口类跟抽象类a.抽象接口c.抽象类和接口的区别java中的 static关键字final finally和finalize的区别final:finallyfinalize前言提示java总结学习之路一、java的八大基本数据类型提示:java要确定诶个基本类型所占用储存空间的大小他们的大小并不像其他语言一样是随着机器的硬件架构而变化java的数据类型长度是不可变的这也是java比其他语言编写的更可移植性的原因整数类型提示整型用于没有小数部分的数字允许是负数int4字节 取值范围在 (-2的31次方到2的31次方-1)long:8 字节 取值范围在 (-2的63次方到2的63次方-1)short2字节 取值范围在 (-2的15次方到2的15次方-1)byte1字节 取值范围在: (-2的7次方到2的7次方-1)浮点型浮点型用于表示有小数点的数值所有的浮点型数值计算都要遵守(IEEE 754) 规范 三个特殊的浮点值正无穷大负无穷大NaN(不是一个数字)float 1bit符号位 8bits指数位 23bits尾数位 精度为7~8位有效数字double1bit符号位 11bits指数位 52bits尾数位 精度为16~17位有效数字浮点型(char类型的字面量值要使用单引号括起来)char:char类型的值可以表示为16进制值他的一个范围是到? char中的取值范围是Unicode编码中进行规定的而Unicode编码中规定的char的取值范围是0~655535布尔类型(boolean类型有两个值分别是 true 和false 用来判断逻辑条件整型和布尔类型之间不能相互转换)truefalse二、引用数据类型String字符串类型String的特性String 是被final修饰过的不能被继承String:生命的变量是不可变的因为String的底层是被char类型实现的并且是使用final进行修饰的所以字符串的值创建之后就不可以被修改具有不可变性String实现了Serializable和Comparable接口表示String支持序列化和可以比较大小理解 String 字符不可变性。当字符串重新复制的时候不会再原先的地址进行复制而是会在开辟一块空间存放值每当字符串进行拼接的时候也不会在原来的内存地址进行修改而是重新分配内存地址进行复制.当调用Strign的replace方法修改指定的字符或者字符串是也不会再原来的地址进行存放而是重新分配内存地址进行赋值String实例化的方式直接字面量化实例化String strhello word;通过创建 构造器的方法进行实例化String str new String(hello word)两种的区别 通过量化为字符串赋值的变量会存放在 字符串的常量池中通过new创建构造器的方法实例字符串时字符串的对象会存储在堆中StringBuffer和StringBuilderStringBuffer和StringBuilder他们两个和String类似底层都是由一个数组来存储字符串的值并且数组的长度默认是16即一个空的StringBuffer对象数组长度为16StringBuilderStringBuilder类表示一个可变的字符序列StringBuilder是非线程安全的容器一般用于单线程操作StringBuilder 被final进行修饰的不可被继承StringBuilder类继承于 AbstractStringBuilder类。 AbstractStringBuilder 类具体实现了可变字符序列的一系列操作append()、insert()、delete()、replace()、charAt() 方法等StringBuilder 实现了两个接口 Serializable 序列化接口 CharSequence 字符序列接口CharSequence接口提供了进行只读访问的方法 如length()、charAt()、subSequence()toStrong()StringBuilder 使用了AbstractStringBuilder 中的 int count和 char[] value两个变量元素StringBufferStringBuffer也是继承于AbstractStringBuilder 使用value和count来表示存储的数据和字符串使用的计数。StringBuffer 属于线程安全 因为它的大部分内容都添加了锁 synchronizedsynchronized 基本上用于多线程的情况下使用在单线程的情况下使用的比较低因为有synchronized锁 的消耗StringBuffer和StringBuilder的扩容问题默认初始容量是16扩容的问题逻辑就是创建一个新的char数组将现有的容量大一倍在2如果还不够大则直接等于后边所需要的容量大小扩容完之后将原数组的内容赋值到新数组最后在将指针指向新的char数组String、StringBuffer和StringBuilder的异同相同点底层都是通过char数组进行实现的不同点String对象一旦创建是不可变的如果要修改会开辟新的空间进行存放修改之后的对象而StringBuffer和StringBuilderd对象的值是可以修改的StringBuffer几乎所有的方法都是实现了同步锁synchronized 线程比较安全在多线程系统中可以保证数据的同步但是效率比较低而StringBuilder没有实现同步线程属于不安全在多线程系统中不建议使用StringBuilder 但是它的效率比较高如果在实际开发过程中需要频繁的对字符串的值进行修改则不建议使用String类型 因为会造成内存空间的浪费如果要保证线程安全的场景下使用StringBuffer但是效率会减少一点因为有锁的消耗如果不需要考虑线程的安全则可以使用StringBuilderjava的自动拆箱与拆箱的实现原理原始类型转换为对象类型就是装箱反之就是拆箱简单点来说就是 装箱就是自动将基本类型转换为包装器类型拆箱就是自动将包装类型转换为基本数据类型例子//自动装箱 Integer i 99; //自动拆箱 int il i;对象实体与对象引用有何不同对象的相等指的是两个对象在内存中存放的内容是否相等对象的相等指的是两个对象在内存中存放的内容是否相等java中常用的运算符赋值运算符 用于变量指定变量值复合赋值运算符、-、*、/、%算数运算符、 -、 *、 /、 %、后缀运算符:、 –关系比较运算符: 、!、、、、。逻辑运算符与、|或、!非、^异或、短路与、||短路或移位运算符、、三元运算符: 语法结构:条件表达式1:表达式2列子int i1; int s2 int mix si ?s:i运算符的优先级后缀运算符 一元运算符 乘法运算符 加法运算符 移位运算符 关系比较运算符 逻辑运算符 三元运算符 赋值运算符局部变量和成员变量局部变量在方法中定义的或者是块作用域中定义的变量作用域仅限它的代码中成员变量类的属性 也就是在类中定义的变量称为成员变量它定义在方法的外部成员变量也可以声明时赋初始值成员变量跟局部变量的区别作用域不同成员的作用域在整个类内部都是可见的所有的成员方法都可以使用它也还可以在类的外部使用成员变量局部变量的作用域仅仅只能在该方法使用在该方法外部无法访问局部变量和成员变量可以同名并且在使用时局部变量有更高的优先级面向对象OOP(Object Oriented Programming)面向对象(OOP)是什么他是一种设计思想世界由万物组成万物由每一个对象组成发现类发现类的方法发现类的属性面向对象的三大特性:封装 继承 多态封装封装是实现对象的第一步他就是将数据或者是函数集合在一个类中被封装的通常称为抽象数据类型具有隐藏的能力能够有效的把类的内部数据隐藏起来使外部只能通过公用的函数进行访问类的内部数据并且控制它的访问级别封装使当前类称为一个功能醒的独立软件继承继承主要是可以实现代码的服用可以节约开发时间继承就是在父类的基础上创建子类。子类继承父类一个父类可以多次被继承一个子类 也可以被继承通俗来讲就是子类继承父类的特征和行为是子对象具有父类的实例域和方法或者是子类继承父类的方法使子类具有父类相同的行为如果在父类中设置private私有的 则子类是不能被继承的多态多态是什么:指不同对象接受到同一个消息会产生不同的行为(一个接口,多种方法)使用同名的函数实现不同的功能多态的特点:实现低耦合消除类型之间的耦合关系灵活性:多态在程序中体现了灵活多样的操作,使用了 重写函数,重载函数 提高了使用的效率可扩展性多态对代码具有可扩展性新生的子类不会影响已存在类的各种性质可替代性多态对于已经存在的代码具有可替代性实现多态的方式接口多态性继承多态性通过抽象类实现多态性重写 (Overriding)和重载(Overloading)重写Overriding子类对于父类的允许访问的方法的实现过程进行重写编写返回值形参不可改变内部逻辑可以实现改变它的好处就是可以根据新的需求重新定义这个方法的行为面向对象的原则里边重写意味着可以重写任何的现有方法重载 Overloading重载在一个类中 名字可以相同 其返回类型/参数 不相同每个重载的方法都有一个独一无二的参数类型列表最多的就构造方法的重载重写Overriding-重载Overloading的区别重载:名称相同 参数 返回值不相同重写:子类重写父类的方法 名称相同 参数返回值相同方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现接口类跟抽象类a.抽象抽象的概括:一个没有方法体的方法是抽象方法如果 类中有抽象方法那么这个类肯定是抽象类抽象方法的特点:抽象类跟抽象方法必须是 abstract 修饰的抽象类的成员特点 成员变量 构造方法 成员方法接口接口的概括:接口是一种公共的规范标准 更多体现的是行为的抽象接口的特点:接口是由关键字 interface修饰的接口的子类要么重写接口中所有的抽象方法要么子类也是抽象类成员变量只能是常量默认的修饰符public static final接口是没有构造方法的因为接口只要是扩展功能没有具体存在成员方法所以只能是抽象方法c.抽象类和接口的区别成员区别:抽象类:变量常量有构造方法有抽象方法也有非抽象方法接口:常量抽象方法设计理念抽象类:对象抽象包括属性方法行为接口:对行为进行抽象主要的就是行为抽java中的 static关键字static可以用来修饰 方法 代码块 成员变量被static修饰的可以为静态方法 静态代码块 静态变量final finally和finalize的区别final:final: 是一个修饰词 也是一个关键字被final修饰的类属于最终类 是不可被继承的被final修饰的方法无法被重写 但是可以重载对于一个final变量如果是基本数据类型变量则其数值一旦被初始化就不可修改如果是引用类型的变量则初始化之后便不能让其指向另一个对象但是他指向对象里边的内容是可变的finallyfinally:finally是一个关键字finally在处理异常机制的提供的finally方法来执行一切操作不管有没有捕捉到异常或者是抛出异常finally都是会执行的通常用于释放资源关闭资源的操作finally正常下都会执行但是也有两个极端的情况下不会执行如果对应的try方法快没有执行则这个try方法快中的finally不会被执行如果try方法执行中jvm关机列入system.exit(n) finally也不会执行(电源都拔了如何在执行)finally中如果有return关键字则会覆盖try和cath中的return关键字会导致return覆盖无法return 所以不推荐在finally中编写returnfinalizefinalize:是object中的protected方法子类可以覆盖方法 可以实现资源的清理工作GC在回收对象的时候都会调用该方法finalize()方法还是存在许多问题的java语言规范并不保证finalize方法会被及时的执行更不会保证他们一定会执行finalize()方法可能会带来性能问题 因为JVM通常在单独的时候低优先级线程中完成finalize的执行finalize()方法中可将待回收对象复制给GC Roots 可达到对象引用从而达到对象再生的目的finalize 方法 最多由GC执行一次(但是可以手动的调对象的finalize方法)总结finalize:常量用于声明属性 方法和类 分别表示属性不可变 方法不可被覆盖 不可被继承finally:异常处理机构异常处理语句结构的一部分表示总是执行finalize:是Object 类的一个方法供垃圾收集时的其他资源回收等造作