Java基本语法和基础数据类型——针对实习面试

news2024/12/23 19:16:58

目录

  • Java基本语法和基础数据类型
    • 标识符和关键字有什么区别?
    • Java关键字有哪些?
    • Java基本数据类型有哪些?
    • 什么是自动装箱和拆箱?
      • 自动装箱(Autoboxing)
      • 自动拆箱(Unboxing)
    • 自动装箱和拆箱在哪些情况下发生?
      • 自动装箱(Autoboxing)发生的情况:
      • 自动拆箱(Unboxing)发生的情况:
    • Java有哪些类型的转换?区别是什么?
      • 自动类型转换(隐式类型转换)
      • 强制类型转换(显式类型转换)
      • 注意事项
    • 参考

Java基本语法和基础数据类型

在这里插入图片描述

标识符和关键字有什么区别?

标识符

  • 由开发者自定义的,用于标识特定的程序元素
  • 它必须以字母(A-Z或a-z)或下划线(_)开头,后面可以跟字母、数字(0-9)或下划线

关键字

  • 关键字是编程的语言预定义的,具有特殊意义的单词
  • 它们用于表示语言的语法结构,不能用于标识符

Java关键字有哪些?

  • 访问控制:private、protected、public
  • 类,方法和变量修饰符:abstract、calss、estends、final、implents、interface、native、new、static、strictfp、synchronized、transient、volatile、enum
  • 程序控制:break、continue、return、do、while、if、else、for、instanceof、switch、case、default、assert
  • 错误处理:try、catch、throw、throws、finally
  • 包相关:import、package
  • 基本类型:boolean、byte、char、double、float、int、long、short
  • 变量引用:super、this、void
  • 保留字:goto、const

Java基本数据类型有哪些?

Java中的基本数据类型(也称为原始数据类型)包括以下8种:

  1. 整型

    • byte:8位有符号整数,取值范围从-128到127。
    • short:16位有符号整数,取值范围从-32,768到32,767。
    • int:32位有符号整数,默认的整数类型,取值范围从-2,147,483,648到2,147,483,647。
    • long:64位有符号整数,取值范围从-9,223,372,036,854,775,808到9,223,372,036,854,775,807。在数值后加上Ll来表示。
  2. 浮点型

    • float:32位单精度浮点数,遵循IEEE 754标准。在数值后加上Ff来表示。
    • double:64位双精度浮点数,遵循IEEE 754标准,默认的浮点数类型。
  3. 字符型

    • char:16位Unicode字符,可以存储任何字符。
  4. 布尔型

    • boolean:只有两个可能的值:truefalse

什么是自动装箱和拆箱?

在Java中,自动装箱(Autoboxing)和拆箱(Unboxing)是两个与基本数据类型和它们的包装类(Wrapper Classes)之间转换相关的概念。

自动装箱(Autoboxing)

自动装箱是指将Java的基本数据类型自动转换成对应的包装类对象的过程。这种转换是自动进行的,不需要程序员显式地进行类型转换。例如,可以将一个int类型的值直接赋值给一个Integer对象,Java编译器会自动将int装箱为Integer对象。

Integer integerObject = 10; // 自动装箱,将int类型10转换为Integer对象

自动拆箱(Unboxing)

自动拆箱是指将包装类对象自动转换成对应的基本数据类型的过程。与自动装箱相反,自动拆箱将包装类对象还原为基本数据类型。这同样是由Java编译器自动完成的。

int intValue = integerObject; // 自动拆箱,将Integer对象转换为int类型的值

自动装箱和拆箱在哪些情况下发生?

自动装箱和拆箱在Java中主要在以下情况下发生:

