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

目录

  • 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.mzph.cn/news/884409.shtml

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

相关文章

c# 值类型

目录 1、c#类型2、值类型2.1 结构体2.2 枚举 1、c#类型 类型&#xff08;Type&#xff09;又叫数据类型&#xff08;Data Type&#xff09;。 A data type is a homogeneous collection of values,effectively prensented,equipped with a set of operations which manipulate…

【压力测试】如何确定系统最大并发用户数?

一、明确测试目的与了解需求 明确测试目的&#xff1a;首先需要明确测试的目的&#xff0c;即为什么要确定系统的最大并发用户数。这通常与业务需求、系统预期的最大用户负载以及系统的稳定性要求相关。 了解业务需求&#xff1a;深入了解系统的业务特性&#xff0c;包括用户行…

怎么在哔哩哔哩保存完整视频

哔哩哔哩(B站)作为一个集视频分享、弹幕互动于一体的平台&#xff0c;吸引了大量用户。许多人希望能够将自己喜欢的完整视频保存到本地&#xff0c;以便离线观看或分享。直接下载视频的功能并不总是可用&#xff0c;因此&#xff0c;本文将介绍几种在哔哩哔哩上保存完整视频的方…

【玉米叶部病害识别】Python+深度学习+人工智能+图像识别+CNN卷积神经网络算法+TensorFlow

一、介绍 玉米病害识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;通过收集了8种常见的玉米叶部病害图片数据集&#xff08;‘矮花叶病’, ‘健康’, ‘灰斑病一般’, ‘灰斑病严重’, ‘锈病一般’, ‘锈病严重’, ‘叶斑病一般’, ‘叶斑病严重’&#x…

PAT甲级-1048 Find Coins

题目 题目大意 给出硬币的个数n和要付费的钱m&#xff0c;接下来给出每个硬币的面值。要求从这些硬币中找到两个硬币v1, v2&#xff0c;使得v1 v2 m&#xff0c;且v1 < v2&#xff0c;输出v1 v2。如果不能找到这两个硬币&#xff0c;输出No Solution。 思路 刚开始用的…

算法练习:LCR 179. 查找总价格为目标值的两个商品

题目链接&#xff1a;LCR 179. 查找总价格为目标值的两个商品 利用双指针位于数值两端来进行控制&#xff0c;定义sum来记录两指针分别对应的值的和&#xff0c; 这里有个重要的点就是该数组是升序&#xff0c;所以&#xff1a; 当sum > target时&#xff0c;end--&#x…

python openai 通过Function Call 创建自动化任务

目录 一、什么是Function Call(函数掉用) 1. 功能概述 2. 工作原理 二、如何实现函数调用 1、定义自己的get_weather 函数 2、给助手添加函数调用 3、写好instrction,指导assistant去掉用你定义的方法。 4、最后也是最重要的,捕获 Assistant 的 Function Call 三、…

构建数据湖仓的开源技术栈有哪些

湖仓一体架构是一种新兴的数据管理方式&#xff0c;它融合了数据湖和数据仓库的优势&#xff0c;提供了统一的数据存储、事务支持、数据治理、实时与批处理能力以及弹性和可扩展性。在开源领域&#xff0c;湖仓一体技术栈的选择非常关键&#xff0c;因为它直接影响到系统的灵活…

每日OJ题_牛客_排序子序列_模拟_C++_Java

目录 牛客_排序子序列_模拟 题目解析 C代码 Java代码 牛客_排序子序列_模拟 排序子序列_牛客笔试题_牛客网 (nowcoder.com) 描述&#xff1a; 牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数…

电脑软件:推荐一款免费且实用的电脑开关机小工具

目录 一、软件简介 二、软件功能 三、软件特点 四、使用说明 五、软件下载 今天给大家推荐一款免费且实用的电脑开关机小工具KShutdown&#xff0c;有需要的朋友可以下载试一下&#xff01; 一、软件简介 KShutdown是一款精巧且实用的定时自动关机小工具&#xff0c;对于…

