Java学习笔记之变量

news2024/11/8 15:15:12

文章目录

        • 变量注意事项
        • Java的数据类型
          • :star:基本数据类型:
          • :star: 引用数据类型:
        • 数据类型使用
          • :one: 整形:
          • :two: 浮点型:
          • :three: 字符类型:
          • :four: 布尔类型:
        • 基本数据类型转换
          • :star:动类型转换
          • :star:强制类型转换
        • 基本数据类型和String类型的转换
          • :star:基本数据类型转`string`语法为,基本数据类型的值+`""`
          • :star:`string`转基本类型

变量是程序的基本组成单位

变量注意事项

1️⃣ 变量表示内存中的一个存储区域,不同的变量,不同的类型,占用空间的大小不同

2️⃣ 该区域有自己的名称

3️⃣ 变量必须先声明,后使用

4️⃣ 该区域的数据可以在同一类型范围内不断变化

5️⃣ 变量在同一个作用域内不能重名

Java的数据类型
⭐️基本数据类型:
  • 数值型:整数类型,存放整数如:byte[1]short[2]int[4]long[8]

  • ​ 浮点数类型,float[4]double[8]

  • 布尔型: TrueFalseboolean[1]

  • 字符型: char[2],存放当个字符

⭐️ 引用数据类型:
  • 接口

  • 数组

数据类型使用
1️⃣ 整形:
类型占用空间范围
byte[字节]1字节-128-127
short[短整型]2字节-215·215-1(-32768-32767)
int[整形]4字节-231-231-1(-2147483648-2147483647)
long[长整形]8字节-263-263-1

⚠️ int类型注意细节

  • Java每个整形类型都有固定大小,且不受操作系统的影响
  • java整形默认是int,声明long类型需要后面加上’L’或者’l’
public class IntDetal {
	//main方法 
	public static void main(String[] args){
		int n1 = 2;
		// 错误 int n2 = 2L;
		long n3 = 2L; 
	}
}
  • java程序中变量声明为int型,出发不足以表示大数,才使用long
  • bit计算机中最小的存储单位。byte是计算机中基本存储单元,1byte=8bit
2️⃣ 浮点型:
类型占用范围
float 单精度4字节-3.403E38-3.403E38
double 双精度8字节-1.798E308-1.798E308

浮点型在机器中存放形式为符号位+指数位+尾数位尾数部分可能丢失,造成进度损失(小数都是一个近似值)

引用GPT的一句话来解释:

在高级语言编程中,计算得到的小数通常是近似值,而不是精确值。这是由于计算机的二进制表示方式和有限的存储能力导致的。

计算机使用二进制来表示数字,而许多十进制小数无法在有限的二进制位数内准确表示。例如,十进制中的1/3(0.3333…)在二进制中是一个无限循环的小数。因此,计算机在存储这样的小数时只能使用有限的位数,导致了近似值的产生。

此外,浮点数表示法(floating-point representation)在计算机中用于存储小数,它采用科学计数法的形式,包括一个尾数和一个指数。由于浮点数的尾数有限,无法精确表示所有的小数,因此在进行浮点数运算时,可能会出现舍入误差,导致计算结果是近似值。

总的来说,由于计算机的二进制表示和有限的存储能力,高级语言编程中得到的小数通常是近似值而非精确值。

⚠️ 浮点数使用细节

  • 浮点数也有固定长度且不受操作系统影响

  • Java浮点数默认是double,如果要声明float类型就是,后面必须加上'f'或者'F'

    
    public class FloatDetal {
    	//主方法
    	public static void main(String[] args){
    
    		// 这里也会报错,因为默认是double float f1=0.12;
    		float f3 = 0.12F;
    
    		//错误double范围要比float大 double f2=0.12F;
    
    		double f4 = 0.12;
    
    		double f5 = 0.13F; //对的float范围在double范围之内
    	}
    }
    
  • 有两种表现形式一种是十进制表示比如5.12,4.23f,.512 ,另一种是科学计数法比如5.12e2[5.12*10^2],5.12E-2[]

    public class FloatDetal {
    	//主方法
    	public static void main(String[] args){
    
    		.....
    
    		//科学计数法
    		double f7 = 5.12e2; //5.12e2 == 5.12*10^2
    		System.out.println(f7); //512.0
    		double f8 = 5.12E-2; //5.12e2 == 5.12/10^2
    		System.out.println(f8);// 0.0512
    	}
    }
    
  • 通常情况下使用double,比float更加精确

    • 浮点数使用陷阱 ❗️ 不要使用计算后的浮点数来做布尔运算,因为计算过的浮点数点是一个无限接近于它本身的值,如果需要判断就需要判断两个数的相减得到的值的绝对值,判断这个值是否在某个精度的范围内

      public class FloatDetal {
      	//主方法
      	public static void main(String[] args){
      		.......
      
      		//浮点数陷阱
      		double f9 = 2.7;
      		double f10 = 8.1/3;
      		System.out.println(f9); //2.7
      		System.out.println(f10); //2.6999999999999997
      
      		if (f9 == f10){
      			System.out.println("这两个数相等"); //不会输出
      		}
      		//判断两个数的相减得到的值的绝对值,在判断这个值是否在某个精度的范围内,我这里定义为0.00000001
      		//表示如果小于0.00000001就认为它们相等
      		if (Math.abs(f9-f10) < 0.00000001){
      			System.out.println("差值很小,达到指定的精确度内"); //输出
      		}
      
      	}
      }
      
