Java基础(变量篇)

news2024/9/28 7:23:43

变量是Java程序中基本的存储单元,变量名有三个基本要素:数据类型、变量名和值。变量名是一块内存单元的名称,就像门牌号一样,通过变量可以找到它表示的内存单元,并对这块内存单元进行操作。在Java中变量必须声明后使用。Java有以下数据类型:

本文介绍Java的八种基本数据类型。Java的基本数据类型的长度在不同平台都是一致的,以保证可移植性。

一、整型

1.byte:占一个字节,范围为 -128~127.

2.short:占两个字节,范围为 -32768~32767.

3.int:占四个字节,范围为 -2147483648~2147483647.

4.long:占八个字节,范围为 -2^{63}\sim 2^{63}-1.

Java整型常量(字面值)默认为int类型,在字面值后加 'l' 或 'L' 表示这个字面值为long类型。

整型在计算机中以反码表示,正数的反码与它的原码一致,负数的反码为它的原码除符号位按位取反再加1.

//此程序用于基本数据类型中的整型测试

public class IntegerTest{
	public static void main(String[] args){

		byte a = 10;
		short b = 100;
		int c = 1000L;//使用L会报错,因为long类型转换为int类型会丢失精度
		long d = 10000;

		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);


	}
}

二、浮点型

1.float(单精度):占四个字节,范围为 -3.403E38\sim 3.403E38.

2.double(双精度):占八个字节,范围为 -1.798E308\sim 1.798E308.

tips:

1. 在计算机中,浮点数的存储形式为:符号位+指数位+尾数位,单精度和双精度浮点数有不同的指数位和尾数位,具体细节在计算机组成原理中可以查到。

2.浮点数字面值默认为double类型,所以在初始化float类型的变量时,需要在字面值后加上 'f' 或 'F' 将其转换为float类型,否则编译时会报错。

3.double的精度比float高,通常情况下应该使用double。

可以看到,float可以表示到小数点后七位,而double可以表示到小数点后16位。

4.浮点数的表示形式:十进制表示(如果整数位为0,则0可以省略,但小数点不能省略)、科学计数法。

5.两个浮点数不能使用等于运算符判断是否相等,尤其是两个浮点数已经经过运算或处理,因为浮点数的表示和运算受制于精度,所以可能无法准确表示浮点数。判断两个浮点数是否相等应该使用容差法。

三、字符型

char:在Java中,字符型使用Unicode码,占两个字节,可以存放汉字。

1.字符型变量可以存储转义字符表示的字符,如换行符等。

常用的转义字符
\t制表符,实现对齐功能
\n换行符
\r回车符,表示将光标移动到本行开头
\\表示一个 \
\'表示一个 '
\"表示一个 "

2.字符型变量在计算机中以整数的形式存储。

3.因为字符型变量以整数形式存储,所以它相当于一个整数,可以参与运算。

几种编码方式:

  1. ASCII码:占一个字节,总共有128个字符,首位作为奇偶校验码,无法表示所有字符。
  2. Unicode码:占两个字节,字母和汉字以及其他字符都使用两个字节表示,最多表示65536个字符,可以兼容ASCII码。
  3. UTF-8:是Unicode码的一种实现方式,是一种变长编码,有单字节(表示ASCII字符)、双字节、三字节(汉字等)和四字节模式。还有UTF-16等方式。
  4. 其他编码:GBK(全称《汉字内码扩展规范》)、GB2312(被GBK兼容)、BIG5(繁体字的编码)。

四、布尔类型

boolean:占一个字节,只有true和false两种取值,用于逻辑运算。

五、自动类型转换

下图是数值类型的转换方向,自动转换不能逆向进行。

  1.  当有多种类型参与运算时,会将这些类型的数据都自动转换为参与运算的类型中精度最高的那个类型,并且运算的结果也是这个类型。
  2. 高精度的类型无法自动转换为低精度的类型。
  3. 整数字面值的类型默认为int,能够使用字面值初始化短整型是因为:先判断字面值是否在该类型的范围内,如果在,那么就会转换成该类型,否则会报错。
  4. (byte,short)和char之间无法自动类型转换。
  5. 短整型(byte,short,char)在参与运算时会整型提升。
  6. boolean类型不会发生自动类型转换,不能参与运算。

