2023/7/14 java基础复习(java初步了解)

java开发工具包简介

(1)jdk是java开发工具包,包括了运行工具包(jre)和相关工具(编译工具、打包工具等)。
(2)编译工具将*.java代码文件编译成*.class文件(字节码文件)。
(3)jre是java运行工具包,包括java类库和java虚拟机(JVM)。
(4)JVM是java虚拟机,负责将字节码文件(*.class)翻译为机器指令。

java跨平台实现的原理

具有对应不同环境版本的java虚拟机(JVM)。

java和c++的联系和区别

联系

java和c++都是面向对象语言,都支持封装、继承和多态。

区别

(1)java没有指针,无法直接访问内存,程序内存更为安全;c++可以定义指针变量。
(2)java的类之间仅支持单继承;c++支持多继承。
(3)java有接口概念,并且一个类可以实现多个接口;c++的接口只能通过抽象类和纯虚函数来实现。
(4)java具备自动内存管理垃圾回收机制(GC),不需要程序员手动释放内存;c++要求手动进行内存管理。
(5)java的字符类型(char)占两个字节,可以实现直接赋值中文汉字到字符变量;c++的字符类型(char)占一个字节,赋值中文变量只能用字符数组。

基本数据类型

(1)byte 字节类型,占8位,默认值0,取值范围-128~127。
(2)short 短整型,占16位,默认值0,取值范围-32768~32767。
(3)int 整形,占32位,默认值0,取值范围-2147483648~2147483647。
(4)long 长整型,占64位,默认值0L,取值范围-9223372036854775808~9223372036854775807。
(5)char 字符类型,占16位,默认值‘u0000’,取值范围0~65535。
(6)float 单精度浮点类型,占32位,默认值0f,取值范围1.4E-45~3.428235E38。在IEEE754标准下的位数划分为:1位数符,8位阶码,23位尾数。
(7)double 双精度浮点类型,占64位,默认值0d,取值范围4.9E-324~1.7976931348623157E308。在IEEE754标准下的位数划分为:1位数符,11位阶码,52位尾数。
(8)boolean 布尔类型,占1位,默认值false,取值范围true或false。

运算符&和&&,|和||的功能区别和联系

联系

&和|放在两个逻辑表达式中间时也可以发挥”与“和”或“的逻辑运算作用,并返回boolean类型变量。

区别

(1)&和|分别发挥位”与“和位”或“的作用。
(2)&&和||在发挥逻辑运算作用时具有短路特性,比较高效一点。

面向对象的特征描述

封装

对象高度封装,只使用方法访问属性数据。

抽象

找出事物对于当前问题相关的的相似性和共性之处,整合为一个类。

继承

父子类继承,子类可以复用父类所定义的内容。

多态

概念

接口中抽象方法和实现该接口方法的类之间的一对多关系。方法体完全由对象引用的实现类来决定。

存在的必要条件

(1)继承
(2)重写
(3)父类引用指向子类对象

方法重写

概念

在子类继承父类之后,可能父类的一个方法不满足子类的具体特征,此时需要在子类中重新定义该方法,并重写方法体。

方法重写的规则

(1)两同:方法名和形参列表一致。
(2)两小:重写方法的返回值(引用类型)和抛出异常,要和被重写方法的返回值(引用类型)和抛出异常相同或者是其子类。
(3)一大:重写方法的访问修饰符大于等于被重写方法的访问修饰符。

重写和重载的区别

重写发生在子父继承类中,重载发生在同一个类中。

String、StringBuilder和StringBuffer

简述

(1)final
String是内容不可变的字符串,底层使用final进行修饰。每次修改变量值都是在堆中生成一个新的对象,然后修改引用内容。
StringBuilder和StringBuffer都是内容可变的字符串,底层没有用final修饰。
(2)StringBuilder线程不安全,效率较高;StringBuffer线程比较安全,效率较低。
(3)字符串拼接
字符串拼接时String对象不适合拼接变量字符串,会产生无用对象占用内存,但可以拼接常量字符串。变量字符串可以用StringBuilder和StringBuffer的append行为方法进行拼接。

String不能被继承的原因

(1)效率性:
String类作为最常用的类之一,禁止被继承和重写,可以提高效率。
(2)安全性
String类有很多调用底层的本地方法,调用了操作系统的APT,如果方法被重写,可能植入恶意代码,破坏程序。

三者使用总结

(1)操作少量数据:适用String
(2)单线程操作字符串缓冲区下操作大量数据:适用StringBuilder
(3)多线程操作字符串缓冲区下操作大量数据:适用StringBuffer

方法的可变长参数

示例

(1)通用模板
返回值类型 methodName(其他参数列表,可变长参数类型… 形参名字){}
(2)举例
public void m01(int i , String… args){
System.out.println(“m01”);
}

描述

(1)可变长参数部分参数列表内可以接受0个或多个参数。
(2)可变长参数只能做函数定义的最后一个形参,但其前面也可以没有任何参数。
(3)遇到定长参数的重载方法时,函数调用优先调用定长参数的方法。因为定长参数的方法匹配度更高。

基本类型和包装类型

区别

(1)基本类型具备有效初始值;包装类型是引述数据类型,默认值位null
(2)包装类型可用于<泛型>,基本类型不能。List b = new ArrayList();
(3)==比较基本类型的值,比较包装类型的引用(堆地址)。实现类重写的equals()方法可以用于泛型的数值比较。

装箱与拆箱

概念

(1)把基本类型转换为包装类型叫做装箱,把包装类型转换为基本类型叫做拆箱。
(2)每一个基本数据类型都有其对应的包装类型。

实现

(1)自动装箱:Integer i = 1;
(2)手动装箱:Integer i = Integer.valueOf(1);
(3)自动拆箱:int j = i;//自动调用intValue。
(4)手动拆箱:int j = i.intValue();

包装类型缓存机制

(1)Byte、Short、Integer、Long、Character都具有能够节省内存和提高性能的缓存机制。具体表现为在内部同静态块使用相同的对象引用实现缓存和重用。
(2)Byte、Short、Integer、Long的缓存范围为-128~127,Character的缓存范围为0到127。
(3)只有Integer可以痛过jvm参数修改缓存边界,其他包装类型在数据超过一字节时统一改用普通属性的存储方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flww*星火燎原

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值