自动装箱(Autoboxing)发生的情况:

  1. 赋值给包装类对象
    当基本数据类型的值被赋给对应的包装类对象时,会自动装箱。

    Integer i = 10; // int 装箱成 Integer
    
  2. 作为参数传递给接受包装类对象的函数
    当函数的参数是包装类类型时,传递基本数据类型会自动装箱。

    void takeInteger(Integer i) {
        // ...
    }
    takeInteger(20); // int 装箱成 Integer
    
  3. 集合类操作
    当将基本数据类型添加到需要对象的集合类(如ListSetMap等)时,会自动装箱。

    List<Integer> list = new ArrayList<>();
    list.add(30); // int 装箱成 Integer
    
  4. 条件语句
    在某些条件语句中,如ifwhile,基本数据类型会被自动装箱以便与包装类对象进行比较。

    if (40 != null) {
        // int 装箱成 Integer,然后与null比较
    }
    

自动拆箱(Unboxing)发生的情况:

  1. 赋值给基本数据类型的变量
    当包装类对象被赋值给基本数据类型的变量时,会自动拆箱。

    Integer i = 50;
    int j = i; // Integer 拆箱成 int
    
  2. 作为参数传递给接受基本数据类型的函数
    当函数的参数是基本数据类型时,传递包装类对象会自动拆箱。

    void takeInt(int i) {
        // ...
    }
    takeInt(60); // Integer 拆箱成 int
    
  3. 算术运算
    当包装类对象参与算术运算时,会自动拆箱成基本数据类型。

    Integer a = 70;
    Integer b = 80;
    int sum = a + b; // 两个Integer对象拆箱成int,然后相加
    
  4. 比较运算
    当包装类对象使用==进行比较时,会自动拆箱成基本数据类型。

    Integer x = 90;
    Integer y = 90;
    boolean equal = x == y; // 两个Integer对象拆箱成int,然后比较
    
  5. 条件语句
    ifwhile等条件语句中,包装类对象会自动拆箱以便与基本数据类型进行比较。

    while (100 < 200) {
        // Integer 拆箱成 int
    }
    

自动装箱和拆箱使得代码更加简洁,但也要注意它们可能带来的性能影响,特别是在循环和大量数据处理的情况下,因为频繁的装箱和拆箱可能会导致不必要的性能开销

Java有哪些类型的转换?区别是什么?

Java中有两种主要的类型转换:自动类型转换(也称为隐式类型转换)和强制类型转换(也称为显式类型转换)。

自动类型转换(隐式类型转换)

自动类型转换发生在不同数据类型之间的赋值或参数传递时,当源数据类型的值可以无损失地转换为目标数据类型时,Java编译器会自动进行类型转换。这种转换通常发生在以下几种情况:

  1. 从小到大的转换

    • byteshortcharint,然后到long,最后到floatdouble
    • 例如:byteintintlongfloatdouble
  2. 对象之间的转换

    • 从子类对象到父类对象的引用转换。
    • 例如:Dog dog = new Dog(); Animal animal = dog;(其中DogAnimal的子类)

强制类型转换(显式类型转换)

强制类型转换是程序员明确指定的类型转换,用于将一个类型的值转换为另一个类型的值。如果转换不兼容,编译器会报错。这种转换通常发生在以下几种情况:

  1. 从大到小的转换

    • doublefloat,然后到long,接着到intcharshort,最后到byte
    • 例如:doubleintintbyte
  2. 对象之间的转换

    • 从父类对象到子类对象的引用转换。
    • 例如:Animal animal = new Dog(); Dog dog = (Dog) animal;(其中DogAnimal的子类)
  3. 基本数据类型和字符串之间的转换

    • 基本数据类型到String,以及String到基本数据类型的转换。
    • 例如:int i = 10; String str = String.valueOf(i); 或者 String str = "123"; int i = Integer.parseInt(str);

注意事项

  • 在进行数值类型的强制转换时,可能会发生数值溢出或精度损失。
  • 在进行对象引用的强制转换时,如果转换不兼容,运行时会抛出ClassCastException
  • 字符串到基本数据类型的转换可能会抛出NumberFormatException,如果字符串的内容不能被解析为相应的数值类型。