网关如何传递信息给微服务

前情回顾 上篇我们已经完成了网关对所有微服务请求的拦截以及JWT的登录校验。 客户端和微服务之间的桥梁--网关&#xff08;身份校验&#xff09;https://mp.csdn.net/mp_blog/creation/editor/143425484 问题引入 现在的问题是在一些微服务业务中&#xff0c;需要用到用户…

微服务架构面试内容整理-微服务架构的定义及优势

微服务架构是一种软件架构风格,它将应用程序构建为一组小的、独立的服务,每个服务围绕特定的业务功能进行开发和部署。每个微服务都可以独立运行、独立部署,并通过轻量级的通信机制(如 HTTP/REST、gRPC 或消息队列)进行交互。 微服务架构的优势: 1. 独立性: 每个微服务…

BGP路由优选+EVPN

BGP 的路由优选规则是一套多步决策链&#xff0c;用来确定在多个可行路由中选择最优的路由。BGP 是一种路径向量协议&#xff0c;通过这些优选规则&#xff0c;网络管理员可以控制数据流量的流向&#xff0c;确保网络的稳定性和效率。下面以一个实例来详细说明 BGP 的优选规则及…

Vue3图片懒加载(vue3-lazyload)

Vue2图片懒加载 参考文档&#xff1a;vue3-lazyload 效果如下图&#xff1a;vue3-lazyload0.3.8 在线预览 安装 npm install vue3-lazyload # or yarn add vue3-lazyload # or pnpm add vue3-lazyload引入并注册 import { createApp } from vue import VueLazyLoad from v…

MongoDB 6.0 主从复制配置

以下是 MongoDB 6.0 版本配置主从的详细安装步骤&#xff1a; 1. 安装 MongoDB&#xff1a;可以从官网下载 MongoDB 6.0 的安装包并进行安装&#xff0c;或者使用相应的包管理工具进行安装。 2. 配置主节点&#xff1a;在主节点的 MongoDB 配置文件&#xff08;默认路径为 …

【快速入行软件测试行业+功能测试必备技能+测试用例快速编写 】--保姆级教程

快速入门功能测试 功能测试是软件测试中最重要的一部分&#xff0c;旨在验证软件系统的各项功能是否按照需求规格说明书的要求正常工作。以下是快速入门功能测试所需的技能、操作步骤、SQL语句编写和用例撰写方法。 1. 功能测试所需技能 基本测试知识&#xff1a; 理解测试类…

ISO 26262与ISO 21434:汽车安全领域的双重保障与交汇探索

ISO 26262和ISO 21434都是关于汽车安全的国际标准&#xff0c;它们在汽车安全领域各自有不同的侧重点&#xff0c;但它们也存在交集。 ISO 26262是一个针对汽车行业的功能安全标准&#xff0c;它主要关注汽车电子和电气系统的安全性。这个标准从概念阶段开始&#xff0c;贯穿了…

Hudi Upsert原理

1. 前言 如果要深入了解Apache Hudi技术的应用或是性能调优&#xff0c;那么明白源码中的原理对我们会有很大的帮助。Upsert是Apache Hudi的核心功能之一&#xff0c;主要完成增量数据在HDFS/对象存储上的修改&#xff0c;并可以支持事务。而在Hive中修改数据需要重新分区或重…

ctfshow web入门文件上传总结

1.web151 前端验证 前端验证&#xff0c;修改html代码&#xff0c;上传还有一句话木马的php文件,之后用蚁剑连接即可找到flag <?php eval($_POST[1])?>2.web152 后端验证&#xff0c;修改mime类型(content-type) burp抓包&#xff0c;修改content-type为image/png …

Java面试题十四

一、Java中的JNI&#xff08;Java Native Interface&#xff09;是什么&#xff1f;它有什么用途&#xff1f; Java中的JNI&#xff08;Java Native Interface&#xff09;是Java提供的一种编程框架&#xff0c;它允许Java代码与本地&#xff08;Native&#xff09;代码&#x…