深挖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.mzph.cn/bicheng/79286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法学习笔记(Acwing提高课)----动态规划·背包模型(一)

数据结构与算法学习笔记----动态规划背包模型(一) author: 明月清了个风 first publish time: 2025.5.1 ps⭐️背包模型是动态规划中的重要模型,基础课中已对背包模型的几种模版题有了讲解,[链接在这](数据结构与算法学习笔记----背包问题_有 n 件物品…

Java关键字解析

Java关键字是编程语言中具有特殊含义的保留字,不能用作标识符(如变量名、类名等)。Java共有50多个关键字(不同版本略有差异),下面我将分类详细介绍这些关键字及其使用方式。 一、数据类型相关关键字 1. 基…

vue自定义表头内容excel表格导出

1、安装 npm install xlsx file-saver 2、使用 import * as XLSX from xlsx import { saveAs } from file-saverconst exportAccounts (data) > {// 将对象数组转换为 worksheetconst worksheet XLSX.utils.json_to_sheet(data)// 创建 workbook 并附加 sheetconst wor…

鸿蒙NEXT开发组件截图和窗口截图工具类SnapshotUtil(ArkTs)

import { image } from kit.ImageKit; import { componentSnapshot, window } from kit.ArkUI; import { AppUtil } from ./AppUtil; import { ArrayUtil } from ./ArrayUtil;/*** 组件截图和窗口截图工具类* author 鸿蒙布道师* since 2025/04/28*/ export class SnapshotUtil…

C#与SVN的深度集成:实现版本控制自动化管理​

目录 1. 环境准备 2. 创建 C# 工程 3. 引用 SharpSvn 库 4. 编写代码 1. 环境准备 2. 创建 C# 工程 3. 引用 SharpSvn 库 4. 编写代码 5. 代码说明 6. 注意事项 1. 环境准备 首先,需要安装 SharpSvn 库。可以从 SharpSvn 官方网站 下载适合 .NET Framewor…

本文不定期更新,用于收录各种怪异的python脚本

1.计算自然数对数底 a b 1 for n in range(1, 1001):a a * n 1b b * n t a % br . for i in range(1, 1001):t 10if t < b:r 0else:r str(t // b)t % bprint(str(a//b) r) 得到 2.7182818284590452353602874713526624977572470936999595749669676277240766303…

日志之ClickHouse部署及替换ELK中的Elasticsearch

文章目录 1 ELK替换1.1 Elasticsearch vs ClickHouse1.2 环境部署1.2.1 zookeeper 集群部署1.2.2 Kafka 集群部署1.2.3 FileBeat 部署1.2.4 clickhouse 部署1.2.4.1 准备步骤1.2.4.2 添加官方存储库1.2.4.3 部署&启动&连接1.2.4.5 基本配置服务1.2.4.6 测试创建数据库和…

2025年大一ACM训练-搜索

2025年大一ACM训练-搜索 前期知识&#xff1a;DFS&#xff0c;本文搜索题解法以深度优先搜索为主 1.1 DFS 的定义 深度优先搜索&#xff08;Depth-First Search&#xff09;是一种用于遍历树或图的算法。核心思想是尽可能“深入”访问图的每个节点&#xff0c;直到无法继续前进…

Nginx核心功能02

目录 一&#xff0c;正向代理 1&#xff0c;编译安装Nginx &#xff08;1&#xff09;安装支持软件 &#xff08;2&#xff09;创建运行用户&#xff0c;组和日志目录 &#xff08;3&#xff09;编译安装Nginx &#xff08;4&#xff09;添加Nginx系统服务 2&#xff0c…

rk3568安全启动功能实践

本文主要讲述笔者在rk3568芯片上开发安全启动功能实践的流程。其中主要参考瑞芯微官方文档《Rockchip_Developer_Guide_Secure_Boot_for_UBoot_Next_Dev_CN.pdf》。文档中描述逻辑不是很清晰而且和当前瑞芯微的sdk中安全启动的流程匹配度不高。本文就不再对瑞芯微官方文档的内容…

[操作系统] 线程互斥

文章目录 背景概念线程互斥的引出互斥量锁的操作初始化 (Initialization)静态初始化动态初始化 加锁 (Locking)阻塞式加锁非阻塞式加锁 (尝试加锁/一般不考虑) 解锁 (Unlocking)销毁 (Destruction)设置属性 (Setting Attributes - 通过 pthread_mutex_init) 锁本身的保护互斥锁…

【神经网络与深度学习】两种加载 pickle 文件方式(joblib、pickle)的差异

引言 从深度学习应用到数据分析的多元化需求出发&#xff0c;Python 提供了丰富的工具和模块&#xff0c;其中 pickle 和 joblib 两种方式在加载数据文件方面表现尤为突出。不同场景对性能、兼容性以及后续处理的要求不尽相同&#xff0c;使得这两种方式各显优势。本文将通过深…

Electron 入门指南

Electron 入门指南 Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用的框架。通过 Electron&#xff0c;你可以利用 Web 技术开发出功能强大的桌面应用程序&#xff0c;并且能够运行在 Windows、Mac 和 Linux 系统上。 本文将带你从零开始构建一个简单的 Ele…

编程中如何与AI交互-结构化输入和理解确认机制

一 结构化输入是什么 &#x1f4cc; 结构化输入的定义&#xff1a; 结构化输入是指以清晰、分层、有逻辑的格式向 AI 输入信息&#xff0c;使其更容易解析内容、抓住重点&#xff0c;并准确回答问题。 &#x1f4e6; 举个例子&#xff08;编程场景&#xff09;&#xff1a; 非…

13:傅里叶变换

傅立叶变换(FT, Fourier Transform)的作用是将一个信号由时域变换到频域。其实就是把数据由横坐标时间、纵坐标采样值的波形图格式&#xff0c;转换为横坐标频率、纵坐标振幅(或相位)的频谱格式。换后可以很明显地看出一些原先不易察觉的特征。 有些信号在时域上是很难看出什么…

基于单片机的音频信号处理系统设计(一)

项目名称:基于单片机的音频信号处理系统设计学院名称:信息学院学生姓名:学号专业年级:指导教师:教师职称:教授企业导师:目 录 摘 要 Abstract 1 前言 1.1研究背景与意义 <

机器学习实操 第一部分 机器学习基础 第8章 降维技术

机器学习实操 第一部分 机器学习基础 第8章 降维技术 内容概要 第8章探讨了降维技术&#xff0c;这些技术在处理高维数据时至关重要。高维数据不仅会使训练过程变得极其缓慢&#xff0c;还会增加找到良好解决方案的难度&#xff0c;这就是所谓的维度灾难问题。幸运的是&#…

微信小程序 XSS 防护知识整理

场景1&#xff1a;用户输入表单&#xff08;如评论框&#xff09; 错误做法&#xff1a;直接渲染未过滤的用户输入 // WXML <view>{{ userInput }}</view>// JS&#xff08;用户输入了恶意内容&#xff09; Page({data: { userInput: <script>alert("…

MySQL 服务搭建

&#x1f4a2;欢迎来到张翊尘的开源技术站 &#x1f4a5;开源如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 在线安装Ubuntu/Debian更新系统包索引安装 MySQL …

【Java面试笔记:进阶】23.请介绍类加载过程,什么是双亲委派模型?

Java的类加载机制是JVM的核心组成部分,其过程分为三个阶段,并采用双亲委派模型来保证类加载的安全性和一致性。 1.类加载过程 1.加载阶段(Loading) 核心任务:查找并加载类的二进制字节流(如.class文件)。具体行为: 将字节码数据从不同数据源(如文件系统、网络等)读…