常量:
程序中固定不变化的值
1.常量的分类:
(1) 字面量常量:整数常量:1、2、3、4;
小数常量:3.14、6.12
布尔常量:true、false 等等.....
字面量:表示直接给出的一个值(可以是小数、整数、true、false等),直接量。
(2)定义的final常量:
请参照 后面的博客,会讲到。
package constant;
public class ConstantTest {
public static void main(String[] args) {
//a 定义为整型的一个常量 10
int a = 10;
System.out.println("a的值为:"+a);
System.out.println("a+10 = "+(a+10));
}
}
结果:
变量:
表示存储空间,可以存放某一类型的常量,没有固定的值,可以重复使用。也可以存放某种类型的未知数据
1. 变量的分类:
(1)成员变量:直接定义在类里的变量,有课称之为全局变量或字段。
(2)局部变量:除了成员变量外,其他就是局部变量。根据定义的位置不同,有三种表现形式:
方法形参、方法内变量、代码块变量。
2.变量的作用域:
变量的存在范围,只有在这个范围内,程序代码才能访问它。当一个变量被定义时,它的作用域就已 经确定了,即:定义开始到定义所在的花括号结束 ;
3.变量的使用规则:
(1)变量必须先声明,并且初始化之后才能使用
(2)声明变量必须有数据类型
(3)同一作用域内,变量不能重复定义
定义变量作用:指定在内存空间中分配的空间大小、规定这个变量能接收的运算
例:
package variate;
/**
*
* @author FYDragon
* 声明变量
*
*/
public class VariateTest {
public static void main(String[] args) {
int a ; //定义一个变量 a
int b = 5;
a = b;
System.out.println("a的值为:"+a);
a = 10;
System.out.println("a的值为:"+a);
}
}
结果:
变量的命名规则:
(1)Java中变量可由字母、数字、下划线、$ 组成
(2)变量名不能以数字开头
(3)变量名不能是Java中的关键字
关键字就是Java中已经提前命名好的具有特殊功能的标识作用的字符串
基本数据类型:
如图所示:Java的数据类型分为:基本类型、引用类型
今天我们讲述一下基本类型
boolean类型:
通常用于逻辑运算和程序流程控制,该类型的值只能为 true 或 false 。
不可使用 0 或 非0 的整数代替 false 或 true 。这一点与C语言不同。
整数类型(byte、short、int 、long):
在我们编写程序中,整数的大小范围很广泛,所以如果很小的数给它开辟一个很大的空间实属浪费资源,所以有四种整数类型的变量,由小到大排列为 : byte < short < int < long 每种类型的大小在上图中均已给出。
整形变量的四种表现形式:
二进制整数:0B或0b开头 ,如:int a = OB110;
八进制整数:要求以0开头,如:int a = 012;
十进制整数:如:int a = 17;
十六进制整数:要求以0x或0X开头,如:int a = 0X12;
Java默认整型为int 类型
小数类型(float、double) :
float、double 类型,又称为浮点类型,其中float表示单精度类型,double表示双精度类型,但二者都不能表示精确的小数。
Java的浮点类型常量有两种表现形式:
十进制形式:例如:3.14、1.68
科学计数法形式:例如:3.14e2、1000E-2(科学计数法返回的结果是double类型)
默认情况下,一个浮点类型的字面量默认是double类型,若要声明一个常量为float型,需在常量后加上 f 或 F ,double常量后面的 d 或 D 可以省略。
字符类型(char):字符、字母、符号
char类型:表示16位的无符号整数或Unicode字符,Java对字符采用Unicode字符编码。
什么是Unicode?
Unicode收集了世界上所有语言文字中的符号,是一种跨平台的编码凡是,Java字符占两个字节,可以表示一个汉字。
什么是编码?
计算机只能表示 0 和 1 两个数,于是人们规定使用一个数字去表示特定的字符,如:a 是用 97 表示
char常量有3中表示形式:
(1)直接使用单个字符来指定字符常量,格式:'A'、'7'
(2)直接作为十进制整数数值使用,char类型的范围在[0 , 65535],如:97,打印出来的值是 a
(3)和括号2一样,表示16进制的数 ,格式:‘\uX’, X表示16进制整数,如:97的16进制是 61。所以 '\u0061' 打印出来也是 a 。
如:
package CharDemo;
public class CharTest {
public static void main(String[] args) {
char i = 97;
System.out.println(i);
char j = '\u0061';
System.out.println(j);
char k = 'a';
System.out.println(k);
}
}
结果:
数据类型之间的转换:
boolean不属于数值类型,不能参与转化
1.自动转换
也称为“隐式类型转换”,当吧小的数据范围类型的数值或变量赋给另一个大的数据范围的类型 变量,系统可以完成自动类型转型,这好比把一碗米饭放进锅里一样。
例如:
package ChangeType;
public class ChangeDemo {
public static void main(String[] args) {
byte b1 = 5;
short s1 = b1;
int i1 = s1;
long l1 = i1;
float f1 = l1;
double d1 = f1;
System.out.println(d1);
}
}
结果:
2.强制转换
也称为“显示类型转换”;当把大范围类型的数值或变量赋给小的范围的类型变量时,此时系统不能自动完成转换,需要加上强制转换符,但这样的操作可能造成数据精度的降低或者溢出,所以使用时要格外注意。这就好比把一锅的饭要放在一个碗里,肯定装不下会溢出来。
如:
package ChangeType;
public class ChangeDemo {
public static void main(String[] args) {
byte b1 = (byte) 65535;
System.out.println(b1);
}
}
结果:
表达式类型的自动提升:
当一个算术表达式中包含很多基本数据类型(boolean除外)的值时,整个算术表达式的数据类型将在数据运算时出现类型自动提升,其规则是:所有的byte 、short 、char 类型被自动提升到int类型;
如:
package ChangeType;
public class ChangeDemo {
public static void main(String[] args) {
double d1 = 123 + 1.1F + 99L +3.14;
System.out.println(d1);
}
}
结果: