JAVA从零开始02_数据类型

一、语言类型

简介:Java是一种强类型语言,同时还有弱类型语言,强类型语言是指在编程语言中,变量的类型必须在编译期间确定并且不能改变。这种语言的编译器会检查变量的类型,如果类型不匹配则会在编译时生成错误。这种语言确保了变量的类型安全,并且可以提高代码的可读性和可维护性。Java、C++、C# 等语言都是强类型语言。与强类型语言相对的是弱类型语言,例如 Python、Ruby 等语言。弱类型语言不需要显式声明变量的类型,编译器可以在运行时自动推断变量的类型。

强类型语言和弱类型语言的区别:

变量类型:强类型语言中,变量的类型必须在编译期间确定,并且不能改变;弱类型语言中,变量的类型可以在运行时动态改变。
类型检查:强类型语言中,编译器会检查变量的类型,如果类型不匹配会生成错误;弱类型语言中,编译器不会对变量的类型进行检查,可能导致运行时错误。
代码可读性:强类型语言中,代码的可读性较高,因为变量的类型是显式声明的;弱类型语言中,代码的可读性较低,因为变量的类型不是明确的。
代码维护性:强类型语言中,代码的维护性较高,因为变量的类型是明确的;弱类型语言中,代码的维护性较低,因为变量的类型可能不是明确的。

强类型语言的优点:
变量类型明确:变量的类型是明确的,易于编程和阅读。
类型安全:编译器会检查变量的类型,防止出现类型不匹配的错误,提高代码的安全性。
可读性好:代码可读性好,因为变量的类型是明确的。
可维护性好:代码可维护性好,因为变量的类型是明确的。

弱类型语言的优点:
编程简单:弱类型语言的语法简单,易于学习和使用。
运行速度快:弱类型语言不需要进行类型检查,因此运行速度比较快。
灵活性高:弱类型语言的变量类型可以在运行时动态改变,因此比较灵活。

总体来说,强类型语言的安全性较高,代码的可读性和可维护性也较好;而弱类型语言的编程简单,运行速度快,灵活性高。


二、字面量 制表符 变量 关键字 注释 标识符

字面量是指程序中直接表示的值,而不是一个变量或表达式。字面量是固定的值,在编译时就已经确定了。
在Java中,字面量可以是整数、浮点数、布尔值、字符串等,字面量是编程语言中非常重要的概念,它们可以在编译时预先确定,并在运行时加快程序的执行速度。
在下面的代码中,10、3.14、true和"hello"都是字面量。在编译时,它们的值将被固定下来,不会再改变。

int a = 10;
double b = 3.14;
boolean c = true;
String d = "hello";

制表符是指在程序代码中用于对齐和缩进的特殊字符。在许多编程语言中,制表符被用于指示代码的缩进级别,以便使代码更清晰和易于阅读。如\t在字符串中通常代表一个制表符,它的宽度通常是8个字符,并且具有补全性质,即如果字符串的长度不足8个字符,则使用空格补齐。

变量是程序中存储数据的一种容器。它允许程序员在程序的不同部分存储和使用数据。

变量通常具有以下特征:
名称:每个变量都有一个名称,用于在程序中引用它。
类型:变量类型定义了变量可以存储的数据类型,例如整数、浮点数、字符串等。
值:变量存储了一个数值,该数值可以在程序的不同部分随时访问和更改。

使用变量时,应注意以下几点:

命名规则:变量名称应该遵循特定的命名规则,例如在Java中,变量名称应该以字母、下划线或美元符号开头,并且只能包含字母、数字和下划线。
类型:变量的类型必须与它存储的值的类型匹配,否则程序可能会出错。
初始化:在使用变量之前,必须为其赋值,以便在程序的不同部分使用它。
范围:变量的范围决定了它的作用域,即在程序的哪些部分可以使用它。
更改:变量的值可以在程序的不同部分更改,但应谨慎更改,以避免导致程序错误。

文档:为了提高代码可读性和可维护性,变量应该进行适当的注释,以说明它的用途和含义。

关键字和注释是编程语言中的重要概念,在使用时应注意以下几点:

关键字:关键字是编程语言中预定义的特殊单词,用于实现特定功能。例如,在Java中,“public”、"private"和"static"都是关键字。在使用关键字时,必须遵循语言的语法规则,以确保代码的正确性。
注释:注释是程序代码的文字说明,不会影响代码的执行。它可以用于说明代码的用途、功能和实现原理,以提高代码的可读性和可维护性。在使用注释时,应该使用适当的注释风格,以便更好地组织和管理注释。

Java 中的标识符是用于命名类、变量、方法、接口、常量等的字符串。标识符在 Java 中遵循以下规则:
必须以字母、下划线或美元符号开头,后面可以跟字母、数字、下划线或美元符号。
标识符不能以 Java 中的关键字作为标识符名称。
标识符不能与 Java 中的预定义类型名称相同,例如 int、double 等。
标识符不区分大小写,但是通常使用驼峰命名法。
标识符的长度没有限制,但是应该选择有意义且易于理解的名称。


三、JAVA数据类型

