数据类型初阶
Java 定义了基本数据类型、引用数据类型和自定义数据类型。 8种基本数据类型和引用数据类型种String。
Java语言不能直接处理和控制寄存器。
Java语言处理的是栈空间和堆空间。
Java虚拟机为每一个运行在内存中的Java程序都分配相应的栈空间和堆空间。
栈空间:
栈空间存储效率高 仅次于寄存器,栈中的数据是按“先进后出” 的方式管理。
栈控件存储空间较小,不能存放大量的数据。
JVM将基本类型的数据存放在栈空间。
堆空间:
存取数据的效率很低。
数据存放的位置随机分配。
堆空间存储数据的空间大,能存放大容量的数据。
基本数据类型
类型 | 占用空间 | 取值范围 |
byte(字节型) | 1字节 | -128~127(2^7=128) |
short(短整型) | 2字节 | -2^16~2^16-1(65536~65535) |
int(整型) | 4字节 | -2^31~2^31-1(2147483648~2147483647) |
long(长整型) | 8字节 | -9223372036854776000~9223372036854776000(-2^63~2^63-1) |
float(单精度) | 4字节 | -3.4028235*10^38~3.4028235*10^38-1 |
double(双精度) | 8字节 | -1.797693*10^308-1~1.79769313*10^308 |
char(字符型) | 2字节 | 0~62235(2^16-1) |
boolean(布尔型) | 1或4字节 | false、true |
1字节=8bit:Byte.SIZE=8 bit
short(短整型):Short.SIZE=16 bit
int(整型):Integer.SIZE=32 bit
long(长整型):Long.SIZE=64 bit
float(单精度):Float.SIZE=32 bit
double(双精度):Double.SIZE = 64 bit
char(字符型):Char.SIZE= 8 bit
为什么定义和使用变量
1、定义变量:
变量:就是程序运行过程中值可以改变的量。([访问修饰符] 数据类型 变量名 [=初始值])
常量:就是程序运行过程中值不可以改变的量。([访问修饰符] final 数据类型 常量名称 = 值)
常量名称必须大写、有关键字final、先声明后使用、可声明时赋值或使用前任何时间赋值、只能赋值一次。
全局常量可以不手动赋值,系统会初始化这些全局常量的值。局部常量必须赋值,否则使用时编译报错。
字面量:Java的变量和常量中存放的具体的数据成为字面量。
整型字面量:1、2、3、4、5
字符串字面量:"a"、"b"、"c"、"张三"、"李四"
2、使用变量:
计算机的高级语言普遍使用变量来管理内存中的存储数据。
高级语言不使用内存地址来表示存储数据(如果用内存地址来表示存储数据,非常抽象,难以理解),要用变量名来表示存储数据,变量名和内存中的地址对应。
.变量管理基本数据类型:
.变量管理引用类型的数据
变量的命名、定义和初始化
1、首字母是英文字母、$或下划线,由字母、数字、下划线组成;
2、变量的命名遵循见名知义的原则。
3、Java 变量名建议不用中文
4、变量名首字母建议不用大写字母。(类名、接口名用大写字母开头)
5、用驼峰命名法命名多个单词组成的变量名(例如:sumScore)
6、变量命名不用使用Java关键字
.每个变量必须属于一种数据类型
byte score;//保存单科分数
short age;//保存年龄
int sumScore;//保存总分
long fileSize;//保存文件长度
float x,y;//单精度浮点类型,用来表示屏幕上一个点的活动坐标。
double result;//保存浮点类型运算的结果
char sex;//保存性别
boolean isContinue;//表示是否继续
String name; //表示人的姓名
.变量的初始化
变量定义以后要赋值(即变量的初始化),
等号(=)右边的数据存储到左边变量的内存占用中,
等号右边的数据可以是数据,也可以是运算,
age=23;
score=70+5;
i=10/5;
result=Math.pow(2,5)+3.5;
sex='男';
isContinue=true;
name=“张”+“飞’;
用变量简化计算
class Untitled {
public static void main(String[] args) {
System.out.println(Math.round(10*(Math.sqrt(20)+Math.sqrt(10))/(Math.sqrt(20)-Math.sqrt(10))));
}
}
优化后的编码:
class Untitled {
public static void main(String[] args) {
double sqrt20=Math.sqrt(20);//将20的平方根保存在sqrt20中
double sqrt10=Math.sqrt(10);//将10的平方根保存在sqrt10中
double result=(sqrt20+sqrt10)/(sqrt20-sqrt10);
result=Math.round(result*10)/10.0;
System.out.println(result);
}
}