day03_ 基本数据类型丶常量丶变量
基本数据类型
Java的数据类型分为两大类:
- 基本数据类型:包括 整数、浮点数、字符、布尔
- 引用数据类型:包括 类、数组、接口...
基本数据类型
注意事项
- 浮点数底层存储方式与 整数不同有符号位丶指数位 丶尾数位,因此不能精确的表示一个值
- 浮点数的取值范围,远远大于整数类型
- double精度:科学记数法的小数点后15~16位
- float 精度:科学记数法的小数点后6~7位
基本数据类型详解
byte 类型
// byte字节型 占1个字节 存储范围:-128~127byte b =127;
short 类型
// short短整型 占2个字节 存储范围:-32768~32767short money = 30000;
int 类型
// int 整型 默认的类型 占4个字节(默认使用的类型) 存储范围:-2的31次方 ~ 2的31次方-1
int it = 232442442;
long 类型
/*
long 类型占内存:8个字节存储范围:-2的63次方 ~ 2的63次方-1
*/long lg = 132223243244244 ; 报错
/*
注意:随便写一个整数字面量默认是int类型的,
132223243244244虽然没有超过long的范围,
但是它超过了本身int类型的表示范围。
*/// 如果希望随便写一个整数字面量当成long类型,需要在其后加L/l
lg = 132223243244244L;
float 类型
// float单精度 占4个字节 精度:科学记数法的小数点后6~7位
float f = 98.5; 报错
// 注意:小数字面量默认是double类型,如果希望写的小数字面量是float类型的需要在其后加上 F / f
float score = 98.5F;
double类型
// 6、double双精度 占8个字节 小数的默认数据类型 精度:科学记数法的小数点后15~16位
double score2 = 999.99;
char类型
/*占内存:2个字节字符常量的几种表示方式如下所示*/// 方式一:'一个字符'
char c = 'a';// 方式二:转义字符
c = '\t';// 方式三:\u字符的Unicode编码值的十六进制型
c = '\u5c1a';//方式四:直接给char类型变量赋值十进制的0~65535之间的Unicode编码值
c = 655;
boolean布尔类型
// 布尔类型 boolean 只能存储true或false
boolean rs = true;
boolean rs2 = false;
常量
常量就是在程序执行的过程中,其值不可以发生改变的量
常量的分类:
- 自定义常量:通过final关键字定义
// java 内置的常量 使用final 定义的
System.out.println(Math.PI); //3.141592653589793
- 字面值常量:字面量就是数据在程序中的书写格式,字面量也是常量
示例
public class Constant {public static void main(String[] args) {// 1、整数System.out.println(66);System.out.println(-23);// 2、小数System.out.println(99.5);// 3、字符:必须单引号围起来,有且仅能有一个字符System.out.println('中');System.out.println('0');System.out.println('\n'); // \n换行System.out.println('\t'); // \t空格System.out.println('a');// 4、字符串:必须双引号围起来,内容可以随意System.out.println("");System.out.println("我爱你中国!abc");System.out.println(" 学习Java使我快乐!~~~");// 5、布尔类型:true falseSystem.out.println(true);System.out.println(false);// 6、空类型 null (以后再详细说明!)//null 不能直接输出}
}
变量
变量 就是用来存储一个数据的内存区域(可以理解成盒子),且里面存储的数据可以变化。我们声明一个变量,实质就是申请一块内存。
变量的三要素
- 数据类型:决定空间大小,和数据类型
- 变量名:只要是合法的标识符即可
- 变量值:变量中具体存储的数据
声明变量同时赋值
示例
// 数据类型 变量名 = 初始化值;
int age = 18;
System.out.println(age);
变量也可以先声明,后赋值
/*先声明,后赋值(使用前赋值即可)数据类型 变量名;变量名 = 初始化值;*/double money;money = 55.5;System.out.println(money);
还可以在同一行定义多个同一种数据类型的变量,中间使用逗号隔开。但不建议使用这种方式,降低程序的可读性。
int a = 10, b = 20; // 定义int类型的变量a和b,中间使用逗号隔开System.out.println(a);System.out.println(b);int c,d; // 声明int类型的变量c和d,中间使用逗号隔开c = 30;d = 40;System.out.println(c);System.out.println(d);
变量的使用方式
通过变量名直接引用 变量内存空间存储的值
int age = 18;//输出变量的值System.out.println(age);
变量参与运算
age = age + 1;//年龄增加1岁
变量重新赋值
int age = 15;//对变量重写赋值时 前面一定不要加 数据类型 否则 相当于 重新声明一个新的变量 会 报错age = 18;
使用变量时的注意事项
某个变量存储了其他类型的数据
int age = "年龄"; //错误 不兼容的类型: java.lang.String无法转换为int
变量的有效范围是从定义开始到“}”截止,同一个范围内部不能定义2个同名的变量。所谓的有效范围是:变量从内存开辟到内存释放过程
int age = 18;// double age = 18.8; 错误 : 已在方法 main(java.lang.String[])中定义了变量 age
变量定义的时候可以没有初始值,但是使用的时候必须给初始值
int age;// System.out.println(age); 错误:可能尚未初始化变量age
定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围
// long age = 1545454546654; 错误: 过大的整数: 1545454546654long age = 1545454546654L;
定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容
// float f = 3.14; 错误:不兼容的类型: 从double转换到float可能会有损失float f = 3.14F;
变量存在访问范围,超过范围会报错
{int age = 15;System.out.println(age);}// System.out.println(age); 错误:java: 找不到符号
方法体当中的代码遵循自上而下的顺序依次逐行执行,变量先访问,再声明肯定是不行的
public static void main(String[] args) {// System.out.println(myAge); 错误 java: 找不到符号int myAge = 15;}
示例:定义所有基本数据类型的变量和字符串变量并输出
public class Demo05Variable {public static void main(String[] args) {// 定义字节型变量byte b = 100;System.out.println(b);// 定义短整型变量short s = 1000;System.out.println(s);// 定义整型变量int i = 123456;System.out.println(i);// 定义长整型变量long l = 12345678900L;System.out.println(l);// 定义单精度浮点型变量float f = 5.5F;System.out.println(f);// 定义双精度浮点型变量double d = 8.5;System.out.println(d);// 定义布尔型变量boolean b1 = false;System.out.println(b1);// 定义字符型变量char c = 'A';System.out.println(c);// 定义字符串变量String s1 = "HelloWorld";System.out.println(s1);}
}