当前位置: 首页 > 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);}
}

http://www.lryc.cn/news/505806.html

相关文章:

  • Qt Q_ENUM enum 转 QString 枚举字符串互转; C++模板应用
  • 0004.基于springboot+elementui的在线考试系统
  • 基于 iAP2 协议 的指令协议,用于对安防设备的 MCU 进行操作
  • 02-5.python入门基础一控制流(while)
  • Go语言开发入门与实战
  • HarmonyOS Next应用开发实战:ArkWeb组件使用介绍及使用举例
  • 【已解决】在Visual Studio里将应用与Microsoft Store关联时提示网络异常
  • springcloud-gateway获取应用响应信息乱码
  • [笔记]关于Qt的nativeEvent事件无法接收window消息的Bug
  • LeetCode 热题 100_K 个一组翻转链表(31_25_困难_C++)(四指针法)
  • Pytorch | 从零构建MobileNet对CIFAR10进行分类
  • CSS系列(18)-- 工程化实践详解
  • 日拱一卒(18)——leetcode学习记录:二叉树中的伪回文路径
  • hive—炸裂函数explode/posexplode
  • SpringBoot 新特性
  • 鸿蒙app封装 axios post请求失败问题
  • 消息队列 Kafka 架构组件及其特性
  • 网络攻击与防范
  • 文献研读|基于像素语义层面图像重建的AI生成图像检测
  • 【操作系统】为什么需要架构裁剪?
  • LSTM长短期记忆网络
  • 基于前端技术UniApp和后端技术Node.js的电影购票系统
  • 数据结构与算法:稀疏数组
  • Meta重磅发布Llama 3.3 70B:开源AI模型的新里程碑
  • VSCode中的Black Formatter没有生效的解决办法
  • 【潜意识Java】蓝桥杯算法有关的动态规划求解背包问题
  • Odoo:免费开源ERP的AI技术赋能出海企业电子商务应用介绍
  • 微信小程序苹果手机自带的数字键盘老是弹出收起,影响用户体验,100%解决
  • sql中case when若条件重复 执行的顺序
  • 压力测试Jmeter简介