六、强制类型转换

强制类型转换可以将一个类型强制转换成另一个类型(如果合法的话),但这可能会造成精度损失。

七、基本类型转换为String类型

public class ToString{

	public static void main(String[] args){

		//基本类型+""就可以实现基本类型转换为String类型
		String s1 = (byte)123 + "";
		String s2 = (short)1234 + "";
		String s3 = (char)97 + "";
		String s4 = (int)12345 + "";
		String s5 = (long)1234567 + "";
		String s6 = 123.194f + "";
		String s7 = 1434.437 + "";
		String s8 = true + "";

		System.out.println(s1);
		System.out.println(s2);
		System.out.println(s3);
		System.out.println(s4);
		System.out.println(s5);
		System.out.println(s6);
		System.out.println(s7);
		System.out.println(s8);

	}

}

 

 八、String类型转换为基本类型

public class ToBasic{

	public static void main(String[] args){

		//String类型转换为基本类型需要使用基本类型包装类的parseXX方法
		//char不需要使用包装类中的parseXX方法,因为从String可以直接取出字符
		byte a = Byte.parseByte("123");
		short b = Short.parseShort("12345");
		int c = Integer.parseInt("123556");
		long d = Long.parseLong("12342134");
		float e = Float.parseFloat("123");
		double f = Double.parseDouble("1234");
		boolean g = Boolean.parseBoolean("true");
		String str = "abcdefg";
		char ch = str.charAt(0);

		System.out.println(ch);
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
		System.out.println(e);
		System.out.println(f);
		System.out.println(g);

	}

}

在将String类型转换成基本类型时,要保证字符串能转换成有效的数据,否则会在运行时抛出异常,因为在运行时才能发现字符串是非法的。

可以看到不论是无法转换的字符串还是字符串中的数字超出范围,都会抛出异常。

如上图,即使前一段可以正常转换成整型,但是仍旧会报错。

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

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

相关文章

英国/法国/意大利/德国/西班牙,电动交通设备配件等相关政策更新

产品安全 合规政策更新! 首先请看邮件内容 尊敬的卖家: 您好! 我们此次联系您是因为您正在销售需要审批流程的商品。为此,亚马逊正在实施审批流程,以确认我们网站上提供的商品类型须符合指定的认证标准。要在亚马逊…

Cesium小技巧:快速打开API文档

学习Cesium.js的人,肯定经常看官方示例, 网址如下: https://sandcastle.cesium.com/ 有个小技巧,可以快速打开具体类的API文档 在示例中,双击具体类名或方法名,会出现一个提示框 单击或右键菜单-在新标…

Linux系统编程:Linux基础

Linux基本使用 安装 这就不说了网上很多教程,随便一个Linux版本都可以,因为命令都差不多。 检查是否有网络 检查网络有以下几个推测方法,如果没有网络的话就按照这几个可能出现问题的地方对症下药寻找解决办法即可: ctrl al…

蓝桥杯基础---切面条

切面条 一根高筋拉面,中间切一刀,可以得到2根面条。 如果先对折1次,中间切一刀,可以得到3根面条。 如果连续对折2次,中间切一刀,可以得到5根面条。 那么,连续对折10次,中间切一刀…

MySQL数据库安装和介绍

一.数据库的介绍 1.1.MySQL数据库是什么? 一款深受欢迎的开源关系型数据库,Oracle旗下的产品,遵守GPL协议,可以免费使用与修改。 官网:MySQL 特点: 性能卓越、服务稳定 开源、无版权限制、成本低 …

优雅而高效的JavaScript——函数柯里化

🙂博主:小猫娃来啦 🙂文章核心:优雅而高效的JavaScript——函数柯里化 文章目录 前言函数柯里化的概念和原理介绍函数柯里化的优点和应用场景函数柯里化的具体实现方式和实例分析函数柯里化在实际项目中的应用函数柯里化与函数式编…

数据结构:链表(1)

顺序表的优缺点 缺点: 1.插入数据必须移动其他数据,最坏情况下,就是插入到0位置。时间复杂度O(N) 2.删除数据必须移动其他数据,最坏情况下,就是删除0位置。时间复杂度O(N) 3.扩容之后,有可能会浪费空间…

Python并发编程简介

