【Java基础_02】Java变量

【Java基础_02】Java变量、运算符、程序控制结构

文章目录

  • 1 变量
    • 1.1 程序中“+”号的使用
    • 1.2 数据类型
    • 1.3 整数类型
      • 1.3.1 整数类型的分类
      • 1.3.2 整型的使用细节
    • 1.4 浮点类型
      • 1.4.1 浮点型的分类
      • 1.4.2 浮点类型使用细节
    • 1.5 字符类型
      • 1.5.1 字符类型使用细节
      • 1.5.2 字符类型本质
      • 1.5.3 Java常用编码
        • ASCII码
        • Unicode码
        • UTF-8
    • 1.6 布尔类型:boolean
    • 1.7 自动类型转换
      • 1.7.1 自动类型转换细节
    • 1.8 强制类型转换
      • 1.8.1 强制类型转换细节
    • 1.9 基本数据类型转换-练习题
    • 1.10 基本数据类型和 String 类型的转换
      • 10.1 注意事项

1 变量

注意事项
在这里插入图片描述

1.1 程序中“+”号的使用

在这里插入图片描述

1.2 数据类型

Java中每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。
在这里插入图片描述

1.3 整数类型

Java 的整数类型就是用于存放整数值的,比如 12 , 30, 3456 等等

1.3.1 整数类型的分类

在这里插入图片描述

1.3.2 整型的使用细节

在这里插入图片描述

int n1 = 1
long n3 = 1L; //数值是1,但是long类型

1.4 浮点类型

1.4.1 浮点型的分类

在这里插入图片描述

  1. 关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位
  2. 尾数部分可能丢失,造成精度损失(小数都是近似值)。

1.4.2 浮点类型使用细节

在这里插入图片描述

//Java 的浮点型常量(具体值)默认为 double 型,声明 float 型常量,须后加‘f’或‘F' 
float num1 = 1.1; //对不对?错误 
float num2 = 1.1F; //对的 
double num3 = 1.1; //对 
double num4 = 1.1f; //对(小放大,是正确的)//十进制数形式:如:5.12 512.0f .512 (必须有小数点) 
double num5 = .123; //等价 0.123 
System.out.println(num5);  //0.123
//科学计数法形式:如:5.12e2 [5.12 * 10 的 2 次方 ] 5.12E-2 [5.12 / 10的2次方] 
System.out.println(5.12e2);//512.0 进行了乘法运算,计算后后类型是double,所以是512.0
System.out.println(5.12E-2);//0.0512//通常情况下,应该使用 double 型,因为它比 float 型更精确。 
//[举例说明]
double num9 = 2.1234567851;
float num10 = 2.1234567851F; 
double num9 = 2.1234567851; 
float num10 = 2.1234567851F; 
System.out.println(num9);  //2.1234567851
System.out.println(num10);  //2.1234567//浮点数使用陷阱: 2.7 和 8.1 / 3 比较  
double num11 = 2.7; 
double num12 = 8.1 / 3; //2.7 
System.out.println(num11);//2.7 
System.out.println(num12);//接近 2.7 的一个小数,而不是 2.7 2.6999999999999997,因为转成二进制算的,可能会算成这样//得到一个重要的使用点: 当我们对运算结果是小数的式子进行相等判断时要小心
//应该是以两个数的差值的绝对值,在某个精度范围类判断 
if( num11 == num12) { 
System.out.println("num11 == num12 相等"); 
}
//正确的写法 
if(Math.abs(num11 - num12) < 0.000001 ) {   //这个0.000001在不同的业务逻辑中不同
System.out.println("差值非常小,到我的规定精度,认为相等...");
}
细节:如果不是计算所得,而是直接查询得的的小数或者直接赋值,是可以判断相等

1.5 字符类型

java中的char占两个字节,c语言中是一个字节

初始化方式

1.char c='c'; //字符,可以是汉字。因为是Unicode编码,需要加单引号才能直接输出单引号内的内容,否则输出unicode编码对应字符。
2.char c=十进制数,八进制数,十六进制数都可以; //可以用整数赋值【整数范围:0~65535】。输出unicode字符编码表中对应的字符。**

1.5.1 字符类型使用细节

在这里插入图片描述

3. 在java中,char默认输出是unicode码(即该数字)对应的字符。要输出对应的数字,可以(int)字符。

在这里插入图片描述

char c3 = 97; System.out.println(c3);// aSystem.out.println(int(c3));//97 输出'a'对应的数字

