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

深挖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 编程的基础,合理选择类型能提升代码效率和可读性。

相关文章:

  • npm命令介绍(Node Package Manager)(Node包管理器)
  • 实验三 软件黑盒测试
  • 人工智能100问☞第14问:人工智能的三大流派(符号主义、联结主义、行为主义)有何区别?
  • C和指针笔记2——编译、链接
  • 攻防世界 dice_game
  • 模型开发之前的核心工作
  • 黄雀在后:外卖大战新变局,淘宝+饿了么开启电商大零售时代
  • Java大师成长计划之第9天:高级并发工具类
  • 存储器层次结构:理解计算机记忆的金字塔
  • 模型之FIM(Fill-In-the-Middle)补全
  • 12.多边形的三角剖分 (Triangulation) : Fisk‘s proof
  • 销售预测业务优化设计方案汇报P99(99页PPT)(文末有下载方式)
  • 总结C++中的STL
  • C++笔记-继承(下)(包含派生类的默认成员函数,菱形继承等)
  • 代码随想录单调栈part1
  • 使用CubeMX新建DMA工程——存储器到存储器模式
  • 计网_PPP协议
  • MOOS-ivp使用(一)——水下机器人系统的入门与使用
  • 【STM32单片机】#12 SPI通信(软件读写)
  • Ollama 本地运行 Qwen 3
  • 用小型核反应堆给数据中心供电,国内企业正在开展项目论证
  • 天津航空一航班盘旋14圈才降落,客服:因天气影响
  • 今年4月上海一二手房成交面积同比增21%,二手房成交2.07万套
  • 长三角铁路今日预计发送旅客420万人次,有望创单日客发量新高
  • 光明日报社论:用你我的匠心,托举起繁盛的中国
  • 国家网信办举办在欧中资企业座谈会,就数据跨境流动等进行交流