java开发入门学习二 - 变量
目录
一 关键字
编辑 二 标识符
三 变量
变量数据类型
变量注意点
四 数据类型
前置知识 - 计算机存储单位
整型数据类型
浮点数据类型
字符数据类型
布尔数据类型
五 数据类型间的计算
基本数据类型之间的计算
自动类型提升
强制类型转换
引用数据类型 Sting 类 与 基本数据类型之前的计算
一 关键字
定义: 被java赋予了特殊含义的,用做专门用途的字符串或单词(与前端定义一样,如const let 等)
注意: 全是小写
官方地址: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
二 标识符
定义: java中变量,方法,类名等命令时的符号为标识符(凡是需要自定义名称的地方)
标识符命名规则:
1.只能由26个英文字母大小写,0-9,_或$组成
2. 数字不能开头
3. 不可以使用关键字和保留字
4.严格区分大小写,长度无限制
5. 标识符不能包含空格
备注: 总的来说标识符的命名规则和前端区别不大,但是后端java有很多自己的小的命名规范
1. 包名: 多单词组成时所有字母小写
例如: java.lang com.baidu
2.类名接口名:多单词所有单词的首字母大写 XxxYyyZzz
例如:HelloWord, String,System
3.变量名,方法名:多单词第一个单词首字母小写,第二个单词首字母大写xxxYyyZzz
例如: name,age,gender,bookName,getName
4.常量名:所有字母都大写,多单词下划线连接
例如:MAX_VALUE,PI
三 变量
定义: 内存中的一个存储区域,该区域的数据在同一类型范围不断变换
定义格式: 数据类型 变量名 = 变量值
变量数据类型
1.基本数据类型
- 整型:byte / short / int / long
- 浮点型:float / double
- 字符型:char
- 布尔型:boolean
2.引用数据类型
- 类:class
- 数组:array
- 接口 interface
- 枚举:enum
- 注解:annotation
- 记录: record
备注:与前端一样,数据也分为基本数据类型和引用数据类型,但是不同的是,前端是一门弱类型的语法,只需要大致定义变量var const等,不需要将数据类型定义出来。java是一门强类型的定义变量的语言,定义变量需定义出数据类型
变量注意点
1. 与前端一样,变量也有自己的作用域,出作用域就失效
2. 同一个作用域,不能声明两个同名变量
3. 变量在赋值时,必须满足变量的数据类型和数据类型有效的范围内变化
class Test {public static void main(String[] args) {// 定义变量char gender;// 变量赋值gender = '女';// 定义和赋值变量int age = 18;System.out.println("性别:" + gender);System.out.println("年龄:" + age);}
}
四 数据类型
前置知识 - 计算机存储单位
字节(byte): 是计算机存储容量的基本单位,一个单位为8个bit
位(bit):是数据存储的最小单位,二进制中每个0或1就是一个位,为bit.8个bit就是一个字节
转换关系
- 8bit = 1Byte
- 1024Byte = 1KB
- 1024KB = 1MB
- 1024MB = 1GB
- 1024GB = 1 TB
整型数据类型
类型:byte short int long
不同的整型类型有固定的表数范围和字段长度,如下
注意:
1. 定义long类型的变量,赋值需要以l或L作为后缀
2. java中定义变量通常声明为int,除非较大的数,才使用long
3. java的整型常量默认为int
浮点数据类型
类型:float double
不同的浮点数据类型固定的表数范围和字段长度
浮点型的常量有两种表示范围
- 科学计数法:5.12e2, 512E2, 100E2
- 十进制表示法: 5.12, 512.0f, .512 (必须有小数点)
注意:
1. float:单精度,尾数可以精确到7位有效数字
2. double:双精度,精度是float的两倍
3. 定义float类型,赋值要以f或F结尾
4. java的浮点型常量通常定义为double
5. 并不是所有的小数都可以精确二进制浮点数,二进制浮点数不能精确表示0.1,0.01,0.001这样10的负次幂(和前端一样0.1 + 0.2 != 0.3)
6.float和double均不适合不允许四舍五入的金融计算领域,要精确数字需要使用BigDecimal类
class Test2 {public static void main(String[] args) {float f1 = 1234f;float f2 = f1 + 1;System.out.println(f1);System.out.println(f2);System.out.println(f1 == f2); // false}
}
字符数据类型
char: 通常意义的字符,占2个字节和short(可以简单理解为前端的string类型)
定义字符的3种方式
class Test3 {public static void main(String[] args) {// 第一种 '' 定义单个字符(''中有且只有一个字符)char c1 = 'a';char c2 = '中';char c3 = '1';// 这个1 代码的是ASCII码值,对应的ASCII表示的字符char c4 = 1;// char c1 = '' 错误// 第二种 使用unicode编码char c5 = '\u0023';// 第三种,使用转义字符char c6 = '\n';}
}
布尔数据类型
boolean数据类型是用于判断逻辑的,只有true和false两种值;(和其他语法不同,0和非0都不行)
扩展:java虚拟机中没有提供任何boolean值专用的字节码指令,java语法所表达的boolean值,在编译之后,虚拟机会用int来表示,true为1表示,false用0表示,因此真正内存分配,也是占用4个字节
五 数据类型间的计算
基本数据类型之间的计算
以下都不包含boolean
自动类型提升
数据与数据之间计算,将取值范围小(或容量小)的类型自动提升为取值范围大的(或容量大的)类型
一般来说转换
byte,short,char ---> int ----> long ---->float ---->double
注意: 1 byte,short ,char 进行计算都会是int类型
2. 此时的容量大小,并非指的是占用内存空间,而是代表数据范围大小
class UpVar {public static void main(String[] args) {byte b1 = 10;byte b2 = 12;int i1 = b1 + b2; // 必须用int接收char c1 = 'a';byte b4 = 4;int i2 = c1 + b4; // 必须用int接收long l1 = 123L;long l2 = 123; // 自动类型提升 int-->longfloat f3 = 12.3; // 报错 12.3为double类型,不满足自动提升 }
}
强制类型转换
将取值范围大(或容量大)的类型自动提升变为取值范围小的(或容量小的)类型
注意:
1. 强制类型转换,需要使用强制转换符()
2. 强制类型转换会造成精度丢失
class Compel {public static void main(String[] args) {double d1 = 12.9;int i = (int)d1;int i2 = 128;byte b1 = (byte)i2; // -128}
}
解释案例2 :-128
int 128在数据存储时候为4个字节32位bit -》 0000 0000 0000 0000 0000 0000 1000 0000
截取为bit后精度丢失== 1000 0000 ==》在转换为10进制 -128
其他思考
为什么标识符不能声明为数字开头
如: int 124L = 12; long l = 124L ; 此时124L到底是变量还值会存在歧义
引用数据类型 Sting 类 与 基本数据类型之前的计算
String类,是引用类型也叫字符串(与前端不同,前端的String为基本数据类型)。
String与其他类型(所有基本类型)进行计算,是一种连接运算。
class CompleStr {public static void main(String[] args) {String str = "";String str1 = "aaa";boolean b1 = true;int i1 = 12;String str2 = str + b1;// String str3 = b1 + i1 + str2; // 编译不通过,不能将boolean可以基本数据计算String str4 = "1";// 将其他数据类型转换为StringInteger.parseInt(str4);}
}
相关文章:

java开发入门学习二 - 变量
目录 一 关键字 编辑 二 标识符 三 变量 变量数据类型 变量注意点 四 数据类型 前置知识 - 计算机存储单位 整型数据类型 浮点数据类型 字符数据类型 布尔数据类型 五 数据类型间的计算 基本数据类型之间的计算 自动类型提升 强制类型转换 引用数据类型 Sti…...

Qt Q_ENUM enum 转 QString 枚举字符串互转; C++模板应用
Part1: Summary 项目中我们常用到命名,使用 enum 转成 string ,方便简洁;Qt给我们提供了一个很方便的功能 Q_ENUM,可以实现枚举字符串互转; Q_ENUM宏将枚举注册到元对象系统中; QMetaEnum::fromType获取枚…...

0004.基于springboot+elementui的在线考试系统
适合初学同学练手项目,部署简单,代码简洁清晰; 愿世界和平再无bug 一、系统架构 前端:vue| elementui 后端:springboot | mybatis-plus 环境:jdk1.8 | mysql | maven 二、登录角色 1.管理员 2.老师 …...

基于 iAP2 协议 的指令协议,用于对安防设备的 MCU 进行操作
协议设计目标 1. 安全性:通过 iAP2 协议与 MCU 设备进行安全通信。 2. 通用性:支持对安防设备的常见功能进行操作,如状态查询、设备控制、参数配置等。 3. 高效性:数据结构简洁清晰,易于解析和扩展。 4. 扩展性&#x…...

02-5.python入门基础一控制流(while)
Python 控制流是指控制程序执行顺序的机制,它允许程序根据不同的条件和情况执行不同的代码块或重复执行某些代码。 while 循环的用法与示例 语法结构及要点 在 Python 中,while循环是一种基于条件判断的循环结构,其语法构成如下:…...

Go语言开发入门与实战
Go语言(简称Golang)由Google开发,是一门现代化的编程语言,因其简洁高效、并发支持友好、跨平台特性而在后端服务开发、云计算等领域大放异彩。本文将介绍Go语言的基本特点、开发环境配置,并通过一个简单的实战项目带领大家快速上手。 一、Go语言的特点 简单易学:语法简洁…...

HarmonyOS Next应用开发实战:ArkWeb组件使用介绍及使用举例
ArkWeb简介 ArkWeb(方舟Web)是HarmonyOS Next中提供的一个Web组件,主要用于在应用程序中显示Web页面内容。这个组件使得开发者可以在HarmonyOS应用中嵌入Web页面,从而降低开发成本,提升开发和运营效率。 使用场景 A…...

【已解决】在Visual Studio里将应用与Microsoft Store关联时提示网络异常
发布Windows应用时。在Visual Studio里点击"发布“,将应用与Microsoft Store关联时,一直提示网络错误。 查了一下论坛,发现之前也经常出现,但我是第一次遇到。 不能就这样一直被卡着呀,研究了一下,还…...

springcloud-gateway获取应用响应信息乱码
客户端通过springcloud gateway跳转访问tongweb上的应用,接口响应信息乱码。使用postman直接访问tongweb上的应用,响应信息显示正常。 用户gateway中自定义了实现GlobalFilter的Filter类,在该类中获取了上游应用接口的响应信息,直…...

[笔记]关于Qt的nativeEvent事件无法接收window消息的Bug
1.nativeEvent事件无法接收window消息 此处不是nativeEvent不能接收,是possmessage一定要写对发送的软件名称,这个名称在Qt中是主界面类的名称,就是主界面UI的名称,而不是rc文件中定义的名称。 所以在FindWindow函数获取目标窗口…...

LeetCode 热题 100_K 个一组翻转链表(31_25_困难_C++)(四指针法)
LeetCode 热题 100_K 个一组翻转链表(31_25) 题目描述:输入输出样例:题解:解题思路:思路一(四指针法): 代码实现代码实现(思路一(四指针法&#x…...

Pytorch | 从零构建MobileNet对CIFAR10进行分类
Pytorch | 从零构建MobileNet对CIFAR10进行分类 CIFAR10数据集MobileNet设计理念网络结构技术优势应用领域 MobileNet结构代码详解结构代码代码详解DepthwiseSeparableConv 类初始化方法前向传播 forward 方法 MobileNet 类初始化方法前向传播 forward 方法 训练和测试训练代码…...

CSS系列(18)-- 工程化实践详解
前端技术探索系列:CSS 工程化实践详解 🏗️ 致读者:探索 CSS 工程化之路 👋 前端开发者们, 今天我们将深入探讨 CSS 工程化实践,学习如何在大型项目中管理 CSS。 工程化配置 🚀 项目结构 …...

日拱一卒(18)——leetcode学习记录:二叉树中的伪回文路径
一、题目 给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。 请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。 二、思路 …...

hive—炸裂函数explode/posexplode
1、Explode炸裂函数 将hive某列一行中复杂的 array 或 map 结构拆分成多行(只能输入array或map) 语法: select explode(字段) as 字段命名 from 表名; 举例: 1)explode(array)使得结果中将array列表里的每个元素生…...

SpringBoot 新特性
优质博文:IT-BLOG-CN 2.1.0新特性最低支持jdk8,支持tomcat9 对响应式编程的支持,spring-boot-starter-webflux starter POM可以快速开始使用Spring WebFlux,它由嵌入式Netty服务器支持 1.5.8 2.1.0/2.7.0/3.0.0 Configuration propertie…...

鸿蒙app封装 axios post请求失败问题
这个问题是我的一个疏忽大意,在这里记录一下。如果有相同问题的朋友,可以借鉴。 当我 ohpm install ohos/axios 后,进行简单post请求验证,可以请求成功。 然后,我对axios 进行了封装。对axios 添加请求拦截器/添加响…...

消息队列 Kafka 架构组件及其特性
Kafka 人们通常有时会将 Kafka 中的 Topic 比作队列; 在 Kafka 中,数据是以主题(Topic)的形式组织的,每个 Topic 可以被分为多个分区(Partition)。每个 Partition 是一个有序的、不可变的消息…...

网络攻击与防范
目录 选填 第一章 1、三种网络模式 2、几种创建网络拓扑结构 NAT模式 VPN模式 软路由模式1 软路由模式2 3、Linux网络配置常用指令 4、常见网络服务配置 DHCP DNS Web服务与FTP服务 FTP用户隔离 第二章 DNS信息收集(dnsenum、dnsmap) 路…...

文献研读|基于像素语义层面图像重建的AI生成图像检测
前言:本篇文章主要对基于重建的AI生成图像检测的四篇相关工作进行介绍,分别为基于像素层面重建的检测方法 DIRE 和 Aeroblade,以及基于语义层面重建的检测方法 SimGIR 和 Zerofake;并对相应方法进行比较。 相关文章:论…...

【操作系统】为什么需要架构裁剪?
为什么需要架构裁剪? 原因 减小核心大小提高架构初始化速度降低内存占用提高系统性能移除不需要的功能,增加安全性 裁剪方法 初始化配置设置功能模块化移除不需要的驱动底层 一般裁剪对象(以操作系统为例) 文件系统的支持网…...

LSTM长短期记忆网络
LSTM(长短期记忆网络)数学原理 LSTM(Long Short-Term Memory)是一种特殊的递归神经网络(RNN),解决了标准RNN中存在的梯度消失(Vanishing Gradient) 和**梯度爆炸&#x…...

基于前端技术UniApp和后端技术Node.js的电影购票系统
文章目录 摘要Abstruct第一章 绪论1.1 研究背景与意义1.2 国内外研究现状 第二章 需求分析2.1 功能需求分析2.2 非功能性需求分析 第二章系统设计3.1 系统架构设计3.1.1 总体架构3.1.2 技术选型 3.2 功能架构 第四章 系统实现4.1 用户端系统实现4.1.1 用户认证模块实现4.1.2 电…...

数据结构与算法:稀疏数组
前言 此文以整型元素的二维数组为例,阐述稀疏数组的思想。其他类型或许有更适合压缩算法或者其他结构的稀疏数组,此文暂不扩展。 稀疏数组的定义 在一个二维数据数组里,由于大量的元素的值为同一个值,比如 0或者其他已知的默认值…...

Meta重磅发布Llama 3.3 70B:开源AI模型的新里程碑
在人工智能领域,Meta的最新动作再次引起了全球的关注。今天,我们见证了Meta发布的Llama 3.3 70B模型,这是一个开源的人工智能模型,它不仅令人印象深刻,而且在性能上达到了一个新的高度。 一,技术突破&#…...

VSCode中的Black Formatter没有生效的解决办法
说明 如果正常按照配置进行的话,理论上是可以生效的。 "[python]": {"editor.defaultFormatter": "ms-python.black-formatter","editor.formatOnSave": true }但我在一种情况下发现不能生效,应为其本身的bug…...

【潜意识Java】蓝桥杯算法有关的动态规划求解背包问题
目录 背包问题简介 问题描述 输入: 输出: 动态规划解法 动态规划状态转移 代码实现 代码解释 动态规划的时间复杂度 例子解析 输出: 总结 作者我蓝桥杯:2023第十四届蓝桥杯国赛C/C大学B组一等奖,所以请听我…...

Odoo:免费开源ERP的AI技术赋能出海企业电子商务应用介绍
概述 伴随电子商务的持续演进,客户对于便利性、速度以及个性化服务的期许急剧攀升。企业务必要探寻创新之途径,以强化自身运营,并优化购物体验。达成此目标的最为行之有效的方式之一,便是将 AI 呼叫助手融入您的电子商务平台。我们…...

微信小程序苹果手机自带的数字键盘老是弹出收起,影响用户体验,100%解决
文章目录 1、index.wxml2、index.js3、index.wxss1、index.wxml <!--index.wxml--> <view class="container"><view class="code-input-container"><view class="code-input-boxes"><!-- <block wx:for="{{…...

sql中case when若条件重复 执行的顺序
sql case when若条件重复 执行的顺序 在 SQL 中,如果你在 CASE 表达式中定义了多个 WHEN 子句,并且这些条件有重叠,那么 CASE 表达式的执行顺序遵循以下规则: (1)从上到下:SQL 引擎会按照 CASE …...