在这里插入图片描述

        //字符型char c1 = 'a'; //用char只能用单引号,双引号是string,string和char不兼容char c2 = '哈';char c2_ = 21704;char c3 = 97;char c4 = '9';  char c5 = '\t'; //前面的/表示转义System.out.println(c1); //输出aSystem.out.println((int)c1); //输出'a'对应的数字 97System.out.println(c2); //输出哈System.out.println((int)c2); //输出'哈'对应的数字System.out.println(c2_); //输出哈System.out.println(c3); //输出97表示的那个字符-》a  ascii码System.out.println(c4); //输出9System.out.println(c5);  System.out.println('a' + 10);  //编译器先把a转为97进行计算=》107char c6 = 'b' + 1;System.out.println(c6);  // 99->对应的字符->ascii编码表(unicode兼容它)System.out.println((int)c6); // 99      

1.5.2 字符类型本质

在这里插入图片描述

1.5.3 Java常用编码

ASCII码

在这里插入图片描述

Unicode码

在这里插入图片描述在大部分是英文的情况下是一种浪费

一个汉字用2个字节表示,一共能表示65536个【范围是0-65536】

UTF-8

在这里插入图片描述

UTF-8使用三个字节表示汉字,表示的汉字更多

1.6 布尔类型:boolean

在这里插入图片描述

不可以用0或者非0的整数替代false或true!

1.7 自动类型转换

在这里插入图片描述蓝图转换都是正确的,'c’为char类型,可以自动转换为int型。80为int,可以自动转换为double(输出为80.0)。

1.7.1 自动类型转换细节

在这里插入图片描述

小数就是默认double的,后面加F才是float,但是byte c = 10;10虽然默认int,但是这样的句子是可以的,在范围内

        //(一)多种类型的数据进行混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算int n1 = 10;double d1 = n1 + 1.1;//float d1 = n1 + 1.1; 1.1默认double类型,即结果类型是double,设置为float有精度损失float d2 = n1 + 1.1F;   //把1.1转为float类型//(二)把精度容量大的数据类型赋给精度容量小的数据类型时就会报错,反之会进行自动类型转换//int n2 = 1.1;//小数默认double类型【用int放置精度会丢失】//(三)(byte,short)和char之间不会相互自动转换//(四)当把具体数赋给byte时,(1)先判断该数是否在byte范围内 (2)如果是变量赋值,判断类型byte b1 = 10; // 对, -128 - 127  10只是默认intint n2  = 1;// byte b2 = n2; //不对,n2是int,按照四个字节存放,放到b2中精度会有丢失。// char c1 = b1;// 不对,byte不能自动转换为char//(五)byte,short,char三者可以计算,在计算时自动先转换为int类型(当做int进行处理)byte b2 = 1;short s1 = 1;//short s2 = b2 + s1; 不对,b2和s1是int类型//byte b4 = b2 + b3;  不对,b2和b3是int类型//(六)boolean不参与转换//(七) 表达式结果的类型自动提升为操作数中精度最大的类型//byte int short double 进行计算,转换为double

1.8 强制类型转换

自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符 ( ),但可能造成 精度降低或溢出,格外要注意。

			 int j = 100;byte b1 = (byte)j;System.out.println(b1);//100不会明显有损失,但如果是1000就会有大的损失

1.8.1 强制类型转换细节

在这里插入图片描述

4对应前面的(五)

double x = (int)10 * 3.6 + 6 * 1.5; //把10转换为int
int y = (int)(10 * 3.5 + 6 * 1.5);
System.out.println(x);
System.out.println(y);

1.9 基本数据类型转换-练习题

在这里插入图片描述

1和2中的错误主要是因为byte,short,char三者可以计算,在计算时首先转换为int类型,目前我认为不能贸然默认是由于9和11是默认int类型,毕竟是在范围内的。

1.10 基本数据类型和 String 类型的转换

