一、常量
常量表示不能改变的数值
Java中常量的分类:
整数常量:所有整数
小数常量:所有小数
布尔型常量(boolean):只有两个数值true false
字符型常量:将一个数字,字母或者符号用单引号[ ' ' ]标识
字符串常量:将一个或者多个字符用双引号[ " " ]标识
Null常量:只有一个数值null表示空
二、变量
变量表示可能改变的数值
Java中变量的概念:内存中的一个存储区域。该区域有自己的名称(变量名)和类型(数据类型)。该区域的数据可以在同一类型范围内不断变化
变量的声明形式
声明: 数据类型 变量名 = 【值】
赋值: 变量名 = 【值】
声明并赋值: 数据类型 变量名 = 【值】
数据类型 变量名;变量名 = 【值】
int i = 1;
float f;
f = 12.3f;
double d1 = 0.1, d2, d3=0.3;
变量使用步骤
// 声明变量,即“根据数据类型在内存申请空间”
// 【数据类型】 【变量名】;
int a;
// 赋值,即“将数据存储至对应的内存空间”
// 【变量名】 = 【值】;
a = 1;
/*
*可以合并为:
*【数据类型】 【变量名】 = 【值】;
*/
int a = 1;
变量的分类
临时变量(局部变量):方法内部申明的变量(包括参数)
成员变量(全局变量):在方法外,类体内声明的变量
变量的使用注意事项
变量的作用范围(在一对中括号“{}”内有效)
Java中的每一个变量在使用前必须先声明,然后进行赋值,才能够使用,否则报错
该区域的数据可以在同一类型范围内不断变化
在一个方法中的变量名不能重复声明
可以用来存放同一类型的常量
三、Java中的数据类型分类
Java语言是强类型语言,任何一个变量或者常量在Java中必须要有确定的数据类型。通常有两种数据类型,即基本数据类型和引用数据类型。
- 基本数据类型
每种数据类型在内存中占有不同的长度,计算机存储设备中最小的信息单元为:“位”(bit),又称为“比特位”,连续的8位称为1个“字节”(byte)。注:操作系统分配的内存最少1个字节,即8位,而不是1位。长度越长,所表示的范围也就越大。
- 基本数据类型的初始值
每种具体类型都有不同的默认值,当没有为一个属性变量赋值时,会根据类型为其赋值为默认值。注:char的默认值是“ \u0000 ”,等于一个空字符,boolean(布尔型)的默认值是false。
- 基本数据类型的转换
不同的数据类型之间可以相互转换。
表示从范围小的类型转换为表示范围大的类型,可以直接转换,称为隐式转换
byte b = 1;
int i = -2;
i = b;
b = i; //报错,读者可以学习计算机硬件基础会理解报错原因;简单讲就是int太大(4B)塞不进byte(1B)里,会发生损失
表示范围大的类型转换表示范围小的类型,需要强制类型转换,称为显示转换
byte b = 1;
int i = -2;
b = (byte)i;
c = (char)i;
虽然数据类型之间可以进行强制的隐式转换,但是也需要有一定的前提(如果要存储的值无需截断或四舍五入即可适应变量,则可以进行隐式转换)。数值类型和boolean类型之间不能进行转换(强制转换也不行)。
byte b = 1;
boolean boo = false;
b = boo; //编译错误
boo = b; //编译错误
当使用 “+”、“-”、“*”、“/”对基本数据类型进行运算时,运算后的数据类型可能会发生变化或者报错。
System.out.println('a'); //输出字符 a
System.out.println('a'+1); //输出字符 a 的ASCII码加一的结果
//结果:
// a
// 98
ASCII对照表:
总结:
如果byte、short和char数据类型的值之间相计算,计算结果是int型
如果一个操作数最大范围的数据类型是long型,计算结果就是long型
如果一个操作数最大范围的数据类型是float 型,计算结果就是float型
如果一个操作数最大范围的数据类型是double型,计算结果就是double型
四、进制转换
十进制:0~9;满10进1
二进制:0,1;满2进1
八进制:0~7;满8进1,进制表示用0开头
十六进制:0~9,A~F(表示10~15);进制表示用0x开头
- 十进制转换任意进制数
一个十进制数转换成任意进制数常采用基数乘除法。这种转换方法对十进制的整数部分和小数部分将分别处理,对整数部分采用除基取余法,对小数部分采取乘基取整法,最后将整数部分与小鼠部分拼接起来。
除基取余法(整数部分的转换):整数部分除基取余,最先得到的余数为数的最低位,最后得到的数为数的最高位,商为0时结束。
乘基取整法(小数部分的转换):小数部分乘基取整,最先取得的整数为数的最高位,最后取得整数为数的最低位,乘积为1.0或者满足精度要求时结束。
- 任意进制转换成十进制
将任意进制数的各位数码和他们的权值相乘,再把乘积相加,就得到了十进制结果,这种方法称为按权展开相加法。
- 二进制与八进制之间的转换
将二进制数三个看成一组,三个不够时补0
- 二进制与十六进制之间的转换
将二进制数四个看成一组,四个不够时补0
- 八进制与十六进制之间的转换
五、引用类型
在Java中除了基本数据类型,其他的数据类型都是引用数据类型。Java的引用不支持对内存直接操作,在Java中,任何对象都需要通过引用才能访问到,没有引用指向的对象被视为垃圾对象,将会被回收。引用类型又称为对象变量类型,是相对于基本数据类型来说的(基本数据类型不是对象),而又被称为复合数据类型,可以这样理解,引用类型的数据最终都是由基本数据类型构成的。而像接口,接口是不能实例化的,最终的实现还是由类实现的;数组在JVM中的实现也是通过类实现的,每个类型的一维数组,二维数组……都是一个类,只是这是一个特殊的类,它的对象头有别于一般对象的对象头。如字符串可以用String类型来声明。
//声明两个引用类型的变量s1,s2
String s1 = "Hello";
String s2 = "World";
s2 = "Hello world";