重学Java 3 变量 数据类型转换 运算符

路上难免会有许多挫折,你要学会应对,要坚不可摧

                                                                ——24.1.12

一、常量

1.概述:在代码的运行过程中,值都不会发生改变的数据

2.分类:

        整数常量:所有整数,包含正负

        小数常量:所有带小数点的

        字符常量:带单引号的 ' ',单引号中必须有且只能有一个内容

        字符串常量:带双引号的 " ",双引号中内容随意

        布尔常量:true(真)  false(假)   ->  不能加双引号

        空常量:null        代表的是数据不存在

二、变量

1.变量的数据类型介绍

2.变量的定义

3.变量的使用

4.标识符

1.变量的介绍及使用

1.变量的数据类型:

        基本数据类型:四类八种

                整型:byte、short、int、long

                浮点型:float、double

                字符型:char

                布尔型:boolean

        引用数据类型:类、数组、接口、枚举、注解

2.变量的定义

①概述:在代码的运行过程中,值会随着不同的情况而随时发生改变的数据

②作用:一次接受一个数据

        将来定义一个变量,接受一个值,后续可能会根据不同的情况对此值进行修改,此时可以使用变量

③定义:

        a、数据类型  变量名  =  值

                eg、int a = 10;

        b、数据类型 变量名;

              变量名 = 值;

                eg、int a;

                        a = 10;

        c、连续定义三个相同类型的变量

                数据类型 变量名1,变量名2,变量名3;

                变量名1 = 值;变量名2 = 值;变量名3 = 值;

                        eg、int i,j,k;

                                i = 10;

                                j = 20;

                                k = 30;

                数据类型 变量名1 = 值,变量名2 = 值,变量名3 = 值;

                eg、int i=10,j = 20,k = 30;

正确读法:先看等号右边,再看等号左边,将等号右边的数据赋值给等号左边的变量,哪怕等号右边有运算,我们都得先将等号右边的运算算出一个值来,最后赋值给等号左边的变量

④注意:

        a.字符串不属于基本数据类型,属于引用类型,用string表示

           string是一个类,只不过字符串在定义的时候可以和基本数据类型格式一样

3.变量的使用 

byte num1 = 100;
System.out.println(num1);
//100short num2 = 1000;
num2 = 1001;
System.out.println(num2);
//1001int num3 = 10000;
num3 = 1;
System.out.println(num3);
//1long num4 = 10L;
System.out.println(num4);
//10float num5 = 2.5F;
System.out.println(num5);
//2.5double num6 = 2.5;
System.out.println(num6);
//2.5char num7 = 'A';
System.out.println(num7);
//Aboolean num8 = true;
boolean num9 = false;
num8 = num9;
System.out.println(num8);
//false//String 是一个引用数据类型,属于类的一种,但是定义和基本类型一致
String name = "王菲";
System.out.println(name);
//王菲e

4.变量的运算 

int num1 = 10;
int num2 = 3;
int sum = num1 + num2;
int sub = num1 - num2;
int mul = num1 * num2;
System.out.println(sum);
//13
System.out.println(sub);
//7
System.out.println(mul);
//30

5.变量_转义字符  \ 

转义字符:\

简单理解:将普通字符转成有特殊含义的字符

                  将有特殊含义的字符转化为普通字符                

        例如:n:普通字符        t:普通字符

                   \n:换行符           \t:制表符,就是tab键

6.变量_float和double的区别

①float的小数位只有23位二进制,能表示的最大十进制为2的23次方(8388608),是7位数,所以float型代表的小数,小数位能表示7位

②double型小数位只有52位二进制,能表示的最大十进制位(4 503 599 627 370 496),是16位数,所以double型代表的小数,小数位能表示16位

③切记:开发不要用float或double直接参与运算,因为直接参与运算会有值不准的问题

7.变量使用的注意事项

①变量不初始化(第一次赋值),不能直接使用

②在同一个作用域(大括号)中,一个变量只能定义一次,不能重复定义

③不同作用域中的数据,尽量不要随意互相访问,在小作用域中可以直接访问大作用域中的变量,在大作用域中不可以直接访问小作用域中的变量

三、标识符

1.概述:给类,方法,变量取的名字

2.注意:

        a.硬性规定(必须遵守)

           标识符可以包含”英文字母“,”数字“,”_“和”$“

            标识符不能以数字开头        int i1 = 100(√),int 1i = 100(×)

            标识符不能是关键字        int static = 100(×)

        b.软性建议(最好遵守)

            给类取名字:遵循大驼峰式 -> 每个单词的首字母大写

            给方法和变量取名字:遵循小驼峰式 -> 从第二个单词开始往后首字母大写

            取名字见名知意

四、数据类型转换

1.什么时候会发生类型转换?

        a、等号左右两边类型不一致

        b、不同类型的数据做运算

2.分类:

        a、自动类型转换

              将取值范围小的数据类型赋值给取值范围大的数据类型->小自动转大

              取值范围小的数据类型和取值范围大的数据类型数据做运算 -> 小自动转大

        b、强制类型转换

              当将取值范围大的数据类型赋值给取值范围小的数据类型 -> 需要强转

3.基本类型中取值范围从小到大排序:

        byte、short、char -> int -> long -> float -> double

1.自动类型转换

①将取值范围小的数据类型赋值给取值范围大的数据类型->小自动转大

②取值范围小的数据类型和取值范围大的数据类型数据做运算 -> 小自动转大

//将取值范围小的int类型套到取值范围大的类型long中,发生了自动类型转换
long num1 = 100;
System.out.println(num1);int i = 10;
double b = 2.5;//double = int + double
//double = double + double
//int自动提升为了double,发生了自动类型转换
double sum = i + b;
System.out.println(sum);

2.强制类型转换

①当将取值范围大的数据类型赋值给取值范围小的数据类型 -> 需要强转

②如何强转:

        取值范围大的数据类型 变量名 = (取值范围小的数据类型)取值范围小的数据类型数据

3.强制类型转换注意事项 

①不要随意写成强转的形式,会有精度损失问题数据溢出现象,除非没有办法

②byte和short定义的时候,如果等号右边是常量,如果不超过byte和short的范围,不需要我们自己强转,jvm会自动转型,超过范围需要我们手动强转

③如果byte,short等号右边有变量参与,byte与short自动提升为int,然后结果再次赋值给byte或者short的变量,需要我们自己手动强转

④char类型数据如果参与运算,会自动提升为int类型,如果char类型的字符提升为int类型会去ASCII码表(美国标准交换代码)范围内去查询字符对应的int值,如果在ASCII码表范围内没有对应的int值,则会去unicode(万国码)码表中寻找

byte b = 10;
System.out.println(b);b = (byte)(b + 1);
System.out.println(b);
char c = 'A';
System.out.println(c+0);

当超出范围时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/618565.shtml

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

相关文章

通过 Elastic Stack 充分利用电信领域生成式 AI 的力量

作者:Elastic Piotr Kobziakowski, Jrgen Obermann 在瞬息万变的电信领域,Elastic Stack 与生成式 AI 的集成正在开创运营效率和创新的新时代。 这些技术不仅增强了网络运营,而且还彻底改变了各个部门的内部流程。 下面,我们将深入…

嵌入式必备的WEB知识

写在前面 嵌入式要学习Wed前端吗?答案是要的,不需要深入学习,只需要简单了解即可。为什么要学习? 原因如下: 可以远程控制和管理设备:通过简单的Web知识,嵌入式系统可以建立Web界面&#xff0c…

【Effective Objective - C】—— 熟悉Objective-C

【Effective Objective - C】—— 熟悉Objective-C 熟悉Objective-C1.oc的起源消息和函数的区别运行期组件和内存管理要点: 2.在类的头文件中尽量少引入其他头文件向前声明要点: 3.多使用字面量语法,少用与之等价的方法字符串字面量字面数值字…

Java--业务场景:SpringBoot 通过Redis进行IP封禁实现接口防刷

文章目录 前言具体实现步骤1. 定义自定义注解2. 编写拦截器类IpUrlLimitInterceptor3. 在WebConfig类中添加IpUrlLimitInterceptor4. 添加注解到接口上 测试效果参考文章 前言 在实际项目中,有些攻击者会使用自动化工具来频繁刷新接口,造成系统的瞬时吞…

单因素方差分析--R