字符串相加是拼接,所以加上一个空的字符串就是前面的东西和空的字符串拼接,也就是内容不变但是类型变为字符串。

		//基本数据类型->Stringint n1 = 100; float f1 = 1.1F; double d1 = 4.5; boolean b1 = true; String s1 = n1 + ""; String s2 = f1 + ""; String s3 = d1 + ""; String s4 = b1 + ""; System.out.println(s1 + " " + s2 + " " + s3 + " " + s4);//String->对应的基本数据类型String s5 = "123";int num1 = Integer.parseInt(s5); double num2 = Double.parseDouble(s5); float num3 = Float.parseFloat(s5); long num4 = Long.parseLong(s5);byte num5 = Byte.parseByte(s5); boolean b = Boolean.parseBoolean("true"); short num6 = Short.parseShort(s5);System.out.println(num1);//123 		System.out.println(num2);//123.0 System.out.println(num3);//123.0 System.out.println(num4);//123 System.out.println(num5);//123 System.out.println(num6);//123 System.out.println(b);//true(输出的就是这四个字母)//怎么把字符串转成字符 char -> 含义是指 把字符串的第一个字符得到 //解读 s5.charAt(0) 得到 s5 字符串的第一个字符 '1' System.out.println(s5.charAt(0));

10.1 注意事项

在这里插入图片描述在这里插入图片描述异常-Exception

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

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

相关文章

2024.2.5日总结(小程序开发2)

小程序的宿主环境 宿主环境 宿主环境指的是程序运行所必须的依赖环境。 Android系统和iOS系统是两个不同的宿主环境。安卓版的微信App不能再iOS环境下运行。Android是安卓软件的宿主环境&#xff0c;脱离了宿主环境的软件是没有意义的。 小程序的宿主环境 手机微信是小程序…

黑豹程序员-ElementPlus支持树型组件带图标以及icon避坑

效果 vue代码 参数说明&#xff1a;node当前节点&#xff0c;data当前节点后台传入数据。 el-tree自身不支持图标&#xff0c;需要自己去利于实现&#xff0c;并有个坑&#xff0c;和elementui写法不同。 <el-col :span"12"><el-form-item label"绑定…

VC++添加菜单学习

新建一个单文档工程&#xff1b; 完成以后看一下有没有出现如下图的 资源视图 的tab&#xff1b;如果没有&#xff0c;在文件列表中找到xxx.rc2文件&#xff1b; 点击 资源视图 的tab&#xff0c;或者双击 .rc2 文件名&#xff0c;就会转到如下图的资源视图&#xff1b;然后展…

mysql是如何使用索引的?

摘自官网 MySQL使用索引进行以下操作: WHERE条件中,快速查找匹配的行。(快速查询数据) 从准备查询的数据中消除多余行。如果可以在多个索引之间进行选择,则MySQL通常会使用查找最少行数的索引。 如果表具有多列索引,那么优化器可以使用索引的任何最左前缀来查找行。 举例来…

算法题目题单+题解——图论

简介 本文为自己做的一部分图论题目&#xff0c;作为题单列出&#xff0c;持续更新。 题单由题目链接和题解两部分组成&#xff0c;题解部分提供简洁题意&#xff0c;代码仓库&#xff1a;Kaiser-Yang/OJProblems。 对于同一个一级标题下的题目&#xff0c;题目难度尽可能做…

MySQL的触发器

一&#xff1a;概述 &#xff08;1&#xff09;介绍 &#xff08;2&#xff09;特性 二&#xff1a;基本操作 -- 用户表 create table user(uid int primary key,username varchar(50) not null,password varchar(50) not null );-- 用户信息操作日志表 create table user_…

如何有效降低商业电子邮件被盗的风险?

一、什么是商业电子邮件泄露&#xff1f; 你是否曾经经历过信任某人&#xff0c;但最终却被背叛的痛苦&#xff1f;在商业环境中&#xff0c;业务电子邮件泄露&#xff08;BEC&#xff09;就是一种通过电子邮件方式被你信任的人背叛的情况。然而&#xff0c;与人际关系中的背叛…

07.你还在手动部署代码吗

如今的项目或者个人项目中,大家的代码怎么部署呢?公司一般都有完整的持续集成以及持续交付平台,对于小公司可能也有各自搭建了一些,比如jenkins,以及gitlab集成的gitlab-ci等等,这些都可以完成我们部署的工作甚至是测试集成等等一系列流水化工作。 但是,即使如此,我依…

软件测试-造数工具Faker简介

这里的Faker不是英雄联盟的Faker。。。 一、Python Faker 简介 Python Faker 是一个用于生成假数据的Python库。它允许开发者快速创建具有随机特征的虚构数据&#xff0c;这对于测试、填充数据库以及其他需要模拟真实数据的场景非常有用。Python Faker 提供了各种数据类型的生…

【经典例子】Java实现2048小游戏(附带源码)

