深挖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.mfbz.cn/a/188.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL数据库操作SQL

数据库操作SQL 创建 创建数据库 create database db_test;创建并指定相关参数 with owner : 所有者encoding : 编码connection limit :连接限制 create database db_test1 with owner postgresencoding utf-8connection limit 100;修改 修改数据库名称 renam…

Java 泛型参数问题:‘ResponseData.this‘ cannot be referenced from a static contex

问题与处理策略 问题描述 Data AllArgsConstructor NoArgsConstructor public class ResponseData<T> {private Integer code;private String msg;private T data;public static final int CODE_SUCCESS 2001;public static final int CODE_FAIL 3001;public static …

从工厂到生活:算法 × 深度学习,正在改写自动化的底层逻辑

一.背景&#xff1a; 从工业革命时期的机械自动化&#xff0c;到信息时代的智能自动化&#xff0c;人类对自动化技术的追求从未停歇。近年来&#xff0c;随着物联网、大数据、云计算等技术的蓬勃发展&#xff0c;自动化系统的复杂度与智能化程度显著提升。算法与深度学习的深度…

spring 从application.properties中获取参数的四种方式

在Spring Boot中&#xff0c;自定义一个Starter时&#xff0c;从application.properties中获取参数主要有以下几种方法&#xff1a; 使用Value注解 这是最常用的方法之一&#xff0c;通过Value注解可以直接将application.properties中的属性值注入到Spring管理的Bean中。 imp…

2025华东杯B题华东杯数学建模思路代码成品讲解工序安排问题

完整内容请看文章最下面的推广群 我将展示完整的文章、代码和结果 工序安排问题 摘要 本文研究的核心是制造业中的工序安排优化问题&#xff0c;源自实际生产管理中常见的资源分配挑战。问题背景设定为一家拥有100名工人和三条相同服装生产线的成衣制造厂&#xff0c;涉及裁…

Solon Cloud Gateway 补充

说明 在「使用 Solon Cloud Gateway 替换Spring Cloud Gateway 」的文章中&#xff0c;有评论说不知道响应式。当时看的是 Solon Cloud Gateway 使用响应式接口&#xff0c;由 Solon-Rx 来实现&#xff0c;是基于 reactive-streams 封装的 RxJava 极简版。目前仅一个接口 Com…

腾讯云CodeBuddy初体验

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴”&#xff1b; 最近AI编程很火&#xff0c;据说我司程序员现在每天可以准点下班&#xff0c;AI起到了很大的作…

K8S - 命名空间实战 - 从资源隔离到多环境管理

引言 在传统的物理机或虚拟机环境中&#xff0c;不同业务应用共享资源&#xff0c;容易导致权限冲突、资源争用和管理混乱。Kubernetes 通过 命名空间&#xff08;Namespace&#xff09;实现资源逻辑隔离&#xff0c;将集群划分为多个虚拟子集群&#xff0c;从而解决以下问题&…

《多端统一的终极答案:X5内核增强版的渲染优化全解析》

跨端应用的需求呈爆发式增长&#xff0c;无论是电商购物、社交互动&#xff0c;还是金融理财类应用&#xff0c;都期望能够在不同平台上为用户提供一致且流畅的体验。而在这一过程中&#xff0c;跨端渲染技术成为了关键瓶颈。腾讯X5内核增强版的出现&#xff0c;犹如一道曙光&a…

1.5 点云数据获取方式——双目立体相机

图1-5-1 双目立体相机 双目相机通过模拟人眼立体视觉,利用两个摄像头的视差信息计算物体深度,进而生成 3D 点云,具有成本低、体积小、信息丰富等优势,成为中

JavaScript高级进阶(五)

操作节点属性 设置属性&#xff08;先找属性再操作&#xff09; setAttribute()方法添加指定的属性&#xff0c;并为其赋指定的值 语法&#xff1a; element.setAttribute(attributename/属性名,attributevalue/属性值) 例: <style> .box{ width: 200px; height: 200p…

数据结构每日一题day13(链表)★★★★★

题目描述&#xff1a;采用尾插法在头指针L处建立一个带头结点的单链表,输入-1表示结束结果返回建立的单链表。 算法思想&#xff1a; 1.初始化链表&#xff1a;创建一个头结点&#xff08;不存储实际数据&#xff09;&#xff0c;头指针 L 指向该头结点。初始时&#xff0c;头…