Java作为强类型语言提供了多种数据类型,分为两类:基本数据类型和引用数据类型。基本数据类型:基本数据类型包括整数类型、浮点数类型、布尔类型和字符类型。
整数类型:byte、short、int、long;
浮点数类型:float、double;
布尔类型:boolean;
字符类型:char。
引用数据类型:引用数据类型包括类、接口、数组等。

Java中基本数据类型的取值范围和占用的存储空间大小如下:
byte:占用1个字节的存储空间,取值范围为-128~127。
short:占用2个字节的存储空间,取值范围为-32768~32767。
int:占用4个字节的存储空间,取值范围为-2147483648~2147483647。
long:占用8个字节的存储空间,取值范围为-9223372036854775808~9223372036854775807。
float:占用4个字节的存储空间,表示单精度浮点数。
double:占用8个字节的存储空间,表示双精度浮点数。
char:占用2个字节的存储空间,表示一个Unicode字符,取值范围为0~65535。
boolean:占用1个字节的存储空间,取值范围为true或false。

基本数据类型之间的主要区别有:

占用的存储空间不同:每种基本数据类型都占用不同的存储空间,占用空间越大,能存储的数据范围就越大。
可表示的数值范围不同:每种基本数据类型都有不同的可表示的数值范围,对于数值范围较小的数据类型,需要使用较少的存储空间,但是可表示的数值范围也较小;对于数值范围较大的数据类型,需要使用较多的存储空间,但是可表示的数值范围也较大。
精度不同:不同的数据类型具有不同的精度,例如,float类型的精度比double类型的精度低。
用途不同:每种数据类型都有自己的用途,例如,char类型适合存储字符,而int类型适合存储整数。

位数和字节是计算机存储数据的两个重要概念。
位数(bit):是计算机中最小的存储单元,表示一个二进制位,可以是0或1。
字节(byte):是计算机中的存储单元,一个字节由8个二进制位组成,可以表示256个不同的数字。

因此,字节是位数的单位,1字节=8位。在计算机中,数据的大小通常以字节为单位表示,例如内存容量、文件大小等。

Java中基本数据类型的位数如下:
byte: 8 位
short: 16 位
int: 32 位
long: 64 位
float: 32 位
double: 64 位
char: 16 位
boolean: 1 位(实际上是用一个字节存储的)

double和float的使用场景

double 和 float 都是浮点数数据类型,主要用于存储带有小数部分的数字。但是,它们有一些重要的差异,需要考虑在使用时的选择。

double:是双精度浮点数,占用 64 位(8 字节)存储空间。由于它的精度较高,因此适用于科学计算、精确计算等场景。
float:是单精度浮点数,占用 32 位(4 字节)存储空间。由于它的精度较低,因此适用于空间限制较严格的场景,例如移动设备等。
因此,对于需要精确计算的场景,应该选择 double;对于需要限制存储空间的场景,应该选择 float。

整数类型之间的使用场景

Java 中的整数类型包括 byte、short、int 和 long,每个整数类型都有不同的取值范围和存储空间。因此,它们在使用时的适用场景也有所不同。

byte:是一种占用 8 位存储空间的整数类型,取值范围是 -128 到 127。因为它的存储空间最小,因此适用于空间限制较严格的场景,例如移动设备等。
short:是一种占用 16 位存储空间的整数类型,取值范围是 -32768 到 32767。因为它的存储空间比 byte 大,因此适用于存储较小的整数。
int:是一种占用 32 位存储空间的整数类型,取值范围是 -2147483648 到 2147483647。它是最常用的整数类型,适用于多数整数计算场景。
long:是一种占用 64 位存储空间的整数类型,取值范围是 -9223372036854775808 到 9223372036854775807。因为它的存储空间比其他整数类型大,因此适用于存储较大的整数。

在选择整数类型时,应该根据存储空间和取值范围的需求进行选择,以保证数据的准确性和程序的效率。


四、基础类型的强制转换

如下方java代码,a的结果为44

byte a = (byte) 300;

这段代码将整数值300强制转换为byte类型,但是由于byte类型的取值范围是-128~127,因此300不在该范围内。当进行强制类型转换时,如果超出目标类型的取值范围,则会进行截断,即只保留最低几位二进制位,而抛弃高位二进制位。

计算机在存储数字时使用二进制表示,这种二进制表示叫做补码。补码是一种对于有符号数的二进制表示方式,用来解决在计算机中表示负数的问题。
原码:就是一个数的二进制表示,第一位为符号位,0表示正数,1表示负数。
反码:对于正数的原码,它的反码就是它本身;对于负数,反码是将其二进制位取反。
补码:对于正数的原码,它的补码就是它本身;对于负数,补码是它的反码加1。
在计算机中使用补码的好处是,可以在一种编码中实现正数和负数的加减运算,而不需要考虑符号位。
具体可以参考文章《java:int强制类型转换成byte》
http://t.csdn.cn/uc03U


五、进制

进制是指一种数学系统,用于表示数字。常见的进制有二进制、八进制、十进制和十六进制。

