Java 教程
- Java - 首页
- Java - 概述
- Java - 历史
- Java - 特性
- Java 与 C++
- JVM - Java虚拟机
- Java - JDK vs JRE vs JVM
- Java - Hello World 程序
- Java - 环境设置
- Java - 基本语法
- Java - 变量类型
- Java - 数据类型
- Java - 类型转换
- Java - Unicode 系统
- Java - 基本运算符
- Java - 注释
- Java - 用户输入
- Java - 日期和时间
Java 控制语句
- Java - 循环控制
- Java - 决策制定
- Java - If-else
- Java - Switch
- Java - For 循环
- Java - For-Each 循环
- Java - While 循环
- Java - do-while 循环
- Java - Break
- Java - Continue
面向对象编程
- Java - OOPs 概念
- Java - 对象和类
- Java - 类属性
- Java - 类方法
- Java - 方法
- Java - 变量作用域
- Java - 构造函数
- Java - 访问修饰符
- Java - 继承
- Java - 聚合
- Java - 多态
- Java - 重写
- Java - 方法重载
- Java - 动态绑定
- Java - 静态绑定
- Java - 实例初始化块
- Java - 抽象
- Java - 封装
- Java - 接口
- Java - 包
- Java - 内部类
- Java - 静态类
- Java - 匿名类
- Java - 单例类
- Java - 包装类
- Java - 枚举
- Java - 枚举构造函数
- Java - 枚举字符串
Java 内置类
Java 文件处理
Java 错误和异常
- Java - 异常
- Java - try-catch 块
- Java - try-with-resources
- Java - 多重 catch 块
- Java - 嵌套 try 块
- Java - finally 块
- Java - throw 异常
- Java - 异常传播
- Java - 内置异常
- Java - 自定义异常
Java 多线程
- Java - 多线程
- Java - 线程生命周期
- Java - 创建线程
- Java - 启动线程
- Java - 线程连接
- Java - 线程命名
- Java - 线程调度器
- Java - 线程池
- Java - 主线程
- Java - 线程优先级
- Java - 守护线程
- Java - 线程组
- Java - 关闭钩子
Java 同步
Java 网络编程
- Java - 网络编程
- Java - Socket 编程
- Java - URL 处理
- Java - URL 类
- Java - URLConnection 类
- Java - HttpURLConnection 类
- Java - Socket 类
- Java - 泛型
Java 集合
Java 接口
Java 数据结构
Java 集合算法
高级 Java
- Java - 命令行参数
- Java - Lambda 表达式
- Java - 发送邮件
- Java - Applet 基础
- Java - Javadoc 注释
- Java - 自动装箱和拆箱
- Java - 文件不匹配方法
- Java - REPL (JShell)
- Java - 多版本 Jar 文件
- Java - 私有接口方法
- Java - 内部类菱形运算符
- Java - 多分辨率图像 API
- Java - 集合工厂方法
- Java - 模块系统
- Java - Nashorn JavaScript
- Java - Optional 类
- Java - 方法引用
- Java - 函数式接口
- Java - 默认方法
- Java - Base64 编码解码
- Java - Switch 表达式
- Java - Teeing 收集器
- Java - 微基准测试
- Java - 文本块
- Java - 动态 CDS 归档
- Java - Z 垃圾收集器 (ZGC)
- Java - 空指针异常
- Java - 打包工具
- Java - 密封类
- Java - 记录类
- Java - 隐藏类
- Java - 模式匹配
- Java - 简洁数字格式化
- Java - 垃圾回收
- Java - JIT 编译器
Java 杂项
- Java - 递归
- Java - 正则表达式
- Java - 序列化
- Java - 字符串
- Java - Process API改进
- Java - Stream API改进
- Java - 增强的 @Deprecated 注解
- Java - CompletableFuture API改进
- Java - 流
- Java - 日期时间 API
- Java 8 - 新特性
- Java 9 - 新特性
- Java 10 - 新特性
- Java 11 - 新特性
- Java 12 - 新特性
- Java 13 - 新特性
- Java 14 - 新特性
- Java 15 - 新特性
- Java 16 - 新特性
Java APIs 和框架
Java 类引用
- Java - Scanner
- Java - 数组
- Java - 字符串
- Java - Date
- Java - ArrayList
- Java - Vector
- Java - Stack
- Java - PriorityQueue
- Java - LinkedList
- Java - ArrayDeque
- Java - HashMap
- Java - LinkedHashMap
- Java - WeakHashMap
- Java - EnumMap
- Java - TreeMap
- Java - IdentityHashMap
- Java - HashSet
- Java - EnumSet
- Java - LinkedHashSet
- Java - TreeSet
- Java - BitSet
- Java - Dictionary
- Java - Hashtable
- Java - Properties
- Java - Collection
- Java - Array
Java 有用资源
Java - 数据类型
Java 数据类型定义了不同类型变量、常量、方法参数、返回类型等的数据类型和值范围。数据类型告诉编译器要存储的数据类型和所需的内存。为了存储和操作不同类型的数据,所有变量都必须具有指定的数据类型。
根据变量的数据类型,操作系统分配内存并决定可以在保留的内存中存储什么。因此,通过为变量分配不同的数据类型,可以在这些变量中存储整数、小数或字符。
Java 数据类型分为两大类:
- 基本数据类型
- 引用/对象数据类型
Java 基本数据类型
基本数据类型由语言预定义,并由关键字命名。Java 支持八种基本数据类型。以下是基本数据类型的列表:
byte 数据类型
byte 数据类型是 8 位有符号二进制补码整数,最小值为 -128 (-27),最大值为 127(包含)(27 -1)。
byte 变量的默认值为 0,用于节省大型数组中的空间,这对于整数来说尤其有利,因为 byte 的大小是整数的四分之一。
示例
byte a = 100; byte b = -50;
short 数据类型
short 数据类型是 16 位有符号二进制补码整数,其值范围为 -32,768 (-215) 到 32,767(包含)(215 -1)。与 byte 数据类型一样,short 数据类型也有利于节省内存,因为它比整数占用更少的空间,只有整数的一半大小。
short 变量的默认值为 0。
示例
short s = 10000; short r = -20000;
int 数据类型
int 数据类型是 32 位有符号二进制补码整数,其值范围为 -2,147,483,648 (-231) 到 2,147,483,647(包含)(231 -1)。除非考虑内存问题,否则整数通常用作整数值的默认数据类型。
int 变量的默认值为 0。
示例
int a = 100000; int b = -200000;
long 数据类型
long 数据类型是 64 位有符号二进制补码整数,其值范围为 -9,223,372,036,854,775,808 (-263) 到 9,223,372,036,854,775,807(包含)(263 -1)。当需要比 int 更宽的范围时使用此数据类型,其默认值为 0L。
示例
long a = 100000L; long b = -200000L;
float 数据类型
float 数据类型是单精度 32 位 IEEE 754 浮点表示。它在大型浮点数数组中特别有用,可以节省内存。其默认值为 0.0f。但是,需要注意的是,由于浮点运算中的舍入误差,float 数据类型不适合用于精确值,例如货币。
示例
float f1 = 234.5f;
double 数据类型
double 数据类型是双精度 64 位 IEEE 754 浮点表示,通常用作十进制值的默认数据类型,通常是默认选择。double 数据类型不应用于精确值,例如货币,其默认值为 0.0d。
示例
double d1 = 123.4;
boolean 数据类型
boolean 数据类型表示单个位的信息,可以保存两种可能的值之一:true 或 false。此数据类型用于跟踪真/假条件的简单标志,其默认值为 false。
示例
boolean one = true;
char 数据类型
char 数据类型是单个 16 位 Unicode 字符,它表示来自不同语言和符号的各种字符。范围为 '\u0000'(或 0)到 '\uffff'(或 65,535 包含)。此数据类型主要用于存储单个字符。
示例
char letterA = 'A'
基本数据类型的示例
以下示例显示了我们上面讨论的各种基本数据类型的用法。我们在数值数据类型上使用了加法运算,而 boolean 和 char 变量则按原样打印。
public class JavaTester { public static void main(String args[]) { byte byteValue1 = 2; byte byteValue2 = 4; byte byteResult = (byte)(byteValue1 + byteValue2); System.out.println("Byte: " + byteResult); short shortValue1 = 2; short shortValue2 = 4; short shortResult = (short)(shortValue1 + shortValue2); System.out.println("Short: " + shortResult); int intValue1 = 2; int intValue2 = 4; int intResult = intValue1 + intValue2; System.out.println("Int: " + intResult); long longValue1 = 2L; long longValue2 = 4L; long longResult = longValue1 + longValue2; System.out.println("Long: " + longResult); float floatValue1 = 2.0f; float floatValue2 = 4.0f; float floatResult = floatValue1 + floatValue2; System.out.println("Float: " + floatResult); double doubleValue1 = 2.0; double doubleValue2 = 4.0; double doubleResult = doubleValue1 + doubleValue2; System.out.println("Double: " + doubleResult); boolean booleanValue = true; System.out.println("Boolean: " + booleanValue); char charValue = 'A'; System.out.println("Char: " + charValue); } }
输出
Byte: 6 Short: 6 Int: 6 Long: 6 Float: 6.0 Double: 6.0 Boolean: true Char: A
Java 非基本(引用/对象)数据类型
非基本数据类型不是预定义的。引用数据类型是使用构造函数的类创建的。它们用于访问对象。这些变量声明为特定类型,不能更改。例如,Employee、Puppy 等。
以下是非基本(引用/对象)数据类型:
- 字符串 (String):字符串是Java中的一个类,它表示字符序列。
- 数组 (Arrays):数组是利用基本数据类型创建的,用于存储多个相同类型的值。
- 类 (Classes):类是用户自定义的数据类型,由变量和方法组成。
- 接口 (Interfaces):接口是抽象类型,用于指定一组方法。
任何引用变量的默认值都是 null。引用变量可以用来引用声明类型或任何兼容类型的任何对象。
示例
下面的例子演示了引用(或对象)数据类型。
// Creating an object of 'Animal' class Animal animal = new Animal("giraffe"); // Creating an object of 'String' class String myString = new String("Hello, World!");