java基础知识

这部分只有最基础部分,Java常用集合下篇文章写。

1 什么是面向过程与面向对象?你对面向对象的理解
1 面向过程侧重于做事情的步骤,面向对象侧重事情的参与者与动作

以洗衣机洗衣服为例:

面向过程描述:打开洗衣机 -放入衣服-放入洗衣粉-启动洗衣机

面向过程描述:

参与事情的对象:人:打开洗衣机 放衣服 放洗衣粉

​ 洗衣机:洗衣 烘干

总结:面向过程更加高效,而面向对象更加易复用、扩展和维护。

2 面向对象的三大特性

封装:封装的意义在于明确标识出允许外部使用的所有成员函数和可修改的属性。对象向外暴露相应的修改属性或调用方法的接口,外部调用无需修改或关心内部如何实现。

体现:比如orm框架,操作数据库,我们不需要关心如何与数据库建立连接,SQL如何执行,只需要引入Mybatis框架,使用时只需调用相应方法。

继承:继承基类的方法和属性,并做出自己的扩展和改变,或者重写父类方法

注意:子类拥有父类对象的所有属性和方法包括私有属性和方法,但只是拥有,子类也无法访问父类的私有属性和方法。

多态:基于对象所属类不同,外部对于同一个方法的调用,执行的逻辑不同。

举个简单的例子:英雄联盟里面我们按下 Q 键这个动作:

对于亚索,就是斩钢闪

对于提莫,就是致盲吹箭

对于剑圣,就是阿尔法突袭

分类:编译时多态(静态多态):方法重载

​ 运行时多态(动态多态):动态绑定,通常说的多态

父类类型 变量名 = new 子类对象;
变量名.方法名();
!!!!无法通过多态调用子类特有方法
多态需要满足的条件:继承、重写和向上转型,只有满足这三点才可以同一逻辑执行不同行为。

2 说说C++和Java的异同
相同点:都是面向对象语言,都使用了面向对象思想,二者都具有很好的可重用性

不同点:(太多了,这里只是一部分)

Java为解释型语言,源文件-JVM编译器编译成-字节码-JVM解释执行

C++为编译型语言,源码经过编译和链接后生成可执行的二进制代码

所以Java执行效率一般情况下低于C++,当由于JVM的存在,Java程序可以跨平台执行

Java为纯面向对象语言,所有代码(包括函数,变量)必须在类中实现,除了基本数据类型外,所有类型都是类,所有类的祖类为Object。C++由于兼容C,可以定义全局变量和全局函数。

C++支持多继承,Java不支持多继承但Java引入了接口,可以同时实现多个接口。

C++需要开发人员手动管理内存,Java提供垃圾回收器和回收算法管理内存。

3 访问修饰符访问范围


4 JDK、JVM与JRE的关系


JVM时程序运行的核心,只有JVM什么也赶不了,它需要字节码文件。 有了字节码文件也无法完成编译,他需要一个基本的类库:比如怎么操作文件、怎么连接网络等。而JER就是这些基础操作类库,JVM标准加上基础类库构成了Java的运行时环境,也就是我们常说的JRE(Java Runtime Environment)

JDK主要包含三部分

第一部分就是Java运行时环境,JVM。

第二部分就是Java的基础类库,这个类库的数量还是非常可观的。(jdk目录下的rt.jar,里面有String等)

第三部分就是Java的开发工具,如javac、java、jar 。

5 基础考察-类型转换问题
// 代码块1
short s1 = 1; s1 = s1 + 1;
// 代码块2
short s1 = 1; s1 += 1;
其实,s1 += 1 相当于 s1 = (short)(s1 + 1)
代码块1编译报错,错误原因是:不兼容的类型: 从int转换到short可能会有损失。

代码块2正常编译和执行

6 基础考察-包装类
public static void main(String[] args) {
    Integer a = 128, b = 128, c = 127, d = 127;
    System.out.println(a == b);//flase
    System.out.println(c == d);//true
}
答案是:false,true。

执行 Integer a = 128,相当于执行:Integer a = Integer.valueOf(128),基本类型自动转换为包装类的过程称为自动装箱(autoboxing)。

Integer源码

public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}
在 Integer 中引入了 IntegerCache 来缓存一定范围的值,IntegerCache 默认情况下范围为:-128~127。

本题中的 127 命中了 IntegerCache,所以 c 和 d 是相同对象,而 128 则没有命中,所以 a 和 b 是不同对象。

但是这个缓存范围时可以修改的,可能有些人不知道。可以通过JVM启动参数:-XX:AutoBoxCacheMax=<size> 来修改上限值


————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/wkc_ii/article/details/125877743

标题“三电平SVPWM.rar”指向了一个与三电平空间矢量脉宽调制(SVPWM)相关的程序文件,这是在电机控制及功率电子领域中广泛使用的一种技术,用于生成平滑的三相输出波形,以控制三电平变频器。SVPWM是一种有效的PWM策略,它提高了直流电源到交流电机的转换效率,并降低了电磁干扰。描述中提到该程序是基于DSP28335处理器设计的。DSP28335是德州仪器(Texas Instruments,简称TI)生产的一款高性能数字信号处理器,主要用于电机控制、工业自动化、可再生能源等领域。它拥有出色的计算能力,适合运行复杂的控制算法,比如SVPWM。该程序能够在CCS6(Code Composer Studio 6)及以上版本中导入并直接运行,说明其兼容性良好,并为开发者提供了便利的环境以测试和部署算法。从标签“dsp28335”可以知道,这个程序是专为TI的DSP28335处理器设计的。DSP28335作为一款32位定点数字信号处理器,拥有诸多特性,包括:1. 高速处理能力,核心工作频率高达150MHz;2. 内置浮点单元,支持浮点运算,简化了算法实现;3. 丰富的外设接口,支持UART、SPI、CAN等通信协议;4. 多个PWM通道,适合复杂控制算法在多相电机控制中的应用;5. 具备ADC模块,方便进行模拟信号的采集;6. 强大的中断系统和定时器功能,适合实时控制应用。压缩包文件名“3L_SVPWM_PT714”暗示了程序与三电平SVPWM技术的紧密联系。这里的“3L”可能指的是三电平(Three-Level),而“PT714”可能是某个特定的项目名称或者是程序代码中的特定标识。综合来看,这个程序包可能包含了用于DSP28335的SVPWM控制算法的实现代码、相关配置文件和一些示例程序或测试用例。开发者可以利用这些代码来实现电机控制中的SVPWM算法,进而控制三相电机,使其在不同负载和速度下运行平稳。在实际开发中,运用SVPWM技术控制电机,可以带来以下优点:1. 提高效率:通过精确控制开关器件的开关时机,减少电机中的谐波损耗和开关损耗,提高整体工作效率。2. 降低发热:减少损耗意味着电机和控制电路的发热将显著降低,延长设备的使用寿命。3. 改善输出:平滑的电压波形意味着电机运行更加稳定,减少了电机噪音,改善了输出特性。4. 提升动态性能:SVPWM算法能够迅速响应负载变化,为电机提供更好的动态性能,适应各种复杂的工作条件。针对这样的程序包,开发者需要熟悉电机控制理论、DSP28335的硬件特性和编程环境(如CCS),以及SVPWM算法的实现细节。在开发过程中,应重点关注如何将算法与DSP28335的硬件特性相结合,以达到最优的控制效果。此外,还需进行充分的测试,确保在各种运行条件下的可靠性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值