2.4 Java的基础概念(数据类型)
一、什么是数据类型在 Java 中数据类型决定了三件事存什么变量能存储的数据种类是整数、小数还是文字。占多大在内存中占用多少空间字节数。怎么算支持哪些操作如加减运算、逻辑比较。Java 是强类型语言。所有变量必须先声明类型且类型一旦确定通常不能随意改变。二、Java 数据类型的分类Java 的数据类型主要分为两大类基本数据类型和引用数据类型。Data Types数据类型/ \Primitive Types基本/原始类型 Reference Types引用类型graph TD A[Data Types 数据类型] -- B(Primitive Types 基本类型) A -- C(Reference Types 引用类型)1. 基本数据类型Primitive Types共8 种直接存储值本身效率极高通常存储在**栈Stack**内存中。分类类型关键字字节取值范围/说明默认值整数型byte1-128 ~ 1270short2-32,768 ~ 32,7670int4约 ±21亿 (-2³¹ ~ 2³¹−1)0long8约 ±9.2×10¹⁸0L浮点型float4单精度 (6~7位有效数字)0.0fdouble8双精度 (15~16位有效数字)0.0字符型char20 ~ 65,535 (Unicode 编码)\u0000布尔型boolean未定义true/falsefalseLong字面量必须加L或l建议大写 L避免与数字 1 混淆。Float字面量必须加F或f。DoubleJava 默认的浮点类型不加后缀即为 double。long bigNum 1234567890123L; float price 19.99f; // 不加 f 会报错因为默认是 double2. 引用数据类型Reference Types存储的是对象的引用内存地址实际对象存储在**堆Heap**内存中。类Class如String,Scanner, 自定义类。接口Interface如List,Runnable。数组Array如int[],String[]。枚举Enum。String name Alice; // name 是引用指向堆中的对象 int[] nums new int[5]; // nums 是数组引用三、基本类型 vs 引用类型特性基本类型引用类型存储内容实际数值对象的内存地址存储位置栈Stack引用在栈对象在堆默认值0, false, \u0000null是否有方法无有如.length()内存开销小高效相对较大四、字面量Literals字面量是直接写在代码中的常量值。类型字面量示例说明整数42,0b101默认是int长整数100L必须带L浮点数3.14默认是double单精度3.14f必须带f字符A,\n单引号只能存一个字符字符串Hello双引号属于引用类型布尔true,false仅两个值五、类型转换Type Conversion1. 自动类型提升Widening小范围 → 大范围安全自动完成。顺序byte→short→int→long→float→double特例char→intint a 100; double d a; // 自动转为 100.02. 强制类型转换Narrowing大范围 → 小范围可能丢失精度需显式转换。语法(目标类型) 变量名double x 123.456; int n (int) x; // 结果123直接截断小数不四舍五入布尔类型boolean不能与其他任何类型进行转换六、包装类Wrapper ClassesJava 为每个基本类型提供了对应的类主要用于集合泛型和工具方法。基本类型包装类基本类型包装类byteByteintIntegershortShortlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean自动装箱与拆箱JDK 5Integer num 100; // 自动装箱基本类型 - 对象 int n num; // 自动拆箱对象 - 基本类型七、常见陷阱与最佳实践1. 浮点数精度丢失System.out.println(0.1 0.2); // 输出 0.30000000000000004 System.out.println(0.1 0.2 0.3); // false解决方案涉及金额计算或高精度要求时必须使用BigDecimal。2. String 是引用类型abc是String对象而a是char基本类型。比较字符串内容请用.equals()不要用。3. char 是无符号的char范围是0~65535不能存储负数。最佳实践建议默认选择整数用int小数用double。大数处理超出int范围再用long。常量命名使用static final 全大写。public static final double PI 3.14159;八、练习public class TextData { public static void main(String[] args) { String name 黑马谢广坤; int age 18; char sex 男; double height 180.1; boolean flag true; System.out.println(姓名为: name); System.out.println(年龄为: age); System.out.println(性别为 sex); System.out.println(身高为: height); System.out.println(是否单身 flag); } }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2478296.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!