Java变量及其数据类型以及转换_6
变量
- 变量基本描述
变量是内存中的一块存储区域,用于保存数据 |
---|
每个变量都有一个 数据类型,决定了变量可以存储的数据种类和范围 |
变量必须需要通过声明来定义,然后才能使用 |
变量的三要素:数据类型、变量名、值 |
变量命名规则: 1. 变量名必须以字母、下划线( _ )或美元符号($ )开头2. 变量名不能以数字开头 3.变量名不能包含空格或特殊字符(如 @ 、# 等)4. 变量名不能是 Java 的关键字(如 int 、class 等)5. 变量名应遵循 驼峰命名法 |
- 变量的作用域
作用域 | 声明方式 |
---|---|
局部变量(Local Variable) | 1. 在方法、构造函数或代码块中声明的变量 2. 作用域仅限于声明它的方法、构造函数或代码块 3. 必须在使用前初始化 |
实例变量(Instance Variable) | 1. 在类中声明,但在方法、构造函数或代码块之外 2. 作用域是整个类 3. 如果不初始化,会有默认值 |
静态变量(Static Variable) | 1. 使用 static 关键字声明的变量2. 作用域是整个类,且所有实例共享同一个静态变量 3. 如果不初始化,会有默认值 |
变量的数据类型
- 基本数据类型
数据类型 | 大小 | 默认值 | 描述 |
---|---|---|---|
byte 字节 | 1 字节 | 0 | 8 位有符号整数(-128 到 127) |
short | 2 字节 | 0 | 16 位有符号整数(-32,768 到 32,767) |
int | 4 字节 | 0 | 32 位有符号整数(-2^31 到 2^31-1)默认的整数类型 |
long | 8 字节 | 0L | 64 位有符号整数(-2^63 到 2^63-1) |
float | 4 字节 | 0.0f | 32 位单精度浮点数(约 6-7 位有效数字) |
double | 8 字节 | 0.0d | 64 位双精度浮点数(约 15 位有效数字)默认的浮点类型 有效数字 是指一个数值中从第一个非零数字开始,到最后一位数字的所有数字 |
char 字符 | 2 字节 | '\u0000' | 16 位 Unicode 字符(0 到 65,535) |
boolean | 1 位 | false | 布尔值(true 或 false) |
- 引用数据类型
引用数据类型特点 | 1. 引用数据类型的变量存储的是对象在内存中的地址,而不是对象本身 2. 如果引用数据类型的变量未初始化,其默认值为 null |
---|---|
引用数据类型的分类 | 主要分为三类: 1. 类(Class):例如 String 、Integer 等2. 数组(Array):例如 int[] 、String[] 等3. 接口(Interface):例如 List 、Map 等 |
基本数据类型转换
转换类型 | 详细信息 |
---|---|
自动类型转换(隐式转换) | 当小范围数据类型赋值给大范围数据类型时,Java 会自动进行类型转换,无需显式操作 从小范围类型到大范围类型的转换是安全的,不会丢失数据 转换方向: byte -> short -> int -> long -> float -> double char -> int -> long -> float -> double |
强制类型转换(显式转换) | 当大范围数据类型赋值给小范围数据类型时,需要显式进行强制类型转换 强制类型转换可能会导致数据丢失或精度降低 目标类型 变量名 = (目标类型) 值; |
字符类型转换 | char 的本质是一个无符号整数,因此可以直接与整数类型进行转换 char类型可以自动转换为 int、long、float 或 double 将 int、long、float或 double转换为 char 时,需要强制类型转换 |
表达式中的类型转换 | 在表达式中,Java 会自动将操作数转换为较大的数据类型,然后再进行计算 例如:int 和 double相加时,int 会自动转换为 double 如果表达式中包含多种数据类型,最终结果的数据类型是最大的数据类型 转换的方向遵循 byte -> short -> int -> long -> float -> double |
关于类型转换的一些知识点 |
---|
在给byte、short、char赋整数值的时候,如果为int类型具体值,则判断范围,如果为变量则直接判断类型 |
(byte、short)和char类型之间不能自动转换 |
byte、short、char之间可以进行计算,都会转成int进行计算 |
强制转换只针对最近的操作数 |
基本数据类型和String的转换
- 基本数据类型 → String
- 使用 String.valueOf(),String.valueOf() 是一个静态方法,可以将任何基本数据类型转换为 String
int num = 123;
double pi = 3.14;
char ch = 'A';
String str1 = String.valueOf(num); // 将 int 转换为 String
String str2 = String.valueOf(pi); // 将 double 转换为 String
String str3 = String.valueOf(ch); // 将 char 转换为 String
System.out.println(str1); // 输出 "123"
System.out.println(str2); // 输出 "3.14"
System.out.println(str3); // 输出 "A"
- 使用+运算符
通过将基本数据类型与空字符串 "" 相加,可以将其隐式转换为 String
int num = 456;
double pi = 3.14159;
char ch = 'B';
String str1 = num + ""; // 将 int 转换为 String
String str2 = pi + ""; // 将 double 转换为 String
String str3 = ch + ""; // 将 char 转换为 String
System.out.println(str1); // 输出 "456"
System.out.println(str2); // 输出 "3.14159"
System.out.println(str3); // 输出 "B"
System.out.println(100+1+"abc");// 输出 "101abc"
System.out.println("abc"+100+1);// 输出 "abc1001"
- 使用 toString() 方法(仅适用于包装类)对于基本数据类型的包装类(如 Integer、Double 等),可以直接调用 toString() 方法
Integer num = 789;
Double pi = 3.1415926;
String str1 = num.toString(); // 将 Integer 转换为 String
String str2 = pi.toString(); // 将 Double 转换为 String
System.out.println(str1); // 输出 "789"
System.out.println(str2); // 输出 "3.1415926"
- String → 基本数据类型
- 将 String 类型转换为基本数据类型,通常需要使用包装类的静态方法。每个基本数据类型都有对应的包装类,提供了 parseXxx() 方法用于将 String 转换为基本数据类型。
String str1 = "123";
String str2 = "3.14";
String str3 = "true";
int num = Integer.parseInt(str1); // 将 String 转换为 int
double pi = Double.parseDouble(str2); // 将 String 转换为 double
boolean flag = Boolean.parseBoolean(str3); // 将 String 转换为 boolean
System.out.println(num); // 输出 123
System.out.println(pi); // 输出 3.14
System.out.println(flag); // 输出 true
- 使用 valueOf() 方法(返回包装类对象。valueOf() 方法将 String 转换为包装类对象,然后可以自动拆箱为基本数据类型。
String str1 = "456";
String str2 = "2.718";
int num = Integer.valueOf(str1); // 将 String 转换为 Integer,然后自动拆箱为 int
double pi = Double.valueOf(str2); // 将 String 转换为 Double,然后自动拆箱为 double
System.out.println(num); // 输出 456
System.out.println(pi); // 输出 2.718
- 如果 String 无法转换为目标类型(例如包含非数字字符),会抛出 NumberFormatException。因此,通常需要捕获异常或进行校验
String str = "abc";
try {
int num = Integer.parseInt(str);
System.out.println(num);
} catch (NumberFormatException e) {
System.out.println("转换失败:字符串不是有效的数字");
}
- String 转 char:使用 charAt() 方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端