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

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;并对相应方法进行比较。 相关文章:论…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

SpringTask-03.入门案例

一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found"​, "n…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...