1、Python对并发编程的支持 多线程: threading, 利用CPU和IO可以同时执行的原理,让CPU不会干巴巴等待IO完成多进程: multiprocessing, 利用多核CPU的能力,真正的并行执行任务异步IO: asyncio,在单线程利用CPU和IO同时执行的原理,实现函数异步执行使用Lo…

C++程序员必修第一课【C++基础课程】00:课程介绍

1 课程目标: 搭建 VC 2019 开发环境全面系统学习 C 语法和开发基础学会用代码思维解决实际工作中的问题拥有一定的程序设计能力,能够开发一个完整软件 2 适用人群: 【零基础,想入行 C 程序员,必修第一课程】学生&am…

公众号留言板小程序哪个好用?一一列举

为什么公众号没有留言功能?2018年2月12日之后直到现在,新注册公众号的运营者会发现一个问题:无论是个人还是企业的公众号,在后台都找不到留言功能了。这对公众号来说绝对是一个极差的体验,少了一个这么重要的功能&…

【java学习】对象的产生(18)

文章目录 1. 初始化赋值2. 匿名对象3. 练习3.1. 习题一3.2. 习题二 4. 总结 1. 初始化赋值 当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变量类型都是引用类型,如上节的 Person 和前面讲过的数组。 成员…

C# 搭建一个简单的WebApi项目23.10.10

一、创建Web API 1、创建一个新的web API项目 启动VS 2019,并在“开始页”选择“创建新项目”。或从“文件”菜单选择“新建”,然后选择“项目”。 选择ASP.NET Web应用程序(.NET Framework) 2.点击下一步,到这个页面时选择Web API。 3.选中…

类加载器、双亲委派机制

目录 1 JVM是什么2 类加载系统2.1 类的加载过程2.2 类加载器 3 双亲委派机制3.1 双亲委派机制介绍3.2 双亲委派机制的优缺点3.3 自定义类加载器实现双亲委派机制 1 JVM是什么 Java Virtual Machine(Java虚拟机)是java程序实现跨平台的⼀个重要的⼯具&am…

python查找替换:查找空行,空行前后添加```,```中间添加 # + 空格 + 空行后遇到的第1行文字?

初始代码 查找空行空行前后添加 中间添加 # 空行后遇到的第1行文字txt 36 96 159 8 72可以使用Python的字符串处理函数来查找并修改文本中的空行。以下是一个示例代码,演示如何在文本中查找空行,并在每个空行前后添加和一个注释: # 原始文本…

销售活动管理必备工具——CRM系统软件

在企业业务中,销售活动是实现企业业绩目标的基本单元,起着奠基石的作用。CRM销售管理系统是销售活动管理的必备工具,帮助企业更好地开展销售活动。下面来说说CRM系统如何找到并输出关键销售活动? 在能顺利找到并输出关键销售活动…

选刊CFP | 中科院1区TOP,IF18.6,Elsevier出版社,仅3个月录用!

【SciencePub学术】 本期推荐 部分学者论文完成后,选刊上犯难,面对纷繁复杂的期刊信息及流程,很难有时间和精力一一调研查看,小编在也经常收到此类信息,希望我们帮助查询期刊信息。为此,小编开设此专栏【选…

leetcode:455. 分发饼干(python3解法)

难度:简单 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j&#xff…

超详细!主流大语言模型的技术原理细节汇总!

1.比较 LLaMA、ChatGLM、Falcon 等大语言模型的细节:tokenizer、位置编码、Layer Normalization、激活函数等。 2. 大语言模型的分布式训练技术:数据并行、张量模型并行、流水线并行、3D 并行、零冗余优化器 ZeRO、CPU 卸载技术 ZeRo-offload、混合精度训…

吃透底层:从路由到前缀树

前言 今天学到关于路由相关文章,发现动态路由中有一个很常见的实现方式是前缀树,很感兴趣这个算法,故进行记录。 前缀树 Trie(又被叫做字典树)可以看作是一个确定有限状态自动机,尽管边上的符号一般是隐含…

Prometheus和grafana安装配置手册

1.简介 本文档为prometheus和grafana安装配置手册,prometheus和grafana的内容、和操作过程,详细介绍了服务监控配置、dashboard配置、告警配置等操作。 2.部署说明 Prometheus基于Golang编写(需要安装),编译后的软件…