一、游戏回顾 2048游戏是一款数字益智游戏&#xff0c;目标是通过合并相同数字的方块来达到2048这个目标。游戏在一个4x4的方格上进行&#xff0c;每个方格上都有一个数字&#xff08;初始时为2或4&#xff09;。玩家可以通过滑动方向键&#xff08;上、下、左、右&#xff09;…

这是一篇学习记录(一) — RPA

犹豫再三要不要记录一下这次的学习历程&#xff0c;说起RPA&#xff0c;可能很多人不了解&#xff0c;那么RPA到底是什么&#xff0c;它有什么用处。 机器人流程自动化 (RPA)&#xff0c;又称为软件机器人&#xff0c;是一种利用智能自动化技术来模拟人类执行后台任务的方法。…

静态代码块中使用 ExecutorService 执行多线程会出现什么情况呢?

AQS系列 1、AQS核心原理 2、ReentrantLock 原理及示例 3、CountDownLatch / Semaphore 示例及使用场景 4、BlockingQueue 示例及使用场景 5、静态代码块中使用 ExecutorService 执行多线程会出现什么情况呢&#xff1f; 文章目录 AQS系列一、 一般场景二、static {} 场景三、原…

AD高速板常见问题和过流自锁

可以使用电机减速器来增大电机的扭矩&#xff0c;低速运行的步进电机更要加上减速机 减速电机就是普通电机加上了减速箱&#xff0c;这样便降低了转速增大了扭矩 HDMI布线要求&#xff1a; 如要蛇形使其等长&#xff0c;不要在HDMI的一端绕线。 HDMI走线时两边拉线&#xff0…

忘记 RAG:拥抱Agent设计,让 ChatGPT 更智能更贴近实际

RAG&#xff08;检索增强生成&#xff09;设计模式通常用于开发特定数据领域的基于实际情况的ChatGPT。 然而&#xff0c;重点主要是改进检索工具的效率&#xff0c;如嵌入式搜索、混合搜索和微调嵌入&#xff0c;而不是智能搜索。 这篇文章介绍了一种新的方法&#xff0c;灵感…

信创ARM架构QT应用开发环境搭建

Linux ARM架构QT应用开发环境搭建 前言交叉工具链Ubuntu上安装 32 位 ARM 交叉工具链Ubuntu上安装 64 位 ARM 交叉工具链 交叉编译 QT 库下载 QT 源码交叉编译 QT 源码 Qt Creator交叉编译配置配置 Qt Creator Kits创建一个测试项目 小结 前言 有没有碰到过这种情况&#xff1…

15、jenkins

15、jenkins k8s手撕yml方式部署最新版 Jenkins 2.441&#xff08;jdk-21版&#xff09;&#xff08;jenkins-prod&#xff09; mkdir -p ~/jenkins-prod-ymlkubectl create ns jenkins-prodkubectl label node k8s-node1 jenkins-prodjenkins-prodcat > ~/jenkins-prod-y…

vivado TCL运行编译

用Tcl运行合成 运行合成的Tcl命令是synth_design。通常&#xff0c;此命令与一起运行多个选项&#xff0c;例如&#xff1a; synth_design -part xc7k30tfbg484-2 -top my_top 在本例中&#xff0c;synth_design使用-part选项和-top选项运行。在Tcl控制台中&#xff0c;您可以…

layui

基于复杂结构的自定义模版相关介绍 我这里的接口给的格式数据 我这里搜索往返时候要显示成这样的 layui.use([table,form], function(){ var table layui.table; var form layui.form;// 渲染表格 table.render({ elem: #test-table-reload,toolbar: #toolbarDemo, …

【驱动】块设备驱动(四)-块设备驱动层

前言 块设备驱动程序是Liux块子系统中的最底层组件。它们从IO调度程序中获得请求&#xff0c;然后按要求处理这些请求。一个块设备驱动程序可能处理几个块设备。例如&#xff0c;IDE设备驱动程序可以处理几个IDE磁盘&#xff0c;其中的每个都是一个单独的块设备。而且&#xff…

json、jsonlines格式化显示

一、对于vscode暂时没找到合适的方法来格式化 二、利用JetBrains的IDE(例如PyCharm)来格式化(快捷键CtrlAltL) 三、利用jq工具&#xff1a;(速度快&#xff0c;推荐。) # 安装 sudo apt install jq# 使用&#xff08;假设你已经有一个dev.jsonlines文件&#xff09; jq . dev.…