Java面试复习4 Java的数据类型,简单却要注重细节

Java面试复习5 Java的数据类型

声明:本面试复习都基于一本未署名的Java面试宝典所述,根据自己的理解写出了这一专栏的复习博客

  1. Java的基本数据类型都有哪些?各占多少字节?
    很基础的一道题,答案如图:
    在这里插入图片描述
    在这里插入图片描述
    注意:在Boolean这里,有些情况下不是占用1个字节,但是通常情况下是。
    详情可看复习笔记1。有做相关的阐述。

    顺便的,我们可以借助此题完成对数据类型的复习

    除了上述的基本数据类型之外,Java中还有一种引用数据类型,包括:

    数组,接口,类(包括String类型)

  2. String是基本数据类型吗?
    并不是,String属于引用数据类型,底层是通过char数组实现的。

  3. short s1 = 1; s1 = s1 +1;有错吗?short s1 = 1; s1+=1;有错吗?说出原因

    从常理推断来看,这两段代码的输出结果应该是一样的,但是事实是前者不正确,后者是正确的,我们可以从根源上找问题:
    两段代码无论是哪一段,s1都是属于short类型的变量,但是1属于整形,也就是int类型,
    前者进行s1=s1+1的时候,s1+1运算后的结果属于整形,而short类型需要一个short类型的值,这个结果明显不匹配,因此会报错。
    而第二种情况下,s1+=1中,自动对于结果进行了一个隐藏的强制类型转换,相当于s1=(short)(s1+1),故而=两边的类型一致,可以进行赋值操作。
    这里我们也顺带借助此题对类型转换方面进行复习。

    1. 自动类型转换
      容量小的数据在进行运算时将自动转换为高容量的数据类型,比如上面的对s1的运算。其容量大小排序为:
      在这里插入图片描述
      但是,char,byte,short这几个数据之间不能自动转换。
      在多种类型数据运算的时候,都是将数据统一转换为最大容量的数据,在进行计算。
    2. 强制类型转换
      与之相反,大转小,使用时需要谨慎,可能会出现数据精度的丢失。
  4. int 和Integer有什么区别?
    Integer属于int的包装类。这里我们需要回顾下包装类的自动拆箱/装箱机制,具体看作者的叙述:
    在这里插入图片描述

  5. 解答下题: (对于包装类至关重要的理解)
    在这里插入图片描述
    这道题乍一看非常简单,但是实际上玄机很深。需要对底层代码有充分的认知。

    我们来看一下Integer包装类底层的代码。

    首先我们在进行赋值的时候坑就已经挖好了,这里我们要将一个整形的常量赋值给包装类,需要先经过类型的转换,int->Integer,需要通过valueOf方法实现转换。这也是自动拆装箱的原理
    在这里插入图片描述
    这只是第一步,而且在比较的时候,由于是包装类,这几个变量其实都是包装类Integer对象引用,所以在比较的时候,我们将==不再比较值得大小,而是比较其引用地址这是非常关键的认识!!!!!必须谨记!!!!

    在知道这个之后,我们还需要看一下这里的代码:
    在这里插入图片描述
    分析后也就是说,如果整形数字常量在-128——127之间的话,那么就不会new一个新的Integer对象,而是会在常量池中寻找符合的数字常量,那样就不会有全新的地址值,也就是比较的是常量的值得大小了。

    所以前者为true,后者为false。

  6. String类的常用方法有哪些?

    这一点其实在前面的API相关博客中都有写,这里粘贴作者的解答
    在这里插入图片描述

  7. String,StringBuffer/StringBuilder,三者之间的区别?

    前面的API博客中也有介绍,这里来总体叙述下:

    1. 可变性分析
      String:不可变,属于字符串常量,创建时相当于在字符串常量池中创建了一个不可变的String值,如果发生修改,先检查是否有匹配字符串,若没有,重新创建。
      StringBuffer/StringBuilder:可变,每次操作都是对其自身创建对象的修改,并不会生成新的对象,要求字符串经常改变的情况下非常适合使用,主要的方法:append,insert等
    2. 线程安全性分析
      String:安全,因为其不可变。
      StringBuffer:线程安全(对调用方法加入同步锁),但执行效率较慢,适用于多线程下操作字符串缓冲区的大量数据。
      StringBuilder:线程不安全,适用于单线程下操作字符串缓冲区的大量数据。
    3. 共同点
      StringBuffer和StringBuilder都有共同的父类 AbstractStringBuilder(抽象类)
      他们两个的方法都会调用父类中的公共方法,只是前者会在调用方法是加入synchronize关键字来加入同步锁使线程更安全,最后如果程序不是多线程的,那么后者的效率要高于前者。
  8. 数据类型的转换。

    String类型怎么转换为基本数据类型。
    以int为例,调用其包装类Integer中的方法valueOf(String数据)或者parseInt(String数据),其他类型换名字即可。

    基本数据类型怎么转换为String类型。
    同样为例,使用字符串拼接符号+将int类型的数据与""空字符串连接可以得到,
    或者调用String类中的int.valueOf()数据返回String类型的数据.

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值