【Java八股 | 基础篇 |数据类型类】

【Java八股 | 基础篇 |数据类型类】

前言:

        今天主要学习Java八股基础篇中跟数据类型有关的题目。


一、八种基本数据类型

        1.整数类型(byte,short,int,long)

        2.浮点类型(float,double)

        3.字符类型(char)

        4.布尔类型(boolean)

数据类型占用字节位数取值范围对应包装类
byte18-128到127Byte
short216-32768-32767Short
int432-2147483648到2147483647Integer
long864-9223372036854775808到9223372036854775807Long
float4321.4E - 45 到 3.4028235E38Float
double8644.9E - 324 到 1.7976931348623157E308Double
char216'\u0000'(0) 到 '\uffff'(65535)Character
boolean无明确规范,通常为1个字节无明确位数true或falseBoolean

二、int和long是多少位,多少字节的

        int是32位(bit),占4个字节。long是64位(bit),占8个字节


三、long和int可以相互转换吗?

        可以,但是由于long的范围大于int,所以int转long是安全的,但long转int可能会造成数据安全问题。

        int转long,自动类型转换即可。也可以强转,但没必要

int intValue = 100; long longValue = intValue; // 直接赋值,自动转换为 long System.out.println(longValue); 

        long转int,强制类型转换。因为long转int可能会出现超范围导致数据安全问题,所以在转之前最好先检查。

long longValue = 2147483648L; // 超出 int 最大值 2147483647 if (longValue >= Integer.MIN_VALUE && longValue <= Integer.MAX_VALUE) { int intValue = (int) longValue; System.out.println(intValue); } else { System.out.println("数值超出 int 范围"); } 

四、数据类型转换方式你知道哪些?

        1.自动类型转换(隐式转换):

        当目标类型的取值范围(例如long)大于当前类型的取值范围(例如int)时,Java可自动转换

        2.强制类型转换(显式转换):

        当目标类型的取值范围(例如int)小于当前类型的取值范围(例如long)时,必须使用强制类型转换。语法为:目标类型 变量名 = (目标类型) 源类型

        3.字符串转换:

        将字符类型的数据转化为其他数据类型。例如,将字符串转换为整型int,可以使用Integer.parseInt()方法。将字符串转换为浮点型float,可以使用Float.parseFloat()方法。

String str = "123"; int num = Integer.parseInt(str); System.out.println(num); // 输出: 123 
String str = "3.14"; float floatValue = Float.parseFloat(str); System.out.println(floatValue); // 输出3.14 

        4.数值之间的转换:

        Java提供了一些数值类型之间的转换方法,例如,将整型转换为字符型(String.valueOf()方法和toString()方法等)、将字符型转换为整型(Character.getNumbericValue()等)等。

int num = 123; String str = String.valueOf(num); System.out.println("转换结果: " + str); // 输出: 转换结果: 123 
int num = 456; String str = Integer.toString(num); System.out.println("转换结果: " + str); // 输出: 转换结果: 456 
public class CharToIntExample { public static void main(String[] args) { char charValue = '7'; // 示例字符 int intValue = Character.getNumericValue(charValue); System.out.println("字符 '" + charValue + "' 转换为整型: " + intValue); } } 

五、装箱和拆箱是什么?

        装箱(Boxing)和拆箱(Unboxing)是将基本数据类型和对应的包装类之间进行转换的过程。

        装箱:

        基本类型转换为对应包装类,如int到integer。

        底层实现:编译器自动调用包装类的ValueOf()方法。

        int num = 100;
        Integer i = num; // 自动装箱,等价于 Integer i = Integer.valueOf(num);
        boolean flag = true;
        Boolean b = flag; // 自动装箱,等价于 Boolean b = Boolean.valueOf(flag);

        拆箱:

        包装类转换为对应的基本类型,如integer到int。

        底层实现:编译器自动调用包装类的***Value()方法。

        当包装类对象为null时,自动拆箱会直接抛出空指针异常。

        Integer i = Integer.valueOf(100);
        int num = i; // 自动拆箱,等价于 int num = i.intValue();
        Boolean b = Boolean.TRUE;
        boolean flag = b; // 自动拆箱,等价于 boolean flag = b.booleanValue();

六、Java为什么要有integer?

        1.integer是int的包装类,把int包装为object对象

        2.集合只能存储对象,不能存储基本数据类型,有了integer就可以把int包装为对象存储到集合中

        3.integer中内置了很多方法,方便了整数的操作

        4.integer适配泛型,Java中的泛型不支持基本类型


七、interger相比与int的区别

        1.integer是引用类型,是一个对象;int是基本类型,直接存储数值本身

        2.integer默认值为null,表示没有指向任何对象;int默认值为0

        3.integer对象本身存储在堆内存中,栈内存中存储对象的引用地址;int存储在栈内存中,直接保存数值