任务说明 三个剂量水平的药物处理受试者,每个剂量水平十个受试者,现在收集到数据后,问: 药物剂量水平显著影响受试者的response? 或者不同剂量药物处理受试者有显著效果的差异吗? 数据 library(tidyvers…

css选择器在python中如何使用

css选择器整理:https://blog.csdn.net/qq_40910788/article/details/84842951 目标:爬取某文章网站列表: 基础代码如下: import random import time import urllib.request import redef reptileTest(url):try:my_headers [&q…

Self-Attention

前置知识:RNN,Attention机制 在一般任务的Encoder-Decoder框架中,输入Source和输出Target内容是不一样的,比如对于英-中机器翻译来说,Source是英文句子,Target是对应的翻译出的中文句子,Attent…

Danswer部署指南

Quickstart How to deploy Danswer on your local machine ​ Requirements gitdocker with compose (docker version > 1.13.0) ​ Setup This quickstart guide covers setting up Danswer for local execution Clone the Danswer repo: git clone https://github.com…

Mysql 数据库ERROR 1820 (HY000): You must reset your password using ALTER USER 解决办法

Mysql 5.7数据库原来一直都能正常访问,突然访问不了,查看日志提示数据库需要修改密码, 具体解决办法如下操作: Windows 下: mysql的bin目录下, mysql>use mysql; mysql>mysql -uroot -p密码; 判…

gem5学习(14):将gem5扩展到ARM——Extending gem5 for ARM

目录 一、Downloading ARM Binaries 二、Building gem5 to run ARM Binaries 三、Modifying simple.py to run ARM Binaries 四、Running gem5 五、ARM Full System Simulation An aside on FS simulations 这个是gem5-learning中Getting Started的最后一篇文章&#xff…

imgaug库指南(20):从入门到精通的【图像增强】之旅

引言 在深度学习和计算机视觉的世界里,数据是模型训练的基石,其质量与数量直接影响着模型的性能。然而,获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此,数据增强技术应运而生,成为了解决这一问题的…

各版本 操作系统 对 .NET Framework 与 .NET Core 支持

有两种类型的受支持版本:长期支持 (LTS) 版本和标准期限支持 (STS) 版本。 所有版本的质量都是一样的。 唯一的区别是支持的时间长短。 LTS 版本可获得为期三年的免费支持和补丁。 STS 版本可获得 18 个月的免费支持和修补程序。 有关详细信息,请参阅 .N…

Java重修第五天—面向对象2

通过学习本篇文章可以掌握如下知识 static;设计单例;继承。 之前文章我们已经对面向对象进行了入门学习,这篇文章我们就开始深入了解面向对象设计。 static 我们定义了一个 Student类,增加姓名属性:name &#xff1…

用通俗易懂的方式讲解:内容讲解+代码案例,轻松掌握大模型应用框架 LangChain

本文介绍了 LangChain 框架,它能够将大型语言模型与其他计算或知识来源相结合,从而实现功能更加强大的应用。 接着,对LangChain的关键概念进行了详细说明,并基于该框架进行了一些案例尝试,旨在帮助读者更轻松地理解 L…

最好的 8 个解锁 Android 手机的应用程序分析

如何解锁我的 Android 手机是一个困扰全球数百万人的问题。有多种Android解锁器可用于解锁手机。用户应确保选择最好的应用程序以轻松满意地完成工作。必须注意的是,数据在解锁手机的整个过程中都是安全可靠的。此类应用程序还应该能够在所有情况下检索数据。 锁屏移…

时间差异导致数据缺失,如何调整Grafana时间与Prometheus保持同步?

Grafana时间如何调快或调慢? 在k8s环境中,常使用prometheusgrafana做监控组件,prometheus负责采集、存储数据,grafana负责监控数据的可视化。 在实际的使用中,有时会遇到这样的问题,k8s集群中的时间比真实…

力扣:209.长度最小的子数组

1.题目分析: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 …

Vue的api接口封装以及使用说明、模块说明

在Api目录下面建立user.js,如果以后有不同的接口请求地址都可以单独创建不同的,目的是方便维护! import request from /utils/request 这个代码是引入之前封装好的 request.js 文件,具体可以参考上门一篇文档 Vue的request.js模…

传奇手游详细图文架设教程

开始架设 1. 架设条件 传世手游架设需要准备: linux 服务器,建议 CentOs 7.6 版本,游戏源码, 游戏运行大约占 2.5G 左右内存。 2. 安装宝塔及环境 宝塔是一个服务器运维管理软件,安装命令: yum inst…

NVMe-oF 1.1规范:多路径、非对称命名空间和NVMe/TCP

提到NVMe over Fabric,我就会想到它的几种应用场景: 1、 存储阵列到主机的网络连接(替代FC、iSCSI等); 2、 服务器、本地NVMe存储解耦(跨机箱/JBOF),SSD存储资源池化共享&#xff…