当前位置: 首页 > backend >正文

深挖Java基础之:变量与类型

今天我要介绍的是在Java中对变量和类型的一些相关知识点的介绍,包括对基本数据类型,引用类型,变量命名规则和类型转换以及其注意事项的解明。

java变量与类型:Java 是静态类型语言,变量必须先声明类型后使用。变量是存储数据值的容器,而类型决定了变量能存储的数据种类、内存大小及可执行的操作。

基本数据类型:(见下表表格所示)

基本数据类型八种数据类型的表格展示说明:

1. 整型(整数)
类型位数取值范围示例
byte8-128 ~ 127byte b = 100;
short16-32768 ~ 32767short s = 500;
int32-2³¹ ~ 2³¹-1int age = 25;
long64-2⁶³ ~ 2⁶³-1long big = 100L;
2.浮点型(小数)
类型位数精度示例
float32约 6-7 位小数float pi = 3.14f;
double64约 15 位小数double price = 19.99;
3.字符型(单个字符)
类型位数说明示例
char16Unicode 字符char c = 'A'; 
4.布尔型(逻辑值)
类型位数取值示例
boolean1true/falseboolean flag = true;

引用类型

引用类型变量存储的是对象的内存地址(引用),而非直接的值。常见类型:

String(字符串):

String name = "Alice"; // 双引号包裹
String message = "Hello, " + name; // 拼接字符串

数组:

int[] numbers = {1, 2, 3};       // 一维数组
String[][] names = {{"Tom", "Jerry"}, {"Alice"}}; // 二维数组

注:二维数组介绍:

二维数组是由多个一维数组组成的数组,每个一维数组都可以有不同的长度。在这个例子中,names是一个二维数组,它包含两个一维数组。第一个一维数组包含两个元素 "Tom" 和 "Jerry",第二个一维数组只包含一个元素 "Alice"。可以把二维数组看作是一个表格或者是一个矩阵,其中每个元素都可以通过两个索引来访问,第一个索引表示行,第二个索引表示列。

类对象:

// 自定义类:
class Person {
    String name;
    int age;
}
Person p = new Person(); // 创建对象
p.name = "Bob";          // 访问成员变量

介绍:类对象是面向对象编程中的一个重要概念,它是指在程序中定义的一种数据结构,用来表示一类具有相似属性和行为的对象。类对象包含了数据成员和方法成员,数据成员用来描述对象的状态,而方法成员则定义了对象的行为。

变量命名规则

  1. 合法字符:字母、数字、_$,但不可以数字开头

  2. 区分大小写age 和 Age 是不同的变量。

  3. 驼峰命名法:如 studentName

  4. 1:驼峰命名法:CamelCase(驼峰命名法)是一种变量命名规则,其特点是在命名时使用连续的单词,并且每个单词的首字母大写,除了第一个单词之外。这种命名规则使得变量名更易阅读和理解,通常用于编程语言中的变量、函数名或类名的命名。例如,"myVariableName"就是一个使用了驼峰命名法的变量名。
  5. 禁止关键字:如 intclass 不可作为变量名。

正示例:

int count = 10;
String user_name = "Lucy";
double $price = 29.99;

倒示例:

int 2num = 5;    // 以数字开头
float class = 3.14f; // 使用关键字

类型转换

1. 自动类型转换(隐匿)

小范围类型 → 大范围类型时自动转换:

int a = 100;
long b = a;       // 自动转为 long
double c = b;     // 自动转为 double
2.强制类型转换(凸显)

大范围类型 → 小范围类型时需强制转换,可能丢失精度:

long x = 1000L;
int y = (int) x;   // 强制转换
double d = 3.14;
int i = (int) d;   // i = 3(小数部分丢失)

注意事项

变量初始化:局部变量得显式初始化,不然编译结果会显示报错。

int x; // 错误!未初始化
int y = 0; // 正确

 注:默认值==》成员变量有默认值(如 int 默认为 0,引用类型默认为 null)。

字符串拼接+ 可将其他类型自动转为字符串=》

String info = "价格:" + 19.99; // "价格:19.99"

代码示例:

1.基本类型 vs 包装类

  基本类型高效,但无法用于泛型;包装类( 比如:Integer)提供对象操作:

int primitive = 42;
Integer wrapper = Integer.valueOf(42); // 装箱
int unboxed = wrapper.intValue(); // 拆箱
2.字符串与类型转换

  引用类型的常见操作: 

String s = "123";
int num = Integer.parseInt(s); // 字符串转int

 优势与劣势:

①:优势
  1. 类型安全:静态类型在编译时检查错误,减少运行时问题。

  2. 性能优化:基本类型直接存储在栈内存,访问速度快。

  3. 清晰的代码结构:类型声明增强代码可读性。

  4. 面向对象支持:引用类型支持多态、继承等特性。

②:劣势
  1. 冗长的类型声明:需显式声明类型,代码不够简洁(对比动态类型语言)。

  2. 基本类型与包装类的复杂性:需处理自动装箱/拆箱(可能引发 NullPointerException)。

  3. 类型转换风险:强制转换可能导致数据丢失或运行时错误。

总结:Java 的类型系统通过严格的静态类型检查保障了代码的健壮性,但牺牲了一定的灵活性。开发者需在类型选择、转换和内存管理中权衡性能与安全性。掌握变量与类型是 Java 编程的基础,合理选择类型能提升代码效率和可读性。

http://www.xdnf.cn/news/3370.html

相关文章:

  • 总结C++中的STL
  • 分布式事务,事务失效,TC事务协调者
  • 图数据库榜单网站
  • 算法每日一题 | 入门-顺序结构-字母转换
  • X²+1素数问题
  • DirectX12(D3D12)基础教程七 深度模板视图\剔除\谓词
  • 【数据结构与算法】跳表实现详解
  • Windows结合WSL之ext4.vhdx不断增大问题
  • 第九节:文件操作
  • C++漫游指南——字符串篇与内存分配篇
  • ganesha-DBUS
  • 人形机器人的 “灵动密码”:动作捕捉与 AI 如何为其注入活力
  • BOSS的收入 - 华为OD机试(A卷,Java题解)
  • React-Native Android 多行被截断
  • Ubuntu 22.04 的 ROS 2 和 Carla 设置指南(其一)
  • Multicore-TSNE
  • 如何用GPU Instancing来优化树木草石重复模型
  • Kubernetes 配置中的 Selector 详解
  • GPU集群搭建步骤
  • 基础术语说明
  • 前端项目问题:TypeError: Failed to fetch dynamically imported module
  • 数据结构---【二叉搜索树】
  • Canvas基础篇:图形绘制
  • 工业质检领域相关近期顶会论文汇总CVPR2025
  • SALOME源码分析: SMESH模块
  • 2025-04-30 AIGC-如何做短片视频
  • 科学数据可视化工具库visIt安装和使用
  • 阿里云短信接入实现示例
  • IsaacLab最新2025教程(7)-创建Interactive Scene
  • Socket-UDP