类型转换是Java编程中的一个重要概念,正确地使用类型转换可以帮助程序员编写出更加灵活和高效的代码。

参考

部分参考Javaguide的关于面试的文档(准备面试的同学强烈推荐!)
链接:https://javaguide.cn/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2230318.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动化测试工具Ranorex Studio(十九)-其他编辑选项

失败继续运行和禁用 表中列出的每个Action条目&#xff0c;都可以设置为禁用或 “失败继续运行”。 设置action条目为“失败继续运行”时&#xff0c;如果遇到错误&#xff0c;模块不会停在那个位置&#xff0c;而是继续执行。 您可以通过右键菜单或属性窗口设置这两个选项。 设…

知识见闻 - Workday公司介绍

人力资源“一哥”Workday的前世今生 01 Duffield 既然要聊Workday&#xff0c;我们首先要认识一个人。David Duffield&#xff0c;又一位企业软件服务行业的绝对大神。 大卫杜菲尔德&#xff08;David Duffield&#xff09;出生于1941年。 40岁&#xff0c;很多职场人都已经认命…

VS2022配置调试Qt源代码

需要保证源代码和项目使用的版本匹配&#xff0c;符号需要注意是64位还是32位&#xff0c;并且用msvc。 1. 设置源代码路径 2. 设置调试PDB路径 这里最好把4个地方都加进去&#xff0c;防止某些不常用PDB被漏掉。 D:\Qt\5.15.2\msvc2019_64\bin D:\Qt\5.15.2\msvc2019_64\lib…

利用腾讯元器构建商业化AI智能体——【快递100 AI智能体实战教学】

写在开头 随着人工智能技术的不断进步&#xff0c;腾讯元器作为一项强大的工具&#xff0c;使得构建商业化的AI智能体变得更加便捷和高效。本文将带你深入了解如何利用腾讯元器搭建快递100 AI智能体的全过程&#xff0c;从前期规划到最终实现&#xff0c;为你提供一份详尽的实…

「C/C++」C++ 设计模式 之 单例模式(Singleton)

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

【前端基础】CSS基础

目标&#xff1a;掌握 CSS 属性基本写法&#xff0c;能够使用文字相关属性美化文章页。 01-CSS初体验 层叠样式表 (Cascading Style Sheets&#xff0c;缩写为 CSS&#xff09;&#xff0c;是一种 样式表 语言&#xff0c;用来描述 HTML 文档的呈现&#xff08;美化内容&#…

【Oracle】空格单字符通配符查询匹配失败

问题 在进行模糊查询的时候&#xff0c;通过全局任意字符串匹配出含有两个字刘姓的人&#xff0c;但是通过刘_不能匹配出结果。 解决 检查后发现&#xff0c;姓名中包含空格 SELECT * FROM student WHERE TRIM(sname) LIKE 刘_;第一种解决方案就是查询的时候进行去空格处理&a…

查看多个通道32bit音频pcm数据

本文分析一个32位多通道pcm数据&#xff0c;一方面简单解释一下pcm数据格式&#xff0c;另外一方面看清楚实际数据的精度是多少。 说明&#xff1a;这是一个alsa采集到的10路32bit的pcm数据。 使用bc打开&#xff0c;16进制数据显示如下图&#xff1a; 图中左边是一个10通道32…

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割!

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割&#xff01; 【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割&#xff01; 文章目录 【语义分割|代码解析】CMTFNet-2: …

Webpack 配置module.css报错Uncaught TypeError: Cannot read properties of undefined

我的项目结构如下: 入口文件是index.jsx&#xff0c;组件Button.jsx使用了样式button.module.css .btn {background-color: #4CAF50;border: none;color: white; padding: 15px 32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin:…

Redis(2):内存模型

