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/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

逻辑磁盘管理 附实验:逻辑卷的组成与划分

分区类型&#xff1a; 1、系统引导分区 就是存放系统的引导文件和Linux的内核文件 2、swap分区 交换分区&#xff0c;系统的物理内存不足时&#xff0c;从一些长时间未运行的程序当中释放一部分内存释放出来的保存到swap分区&#xff0c;这些未运行的程序一旦运行还要从swap空…

fetch: 取消请求、读取流、获取下载进度...

引言 Fetch API 提供了一个获取资源的接口(包括跨网络通信)。对于任何使用过 XMLHttpRequest 的开发者来说, 对于 Fetch 应该都能轻松上手, 而且新的 API 提供了更强大和灵活的功能集… 本文主要就是记录下, 在使用 Fetch 期间可能会碰到的几个小案例… 一、取消请求 在前端…

【 纷享销客-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

mobaxterm 中文输入问号解决办法

无论是终端&#xff0c;还是session的name&#xff0c;输入中文都是问号&#xff0c;那么使用以下方法可解决问题 语言设置中找到英文键盘删除即可

Hive的数据存储格式

目录 一、前言 二、存储格式 2.1、文本格式&#xff08;TextFile&#xff09; 2.1.1、定义与特点 2.1.2、存储与压缩 2. 1.3、使用场景 2.2、行列式文件&#xff08;ORCFile&#xff09; 2.2.1、ORC的结构 2.2.2、ORC的数据类型 2.2.3、ORC的压缩格式 2.2.3、ORC存储…

Spring Boot的核心优势及其应用详解

目录 前言1. Spring Boot的核心优势1.1 启动依赖的集成1.2 自动化配置 2. 内嵌服务器支持2.1 内嵌Tomcat服务器2.2 独立运行与便捷部署 3. 外部配置管理3.1 多环境支持3.2 配置优先级与外部化配置 4. Spring Boot的应用场景4.1 微服务架构4.2 云原生应用 结语 前言 在现代的Ja…

scala---10.30

val、var package com_1030class Person {var name:String"rose"def sum(n1:Int,n2:Int):Int{n1n2} } object Person{def main(args: Array[String]): Unit {//创建person对象var personnew Person()println(person.sum(10,20))//30println(person.name)person.nam…

ubuntu22.04 docker-compose搭建apisix高可用

首先你得先确保每台主机安装了docker和docker-compose 3台主机 没有安装docker和docker-compose的可以看我前两篇博客 可以先克隆仓库 git clone https://github.com/apache/apisix-docker.git 进入example目录 拷贝dashboard配置文件 将all-in-one中apisix-dashboard文件夹拷…

北大计算机考研难度如何?毕业后就业情况怎么样?

C哥专业提供——计软考研院校选择分析专业课备考指南规划 一、总体情况概述 北京大学计算机 2024 届考研整体呈现 “稳中有升” 的态势。在复试分数线方面&#xff0c;无论是学硕&#xff08;本部&#xff09;还是专硕&#xff08;深圳&#xff09;&#xff0c;较 2023 届均有…

黑马JavaWeb-day04

文章目录 mavenmaven 简介maven 安装IDEA集成maven创建maven项目Maven 坐标依赖管理单元测试 Web入门Springboot 入门HTTP协议三层架构分层解耦 I O C & D I IOC\&DI IOC&DI入门 I O C IOC IOC和 D I DI DI详解 maven maven 简介 maven: M a v e n Maven Maven是…

什么是FUSE用户态文件系统

零. 文件系统 1. 为什么要有文件系统 文件系统是操作系统中管理文件和目录的一种机制。它提供了组织、存储、检索和更新文件的方法&#xff0c;主要如下&#xff1a; 数据组织&#xff1a;文件系统将数据组织成文件和目录&#xff0c;使用户能够更方便地管理和查找文件。每个…

品牌怎么找到用户发的优质内容,进行加热、复制?

在&#xff0c;相对传统媒体来说&#xff0c;社交媒体营销具有更高的成本效益。品牌可以通过相对较低的成本达到大量潜在客户&#xff0c;尤其是通过口碑营销和内容分享&#xff0c;可以实现倍增的传播效果。在社媒营销的过程中&#xff0c;去找到与品牌有关的优质、正向内容&a…

梁山派入门指南3——串口使用详解,包括串口发送数据、重定向、中断接收不定长数据、DMA+串口接收不定长数据,以及对应的bsp文件和使用示例

梁山派入门指南3——串口使用详解&#xff0c;包括串口发送数据、重定向、中断接收不定长数据、DMA串口接收不定长数据&#xff0c;以及对应的bsp文件和使用示例 1. 串口发送数据1.1 串口简介1.2 梁山派上的串口开发1.3 bsp_uart文件&#xff08;只发送不接收&#xff0c;兼容串…

notepad++ compare插件的离线下载和安装

一、离线安装 去改地址找到最新的插件&#xff1a;https://github.com/notepad-plus-plus/nppPluginList/blob/master/doc/plugin_list_x64.md下载之后复制到插件文件夹&#xff0c;插件文件夹的打开方式如下 注意目录&#xff1a; 二、问题汇总 &#xff08;1&#xff09…

你的网站需要防护吗?

你的网站经常被恶意爬虫&#xff0c;重要数据被批量搬运吗&#xff1f; 你想知道你的网站是不是安全的&#xff0c;有没有被 xss攻击、sql注入、命令注入等等这些乱七八糟的攻击手段攻击吗&#xff1f; 2014年我还是学生的时候&#xff0c;负责学院官网的维护&#xff0c;一…

在postman设置请求里带动态token,看看这两种方法!

问题描述 在使用postman调试接口时&#xff0c;遇到一些需要在请求里加上token的接口&#xff0c;若token出现变化&#xff0c;需要手动修改接口的token值&#xff0c;带来重复的工作量&#xff0c;翻看postman使用手册后&#xff0c;我发现了两种方法可以解决这个问题。 01 …

商家如何在高德地图上申请店铺入驻?

在当今数字化时代&#xff0c;互联网成为了消费者寻找商品和服务的主要渠道。高德地图作为国内领先的地图导航软件&#xff0c;不仅拥有庞大的用户基础&#xff0c;还为商家提供了优质的店铺展示平台。因此&#xff0c;对于实体店商家而言&#xff0c;入驻高德地图是提升店铺曝…

Java并发常见面试题总结(下)

Map&#xff08;重要&#xff09; HashMap 和 Hashtable 的区别 线程是否安全&#xff1a; HashMap 是非线程安全的&#xff0c;Hashtable 是线程安全的,因为 Hashtable 内部的方法基本都经过synchronized 修饰。&#xff08;如果你要保证线程安全的话就使用 ConcurrentHashMa…

数字化导师坚鹏:2025年银行开门红营销规划、方法及案例工作坊

2025年银行开门红营销规划、方法及案例工作坊 ——数字化赋能 新策略启航 开门红必胜 课程背景&#xff1a; 面对即将打响的开门红战役&#xff0c;很多银行存在以下问题&#xff1a; 不知道如何分析银行开门红面临形势及机遇&#xff1f; 不知道如何制定科学高效的开…

普通的Java程序员,需要深究源码吗?

作为Java开发者&#xff0c;面试肯定被问过多线程。对于它&#xff0c;大多数好兄弟面试前都是看看八股文背背面试题以为就OK了&#xff1b;殊不知现在的面试官都是针对一个点往深了问&#xff0c;你要是不懂其中原理&#xff0c;面试就挂了。可能你知道什么是进程什么是线程&a…