3️⃣ 字符类型:

字符类型单个使用char,多个使用string

⚠️ 字符类型使用细节

  • 字符常量使用单引号括起来的单字符

  • 转义字符为 “”

  • 在java中,char的本质是一个整数,在输出时,是输出unicode码对应的字符Unicode编码转换 - 站长工具 (chinaz.com)

  • char是可以和计算的,使用unicode码计算

    public class Char01 {
    	public static void main(String[] agrs){
    		char c1 = 'a';
    		char c2 = 97;
    		char c3 = 't'+ 1;
    		System.out.println((int)c1); //输出97
    		System.out.println(c2); //输出a
    		System.out.println(c1 + 10); //输出107
    		System.out.println((int)c3); //117
    		System.out.println(c3); //输出ASCII的对应的字符u
    	}
    }
    

⚠️字符类型本质: 字符型存储到计算机中,需要先将字符的ASCII码值找出来,在转换为二进制然后在保存到计算机中,读取就是反着来

ASCII码

Unicode码:字母和汉字都统一两个字节

utf-8:字母一个字节,汉字3个字节

gbk:字母一个字节,汉字2个字节

gb2312:

big5:繁体中文

4️⃣ 布尔类型:

多用于使用判断和循环的逻辑运算中

⚠️ 这里的True和false不可以使用数字替代

基本数据类型转换
⭐️动类型转换

当java程序在进行赋值或者运算时,精度小弟类型自动转换为精度大的数据类型

1️⃣自动转换路线

char --> int --> long --> float --> double 

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

1️⃣ 测试

public class Transform {
	//主方法
	public static void main(String[] args) {
		//低精度可以转换成高精度
		int a = 'c';
		System.out.println(a); //输出99
	}
}

⚠️自动类型转换注意细节

  • 多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后在进行计算

  • byte,short不能和char自动转换

  • byte,short,char是可以运算的,不过在运算的时候会转换为int类型,只要是参与运算了都会被转换为int

    public class Transform {
    	//主方法
    	public static void main(String[] args) {
    		//低精度可以转换成高精度
    		// int a = 'c';
    		// System.out.println(a); //输出99
    
    
    		int a = 10;
    		float b = 20.1f;
    		double c = 22.1;
    
    		float d = a+b; //浮点型
    		double e = a+c; //double
    		System.out.println(d);
    		System.out.println(e);
    		
    
    
    
    		byte b2 = 1;
    		byte b7 = 4
    		short b3 = 2;
    		char b5 = 'a';
    		short b4 = b2 + b3; //报错 b2+b3变为int类型了
    		short b6 = b2 + b5; //报错和上面一样
    		byte b8 = b2 + b7 //报错和上面一样
    
    	}
    }
    
  • boolean不参与转换

⭐️强制类型转换

1️⃣ 比如要强制转换为int格式为(int)a,但是有可能会造成精度降低或溢出,格外要注意

⚠️ 强制类型转换细节:

  • 当进行数据的大小从 大—>小,就需要使用到强制转换

  • 强转符号只针对于一个或者说是最近的一个数有效

  • char类型可以保存int的常量值,但是不能保存int的变量值,需要强转

    //强制类型装换
    
    
    public class CastType {
    	//主函数
    	public static void main(String[] agrs){
    		.....
    
    
    		char c1 = 100;
    		int m = 100;
    		// char c2 = m; //错误char类型不能直接保存int的变量值,这里是将m->100->c2
    		char c3 = (char)m;//这里是将m->100->ASCII->c3
    		// System.out.println(c2);
    		System.out.println(c3);
    	}
    }
    
  • byte和short会转换为int类型