二进制:二进制是一种基于2的数学系统,只使用0和1两个数字进行表示。二进制是计算机内部存储数据的基础,因为计算机内部的逻辑电路只能识别0和1两个数字。
八进制:八进制是一种基于8的数学系统,使用0到7八个数字进行表示。八进制常用于程序设计和系统管理,因为它比二进制更简单,而且比十进制更紧凑。
十进制:十进制是一种基于10的数学系统,使用0到9十个数字进行表示。十进制是人类通常使用的数学系统,因为它易于理解和计算。
十六进制:十六进制是一种基于16的数学系统,使用0到9十个数字和A到F六个字母进行表示。十六进制常用于计算机编程和网络通信,因为它比十进制更紧凑,而且易于转换为二进制。

二维码跟二进制

二维码是一种矩阵码,它不是二进制。二维码是一种图形编码方式,用于存储和传输数字、字母、符号和其他类型的信息。二维码通过使用黑色和白色的图形模式来表示数据,其中黑色的图形表示1,白色的图形表示0。因此,二维码可以被看作是二进制的一种图形表示形式。但是,它不是纯粹的二进制编码,因为它还使用了一些特殊的编码规则来确保数据的完整性和可读性。

进制之间的转换规则如下:

十进制转二进制:将十进制数不断除以2,并记录每一步的余数,最后把所有余数倒序排列,就是该数的二进制表示。
二进制转十进制:将二进制数的每一位与2的对应次幂相乘,并相加,最终得到的结果就是十进制表示。
十进制转八进制:将十进制数不断除以8,并记录每一步的余数,最后把所有余数倒序排列,就是该数的八进制表示。
八进制转十进制:将八进制数的每一位与8的对应次幂相乘,并相加,最终得到的结果就是十进制表示。
十进制转十六进制:将十进制数不断除以16,并记录每一步的余数,最后把所有余数转换为十六进制字母(A~F),并倒序排列,就是该数的十六进制表示。
十六进制转十进制:将十六进制数的每一位(数字或字母)与16的对应次幂相乘,并相加,最终得到的结果就是十进制表示。

进制的运用场景如下:

计算机存储:计算机内部使用二进制来存储数据,因为计算机内部的逻辑电路只能识别0和1两个数字。
网络通信:在网络通信中,经常使用十六进制来表示数据,因为它比十进制更紧凑,易于转换为二进制。
程序设计:在程序设计中,经常使用八进制和十六进制,因为它们比十进制更紧凑,易于编程和计算。
日常生活:在日常生活中,人们通常使用十进制,因为它易于理解和计算。
电器设备:在一些电器设备,如投币式售货机、电子游戏机等,通常使用二进制或八进制,以实现简单的数学计算和数据存储。

计算机存储数据的方式如下:

文本数据:文本数据通常是使用编码存储的,例如ASCII编码、Unicode编码等。在编码的过程中,文本数据会被转换为计算机能够识别的数字形式,然后存储在计算机的硬盘或内存中。
图片数据:图片数据通常是使用图像格式存储的,例如JPEG、PNG、GIF等。在存储图片数据时,计算机会将图片的每一个像素转换为数字,然后存储在硬盘或内存中。
声音数据:声音数据通常是使用音频格式存储的,例如MP3、WAV、AAC等。在存储声音数据时,计算机会将声音的每一个采样转换为数字,然后存储在硬盘或内存中。

总的来说,计算机存储文本数据、图片数据和声音数据的方式是通过将数据转换为数字形式存储的,以便计算机能够识别和处理这些数据。

计算机的存储规则主要涉及到以下几点:

地址:计算机的存储单元都有一个独特的地址,用于标识该单元的位置。
存储单元大小:计算机的存储单元大小通常是固定的,例如,在64位系统中,存储单元的大小通常为8字节。
存储方式:计算机的存储单元可以按位或字节存储数据,具体存储方式取决于程序的需求。
数据类型:计算机的存储单元可以存储各种数据类型,例如整数、浮点数、字符串等。
存储器类型:计算机的存储器分为主存和外存,其中主存用于存储程序正在使用的数据,外存用于存储程序不需要立即使用的数据。

二进制如何表示小数
在计算机中,小数是通过二进制小数来表示的。二进制小数表示的原理是:将小数的小数部分看作二进制小数的小数位,通过不断乘2,计算出所有二进制位上的值,再加起来得到整个小数的值。例如:0.1在二进制下的表示方法为0.00011001100110011…,可以看作是一个无限循环小数。在计算机中,小数有一定的精度,所以二进制小数只能精确表示到一定范围内的小数。
计算机中的浮点数存储方式是使用二进制表示的,但是有些小数,例如0.1或0.2,不能在二进制中精确表示。
因此,当使用浮点数进行计算时,可能会存在一些误差。例如,两个精确的浮点数相加的结果可能不是一个精确的浮点数。这种误差被称为精度误差。
需要注意的是,精度误差并不影响大多数的计算,因为它们是很小的,但在一些特殊的场景下,精度误差可能对结果造成重大影响。因此,在需要精确计算的场景下,可以使用BigDecimal类或其他的精度更高的数学库。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值