常量、变量、数据类型以及数据类型的详解
常量
1.常量的定义:在程序的执行过程过,其值不发生改变的量称为常量。
2.Java中对于常量的分类:
1. 字面值常量:
字符串常量:用双引号括起来的内容 比如"abc"
整数常量:所有的整数
小数常量:所有的小数
字符常量:用单引号括起来的单个字符 比如"a"
布尔常量:true false
空常量:null
2.自定义常量:人为定义的常量称为自定义常量,变量其实是内存中一小块区域。
变量
1.变量的定义:在程序执行过程中,其值可以发生改变的量称为变量。
为什么要定义变量?
用来不断的存放同一类型的常量,并且可以重复使用。
2.变量的定义格式
数据类型 变量名=变量值
变量只能使用在变量所定义的同一个作用域,意思是说你在定义变量时在哪一个作用域中,变量只在这一个作用域中起作用,在别的作用域中这个变量无效。
变量在使用时,必须要先赋值后使用。
进制
进制:进制就是所谓的进位值,是人为规定的一种进位方法,X进制,就表示逢X进一。
常见的进制有二进制,八进制,十进制,十六进制等等。十进制就是日常所用的进制。而计算机所能识别的只有二进制,二进制只有0和1,如果数据比较大,那么用二进制表示这个数时,数据长度会很长,不方便使用,所以在人为运算中,会将二进制先转换成八进制或十六进制用来表示,之后再进行运算。
Java中表示二进制时在二进制前加0b 例如:ob101010
八进制前加上0 例如:075
十进制则原样写 例如:60
十六进制前加上0x 例如0x10
任意进制转换为十进制采用的是维权展开法。
十进制转换为任意进制的规则是除基取余,直到商为0,余数逆排序。
例如将十进制 20转换为二进制如图所示
如图所示将十进制的20转换为二进制的结果为10100
数据类型
在Java中数据类型分为基本数据类型和引用数据类型(后面讲)
基本数据类型大致分为四类八种
数值型
整数型 | 字节数 | 范围 |
---|---|---|
byte | 1(8bit) | -128 ~ 127 |
short | 2(16bit) | -2^15 ~ 2^15-1 |
int | 4(32bit) | -2^31 ~ 2^31-1 |
long | 8(64bit) | -2^63 ~ -2^63-1 |
浮点型 | 字节数 | 范围 |
float | 4(32bit) | -3.40310^38 ~ 3.40310^38 |
double | 8(64bit) | -1.79810^308 ~ 1.79810^308 |
字符型 | 字节数 | 范围 |
char | 2(16bit) | 0 ~ 2^16 - 1 = 65535 |
布尔型 | 字节数 | 范围 |
boolean | 1 | - |
在没有规定变量是整数型中任意一个,默认情况下整数型为int,浮点型为double。
数据类型转换
数据类型转换分为自动类型转换和强制类型转换
自动类型转换又称为隐式转换,规则是两种不同类型的数据在进行运算中,低类型的数据会自动向高类型的数据进行转换。
例如:
class B{
public static void main(String[] args){
int a,c;
byte b;
a=3002;
b=10;
c=a+b;
System.out.println(c);
}
}
其结果会自动的转换为int类型。
自动类型转换的规则:
1.boolean类型不能转换为其他的数据类型
2.byte,char,short类型在进行运算时会首先转换为int类型。
3.自动类型转换简要图:
强制类型转换
强制转换的格式:
目标数据类型 变量名=(目标数据类型)(被转换的数据);
注意:强制类型转换可能会造成精度损失。
例如:
class B{ public static void main(String[] args){ byte b = 130; } }
结果如下所示:
如果要使这个赋值正确,那么给130的前面加上(byte),将int类型的130转换为byte类型。
当字符串和字符参与运算
在java中"+"号起两个作用,一个是起拼接作用,另一个是起数学运算中加号的作用。
当“+”号两端有一个是字符串时,那么加号起拼接作用。例如:
System.out.println("HelloWorld"+55);
这个结果输出就是 HelloWorld55;
当“+”号两端都是数值时,那么加号起数学运算中的加法运算。例如:
System.out.println(5+5);
这个结果便会输出10。
如果是单个字符参与运算则会有两种情况
一种是用单引号括起来的单个字符和数值进行“+”号运算,那么单引号括起来的的字符在进行加号运算时,会根据ASCII表中这个字符对应的ASCII值进行转换,之后再与数值相加。
例如:
System.out.println('A'+5);
这个结果输出便是70,因为在ASCII中“A”所对应的值是65,转换后再做加法运算之后便是65+5=70。
另一种是双引号括起来的单个字符和数值进行“+”号运算,那么会将双引号括起来的单个字符当成字符串,再与数值进行拼接。