基本数据类型和String类型的转换
⭐️基本数据类型转string语法为,基本数据类型的值+""
public class StringTest { //注意千万不能将类命名为String!
	//主入口
	public static void main(String[] args){
		int n1 = 100;
		float n2 = 1.1f;
		double n3 = 2.2;
		boolean n4 = true;
		String str1 = n1 +"";
		String str2 = n2 +"";
		String str3 = n3 +"";
		String str4 = n4 + "";
		System.out.println(str1+" "+str2+" "+str3+" "+str4); //输出100 1.1 2.2 true
}
⭐️string转基本类型
		//String转基本类型
		String n5 = "123"
		String n6 = "1.234"
		int num1 = Integer.parseInt(n5);
		double num2 = Double.parseDouble(n6);

⚠️ 注意事项

  • 将String类型转换成基本数据类型使,要确保String类型能够转换成有效的数据
  • 格式不对就会抛出异常

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

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

相关文章

【D3.js in Action 3 精译_039】4.3 D3 面积图的绘制方法及其边界标签的添加

当前内容所在位置&#xff1a; 第四章 直线、曲线与弧线的绘制 ✔️ 4.1 坐标轴的创建&#xff08;上篇&#xff09; 4.1.1 D3 中的边距约定&#xff08;中篇&#xff09;4.1.2 坐标轴的生成&#xff08;中篇&#xff09; 4.1.2.1 比例尺的声明&#xff08;中篇&#xff09;4.1…

美国大选——极具典型的可视化案例!GISer学起来

有人说可视化技术有啥意义&#xff0c;不就做个大屏么&#xff1f; 那真的小看了&#xff0c;就如下图这个美国大选来看&#xff0c;这么复杂混乱的信息&#xff0c;可视化技术给你梳理的明明白白的&#xff0c;简单、直观、形象、便于记忆。 让用户能够从繁杂信息中快速抓到重…

使用PyQt5设计一个简易计算器

目录 设计UI图 代码 结果展示 设计UI图 代码 from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import QFileDialog, QMainWindow, QMessageBox from untitled import Ui_MainWindow import sysclass…

数据结构-数组(稀疏矩阵转置)和广义表

目录 1、数组定义 1&#xff09;数组存储地址计算示例①行优先②列优先 2&#xff09;稀疏矩阵的转置三元组顺序表结构定义 ①普通矩阵转置②三元组顺序表转置稀疏矩阵③稀疏矩阵的快速转置 3&#xff09;十字链表结构定义 2、广义表定义 1&#xff09;基本操作①GetHead②GetT…

cooladmin使用整理

1、后端关键字自动生成没有代码段提示&#xff0c;原因是拉取的项目代码中没有.vscode文件夹&#xff0c;复制一套至项目src同级即可 2、前端快速创建&#xff0c;在Entity完成后就去快速创建中选数据结构&#xff0c;这时没有对应的内容&#xff0c;数据结构是和controller层a…

Java 网络编程(一)—— UDP数据报套接字编程

概念 在网络编程中主要的对象有两个&#xff1a;客户端和服务器。客户端是提供请求的&#xff0c;归用户使用&#xff0c;发送的请求会被服务器接收&#xff0c;服务器根据请求做出响应&#xff0c;然后再将响应的数据包返回给客户端。 作为程序员&#xff0c;我们主要关心应…

Jmeter命令监控CPU等指标

JMeter 命令行执行脚本得到的报告中&#xff0c;是没有CPU、内存使用率等监控数据的&#xff0c;但是可以使用JMeter插件帮忙。 一、下载jmeter-plugins-manager.jar 下载后将文件放到jmeter安装包lib/ext目录下。打开Jmeter》菜单栏》选项》Plugins Manager 二、安装PerfMon…

ES + SkyWalking + Spring Boot:日志分析与服务监控(三)

目录 一、搭建SkyWalking 1.1 版本选择 1.2 下载安装 1.3 配置启动 1.4 SkyWalking UI介绍 二、Springboot项目使用 2.1 Agent下载 2.2 Agent配置skywalking oap地址 2.3 IDEA配置Agent地址 2.4 生成的ES索引介绍 三、在kibana上查看日志 四、问题和解决 3.1 日志…

如何快速搭建一个spring boot项目

一、准备工作 1.1 安装JDK&#xff1a;确保计算机上已安装Java Development Kit (JDK) 8或更高版本、并配置了环境变量 1.2 安装Maven&#xff1a;下载并安装Maven构建工具&#xff0c;这是Spring Boot官方推荐的构建工具。 1.3 安装代码编辑器&#xff1a;这里推荐使用Inte…

spring-第十三章 AOP

spring 文章目录 spring前言1.AOP介绍2.AOP七大术语3.切点表达式4.使用spring的AOP4.1概述4.2准备工作4.3基于注解方式使用AOP4.3.1准备目标类和目标方法4.3.2编写配置类4.3.3编写通知类4.3.4编写测试类4.3.5通知类型4.3.6切面的先后顺序4.3.7PointCut注解通用切点 4.4基于XML方…

jmeter常用配置元件介绍总结之安装插件

系列文章目录 1.windows、linux安装jmeter及设置中文显示 2.jmeter常用配置元件介绍总结之安装插件 3.jmeter常用配置元件介绍总结之取样器 jmeter常用配置元件介绍总结之安装插件 1.下载插件2.安装插件管理包3.不用插件管理包&#xff0c;直接官网插件下载安装 1.下载插件 jm…

MySQL 多数据库备份与恢复,包括查询,函数,SP

一、备份语句&#xff1a; mysqldump 可以用来导出单个数据库、多个数据库&#xff0c;甚至所有数据库的数据。以下是导出多个数据库到指定文件位置的语法和具体案例。 基本语法 mysqldump -u [username] -p[password] --databases [db1] [db2] ... > [file_path] -u: …

contenteditable实现需要一个像文本域一样的可编辑框

我这里是因为左上和右下有一个固定的模板&#xff0c;所有用textarea有点不方便&#xff0c;查了下还有一个方法可以解决就是在需要编辑的元素上加上 :contenteditable"true" 完整代码如下&#xff0c;因为这个弹窗是两用的&#xff0c;所以用messageType做了一下判…

linux 安装anaconda3

1.下载 使用repo镜像网址下载对应安装包 右击获取下载地址&#xff0c;使用终端下载 wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh2.安装 使用以下命令可直接指定位置 bash Anaconda3-2024.02-1-Linux-x86_64.sh -b -p /home/anaconda3也…

如何选择适合的AWS EC2实例类型

在云计算的世界中&#xff0c;Amazon Web Services&#xff08;AWS&#xff09;提供了丰富的服务&#xff0c;其中Elastic Compute Cloud&#xff08;EC2&#xff09;是最受欢迎的服务之一。选择合适的EC2实例类型对于确保应用程序的性能和成本效益至关重要。我们九河云通过本文…

(蓝桥杯C/C++)——基础算法(下)

目录 一、时空复杂度 1.时间复杂度 2.空间复杂度 3.分析技巧 4.代码示例 二、递归 1.递归的介绍 2.递归如何实现 3.递归和循环的比较 4.代码示例 三、差分 1.差分的原理和特点 2.差分的实现 3.例题讲解 四、枚举 1.枚举算法介绍 2.解空间的类型 3. 循环枚举解…

7.5 inch电力线载波通信技术

7.5寸电子桌牌 产品型号 PE75R_D_W 尺寸 176.2*137.15*80mm 屏幕尺寸 7.5 inch 显示区域(mm) 163.2(H) * 97.92(V) 分辨率 800*480 显示技术 电子墨水屏双面显示 显示颜色 黑/白/红 外观颜色 银色 工作温度 0-40℃ 视角 180 支持内容格式 文本/图片/二维码…

Linux下的ADC

ADC ADC简介 ADC是 Analog Digital Converter 的缩写&#xff0c;翻译过来为模数转换器&#xff0c;ADC可以将模拟值转换成数字值。模拟值是什么呢?比如我们日常生活中的温度&#xff0c;速度&#xff0c;湿度等等都是模拟值。所以如果我们想测量这些模拟值的值是多少&#x…

星空天文 2.0.1| 完全免费的观星软件,无注册登录,天文爱好者必备。

星空天文是一款完全免费且功能强大的观星软件&#xff0c;适用于安卓平台。无需注册登录即可使用&#xff0c;界面设计精美且操作简单。软件支持AR实景模式&#xff0c;可以将实景与星空结合&#xff0c;增强观星体验。用户可以设定任意日期和时间来观察不同时段的天空&#xf…

书生大模型实战营第四期-入门岛-1. Linux前置基础

入门岛-Linux前置基础 书生大模型实战营-第四期-Linux前置基础&#xff1a; 任务&#xff1a;https://github.com/InternLM/Tutorial/blob/camp4/docs/L0/linux/task.md 文档&#xff1a;https://github.com/InternLM/Tutorial/tree/camp4/docs/L0/linux 任务描述完成所需时…