一、Redis内存统计 工欲善其事必先利其器&#xff0c;在说明Redis内存之前首先说明如何统计Redis使用内存的情况。 在客户端通过redis-cli连接服务器后&#xff08;后面如无特殊说明&#xff0c;客户端一律使用redis-cli&#xff09;&#xff0c;通过info命令可以查看内存使用情…

Docker打包自己项目推到Docker hub仓库(windows10)

一、启用Hyper-V和容器特性 1.应用和功能 2.点击程序和功能 3.启用或关闭Windows功能 4.开启Hyper-V 和 容器特性 记得重启生效&#xff01;&#xff01;&#xff01; 二、安装WSL2&#xff1a;写文章-CSDN创作中心https://mp.csdn.net/mp_blog/creation/editor/143057041 三…

python如何安装扩展包

1、扩展包 Python安装额外的扩展包&#xff0c;一般使用anconda进行管理。 1、1安装命令 一般我们在anconda中通过pip install 包名 的方式进行安装&#xff0c;不过由于这些包在国外下载&#xff0c;因此需要配置合适的镜像促使其下载更快。 1、2 镜像源配置 1、2、1 一次…

【风冷换热器设计及计算

某空气调节工程需要将33.3kg/s的空气&#xff0c;由干球温度t123℃、相对湿度ψ160&#xff05;&#xff0c;冷却到干球温度t212℃、相对湿度ψ290&#xff05;&#xff0c;冷凝器出口为40℃的饱和液体&#xff0c;制冷剂采用R22&#xff0c;试设计一台直接蒸发式空气冷却器。 …

LabVIEW程序员赚钱不仅限于上班

LabVIEW程序员拥有多种途径来实现财富增值&#xff0c;而不仅仅局限于传统的全职工作。以下是一些他们可以利用自身技能和专业知识实现更高财务收益的方法&#xff1a; 1. 专注领域的自由职业与合同工作 制造、科研、医疗技术等行业都需要LabVIEW的专业知识。通过自由职业&…

C++ shared_ptr 动态内存

C shared_ptr 动态内存 智能指针 为了更加容易的使用动态内存&#xff0c;新的标准库提供了智能指针&#xff0c;用来管理动态对象&#xff0c;智能指针的行为类似常规指针&#xff0c;重要的区别是他负责自动释放所指的对象。新标准库提供的智能指针的区别在于管理底层指针的…

动态代理:面向接口编程,屏蔽RPC处理过程

RPC远程调用 使用 RPC 时&#xff0c;一般的做法是先找服务提供方要接口&#xff0c;通过 Maven把接口依赖到项目中。在编写业务逻辑的时候&#xff0c;如果要调用提供方的接口&#xff0c;只需要通过依赖注入的方式把接口注入到项目中&#xff0c;然后在代码里面直接调用接口…

Spring Boot:打造动态定时任务,开启灵活调度之旅

一、描述 在 Spring Boot 中设置动态定时任务是一种非常实用的功能&#xff0c;可以根据实际需求在运行时动态地调整定时任务的执行时间、频率等参数。以下是对 Spring Boot 设置动态定时任务的简单介绍&#xff1a; 1、传统定时任务的局限性 在传统的 Spring Boot 定时任务…

Chrome与夸克谁更节省系统资源

在当今数字化时代&#xff0c;浏览器已经成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐&#xff0c;我们都依赖于浏览器来访问互联网。然而&#xff0c;不同的浏览器在性能和资源消耗方面存在差异。本文将探讨Chrome和夸克两款浏览器在系统资源消耗方面的表现…

react的antd-mobile使用Steps显示物流

antd-mobile的图标&#xff0c;是需要安装依赖的 step如果只有一个步骤是不会展示的&#xff0c;代码里面的标题那块可以看出来 尝试了很多遍测试发现一直不显示&#xff0c;查询后发现是这个组件的本身设置的原因 那么就算你只展示一个那么也要写两个step&#xff0c;第二个…