        4.integer如果“==”比较的话比较的是地址,而不是数值,需要使用equals()方法比较值;int用“==”比较数值。

需要注意的是当interger的值在-128到127时,用“==”比较则会比较数值,因为integer缓存池的存在,超出这个范围比较数值,需要用equals()方法。

八、说一下 integer的缓存

        Java在integer内部实现了一个静态的缓存池,用于存储特定范围内的数值,默认为-128到127,当创建的对象在该范围内时,只有第一次需要创造,以后的每次都是调用第一次所创造的。

结语、

        以上内容仅表示个人观点,若有异议,欢迎指出,在评论区共同讨论。创作不易,点赞关注加收藏,共同进步。

Read more

Java 枚举

目录 枚举是什么 常用方法 构造方法 枚举的优缺点 枚举和反射 实现单例模式 枚举是什么 枚举(enum):是一种特殊的类,用于定义一组常量,将其组织起来。枚举使得代码更具有可读性和可维护性,特别是在处理固定集合的值时,如:星期、月份、状态码等 在 Java 中,使用关键字 enum 来定义枚举类: public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; } 其中,定义的枚举项就是该类的实例,且必须在第一行,最后一个枚举项后的分号; 可以省略,但是若枚举类有其他内容,则分号不能省略(最好不要省略)  当类初始化时,这些枚举项就会被实例化 枚举类使用 enum 定义后,默认继承 java.

By Ne0inhk

在鸿蒙PC上搭建多语言开发环境:Java/Python/Go/Rust配置指南

前言:为什么要在鸿蒙PC上配置多语言环境? 大家好,说实话,刚从Windows切换到鸿蒙PC时,我内心是有些忐忑的——这个新兴的操作系统能支持我的日常开发工作吗?我需要同时处理Java后端项目、Python数据分析、Go的微服务,偶尔还要写一些Rust的高性能工具,这些在鸿蒙PC上都能搞定吗? 经过一番摸索和实践,我可以肯定地告诉大家:完全可以!而且配置过程比我想象的要顺利得多。今天我就把自己的配置经验整理出来,手把手教大家在鸿蒙PC上搭建完整的多语言开发环境。 一、准备工作:了解鸿蒙PC的软件生态 在开始配置之前,我们需要先理解鸿蒙PC的软件生态特点。与传统的Linux发行版不同,鸿蒙PC有其独特的包管理系统——HPM(HarmonyOS Package Manager)。不过好消息是,除了HPM,我们还可以使用一些传统的Linux工具,这为多语言环境配置提供了更多选择。 首先,让我们检查一下系统的基本情况。打开终端(在鸿蒙PC上,我习惯称之为命令行工具),输入以下命令查看系统信息: uname -a 这个命令会显示系统内核版本、架构等信息。鸿蒙PC通常采用Linux

By Ne0inhk

Holistic Tracking多语言SDK:Java/C#/Python调用指南

Holistic Tracking多语言SDK:Java/C#/Python调用指南 1. 什么是Holistic Tracking多语言SDK Holistic Tracking是一种先进的动作捕捉技术,能够实时追踪人体姿态、手势和面部表情。多语言SDK则是为了让不同技术栈的开发团队都能轻松集成这项技术而设计的开发工具包。 想象一下,这就像给不同国家的游客提供多语种导游手册——无论你习惯用哪种编程语言,都能找到适合自己的使用说明。SDK目前支持三种主流语言: * Java:适合Android开发和企业级应用 * C#:适合Unity游戏开发和Windows应用 * Python:适合快速原型开发和AI研究 2. 为什么需要多语言支持 在企业实际开发中,我们经常遇到这样的困境: 1. 原有系统用Java开发,但新团队更熟悉Python 2. Unity游戏需要C#接口,后台服务却用Java编写 3. 算法团队用Python开发原型,工程团队需要Java实现 多语言SDK就像一座桥梁,让不同技术栈的模块可以无缝协作。我们实测发现,使用统一的技术方案比混合多

By Ne0inhk

Java智慧养老:护理代办陪诊全场景覆盖

Java智慧养老系统通过整合护理代办、陪诊服务、健康管理、紧急救援等全场景功能,结合物联网、大数据、AI等技术,为老年人提供安全、便捷、个性化的养老服务。以下是基于Java技术栈的智慧养老系统全场景覆盖方案: 一、系统架构设计 1. 微服务架构 * 技术栈:Spring Boot + Spring Cloud Alibaba(Nacos、Sentinel、Seata) + MyBatis-Plus * 模块拆分: * 用户服务:管理老人、家属、护理员、医生等角色信息 * 订单服务:处理护理代办、陪诊预约、紧急救援等订单 * 健康服务:集成智能设备数据(血压、血糖、心率等) * 支付服务:支持医保结算、第三方支付、家属代付 * 通知服务:短信、APP推送、语音电话等多渠道提醒 * AI服务:基于NLP的智能问诊、

By Ne0inhk